Ctags: λ²”μš© ctagsλŠ” νŠΉμ • νŒŒμΌμ— 잘λͺ»λœ 'utf-8' 문자λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 07μ›” 30일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: universal-ctags/ctags

(
μ €ν¬μ—κ²Œ 연락해 μ€˜μ„œ κ³ λ§ˆμ›Œμš”.

ꡬ문 뢄석 좜λ ₯ 문제λ₯Ό λ³΄κ³ ν•˜λŠ” 경우 λ‹€μŒμ„ μž‘μ„±ν•˜μ‹­μ‹œμ˜€.
λ‹€μŒ ν…œν”Œλ¦Ώ. μ‚¬μš©μž 지정 CTag ꡬ성은
결과에 영ν–₯을 미치렀면 항상 --options=NONE λ₯Ό 첫 번째둜 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.
ctags μ‹€ν–‰ν•  λ•Œ μ˜΅μ…˜.

그렇지 μ•ŠμœΌλ©΄ ν…œν”Œλ¦Ώμ„ μ‚­μ œν•˜κ³  문제λ₯Ό μ²˜μŒλΆ€ν„° μž‘μ„±ν•˜μ‹­μ‹œμ˜€.
μ˜ˆμ œλŠ” κ°œλ°œμžκ°€ 문제λ₯Ό 더 잘 μ΄ν•΄ν•˜λŠ” 데 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

GitHub μ›Ή μΈν„°νŽ˜μ΄μŠ€ 및 λ§ˆν¬λ‹€μš΄ ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
메일 κ²°κ³Ό 깨진 ν…μŠ€νŠΈ λ Œλ”λ§μ„ μ‚¬μš©ν•˜λ©΄
κ°œλ°œμžλ“€μ€ λ―Έμ³€λ‹€.
)


νŒŒμ„œμ˜ 이름:

ctagsλ₯Ό μ‹€ν–‰ν•˜λŠ” 데 μ‚¬μš©ν•œ λͺ…령쀄:

$ ctags -R

.ctags λ˜λŠ” λ‹€λ₯Έ κ³³μ—λŠ” νŠΉλ³„ν•œ ꡬ성이 μ—†μŠ΅λ‹ˆλ‹€. 이 ν…ŒμŠ€νŠΈκ°€ μ‹€ν–‰λœ μƒˆ VMμž…λ‹ˆλ‹€.

μž…λ ₯ 파일 λ‚΄μš©: https://github.com/pallets/jinja/blob/master/jinja2/_identifier.py

κ·€ν•˜κ°€ λ§Œμ‘±ν•˜μ§€ λͺ»ν•˜λŠ” νƒœκ·Έ 좜λ ₯:

Universal-ctags λŠ” νŠΉμ • μƒν™©μ—μ„œ 잘λͺ»λœ utf-8 문자λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€.

μ˜ˆμƒν•˜λŠ” νƒœκ·Έ 좜λ ₯:

λͺ¨λ“  μœ νš¨ν•œ utf-8 λ¬Έμžκ°€ ν¬ν•¨λœ νƒœκ·Έ 좜λ ₯이 μ˜ˆμƒλ©λ‹ˆλ‹€.

ctags 버전:

$ ctags --version
Universal Ctags 0.0.0(3522685), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: July 27 1018, 23:16:36
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath

ctags λ°”μ΄λ„ˆλ¦¬λ₯Ό μ–»λŠ” 방법:

(
ctags λͺ…λ Ήμ˜ λ°”μ΄λ„ˆλ¦¬μ— λ‚΄μž₯λ˜μ–΄ ubuntu-16.04 λ“± ν•„μš”ν•œ 라이브러리 μ„€μΉ˜ μ΄μ™Έμ˜ μˆ˜μ •μ„ VM automate , autoreconf 컴파일 ctags μ»΄νŒŒμΌν•˜κ³  ν•„μš”ν•œ 라이브러리λ₯Ό vim 기반 https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source#a-for-a-debian-like-linux-distribution-like-ubuntu-type
)

@lilydjwg λŠ” νƒœκ·Έλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” νŒŒμΌμ— μœ νš¨ν•œ utf-8 λ¬Έμžκ°€ λͺ¨λ‘ μžˆμŒμ—λ„ ctags 이 잘λͺ»λœ utf-8 문자λ₯Ό μ‚½μž…ν•˜κ³  μžˆλ‹€κ³  μ§€μ ν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/vim/vim/issues/3213#issuecomment -406961075

ctags 의 컴파일된 버전은 일반적으둜 ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

μ΅œκ·Όμ— ctags 에 버그가 μžˆλ‹€λŠ” 사싀을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Ubuntuμ—μ„œ sudo apt-get install ctags μ„€μΉ˜ν•œ κΈ°μ‘΄ Execuberant ctags
16.04λŠ” 잘λͺ»λœ utf-8 문자λ₯Ό μ‚½μž…ν•˜μ§€ μ•Šμ§€λ§Œ μ»΄νŒŒμΌν•˜λ©΄
Universal-ctags μ†ŒμŠ€μ—μ„œ κ°€μ Έμ˜€κ³  여기에 μžˆλŠ” 지침에 따라 μ„€μΉ˜ν•©λ‹ˆλ‹€.
https://github.com/universal-ctags/ctags/blob/master/docs/autotools.rst ,
잘λͺ»λœ utf-8 문자λ₯Ό μ‚½μž…ν•©λ‹ˆλ‹€. μ¦κ±°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

sudo apt-get install ctags 만 μ‚¬μš©ν•˜μ—¬ exuberant-ctags μ„€μΉ˜:

2018-07-29_19-03-44

이 κ²Œμ‹œλ¬Ό ν˜„μž¬ μ†ŒμŠ€(μ΅œμ‹  컀밋)μ—μ„œ 컴파일된 Universal-ctags 둜,
μ—¬κΈ°μ˜ μ§€μΉ¨μœΌλ‘œ 컴파일:
https://github.com/universal-ctags/ctags/blob/master/docs/autotools.rst :

2018-07-29_19-10-22

잘λͺ»λœ utf-8 λ¬Έμžκ°€ 있으면 vimμ—μ„œ λ§Žμ€ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.
vim.eval , vim.eval 되고 이둜 인해 νƒœκ·Έκ°€ λ°˜ν™˜λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λͺ¨λ‘. ν˜„μž¬ viml ν¬ν•¨λœ 데이터λ₯Ό μ „μ†‘ν•˜λŠ” 방법은 ν•œ κ°€μ§€λΏμž…λ‹ˆλ‹€.
vim.eval μ‚¬μš©ν•˜μ—¬ python-name 곡간에 λ³€μˆ˜λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€λ₯Έ ν”ŒλŸ¬κ·ΈμΈμ€
vim λ˜λŠ” λ‹€λ₯Έ κ³³μ—μ„œλ„ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. @ludovicchabant
example은 μ΄λŸ¬ν•œ 문제λ₯Ό μ€‘μ§€ν•˜κΈ° μœ„ν•΄ νƒœκ·Έ νŒŒμΌμ„ 사후 μ²˜λ¦¬ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.
https://ludovic.chabant.com/devblog/2017/02/25/aaa-gamedev-with-vim/

λ˜ν•œ κ·ΈλŠ” 이 문제λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄ ctrl-py-matcher 을 λ³€κ²½ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/ludovicchabant/ctrlp-py-matcher/blob/2f6947480203b734b069e5d9f69ba440db6b4698/autoload/pymatcher.py#L22

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆλŠ” λ‹€λ₯Έ 파일이 μ—¬λŸ¬ 개 μžˆμ§€λ§Œ μ €λŠ”
문제λ₯Ό 쒁히기 μœ„ν•΄ 여기에 ν•˜λ‚˜λ₯Ό μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ 생각에 이것은 버그이며 ctags κ°€ λ‹€μŒκ³Ό 같이 ν•  것이라고 κΈ°λŒ€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
섀계. 이것은 Exuberant Ctagsμ—μ„œ 잘 μž‘λ™ν•˜λŠ” 데 μ‚¬μš©λ˜μ—ˆμœΌλ―€λ‘œ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?
Universal-ctagsλŠ” 무엇을 기반으둜 ν•©λ‹ˆκΉŒ?

μ°Έμ‘°: https://github.com/vim/vim/issues/3213#issuecomment -408727629

λͺ¨λ“  7 λŒ“κΈ€

λ‚˜μ—κ²Œ #1275처럼 λ“€λ¦½λ‹ˆλ‹€. μƒˆλ‘œμš΄ pattern-length-limit μ˜΅μ…˜μ€ 문자 μ‹œν€€μŠ€μ˜ 쀑간에 μžˆλŠ” μž„μ˜μ˜ λ°”μ΄νŠΈ μœ„μΉ˜μ—μ„œ μ ˆλ‹¨λ©λ‹ˆλ‹€. #163, #640 및 #1018을 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

https://github.com/universal-ctags/ctags/issues/1275#issuecomment -274489859와 같은 것이 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ΅¬ν˜„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

@alphaCTzo7G #1807 μ°Έμ‘°, μ œλŒ€λ‘œ μˆ˜μ •λ˜λ‚˜μš”?

@b4n , λΉ λ₯Έ λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€...

여기에 κ²Œμ‹œν•œ 파일 _identifier.py μ—μ„œ #1805 컀밋을 μ‚¬μš©ν•˜μ—¬ ctags λŠ” 더 이상 μž„μ˜μ˜ μœ„μΉ˜μ— 잘λͺ»λœ 문자/컷을 μ‚½μž…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•žμœΌλ‘œ λ©°μΉ  λ™μ•ˆ μ‹€μ œ μ‹œμŠ€ν…œμ—μ„œ 이 PR을 μ‹œλ„ν•˜μ—¬ 전체 λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ μž‘λ™ν•˜λŠ”μ§€ λ˜λŠ” λ‹€λ₯Έ 였λ₯˜κ°€ λ°œμƒν•˜λŠ”μ§€ ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€.

ctrlp 및 ctrlp-py-matcher λŠ” 맀우 μΈκΈ°μžˆλŠ” ν”ŒλŸ¬κ·ΈμΈμ΄λ―€λ‘œ #1807이 λ³‘ν•©λ˜μ–΄ vim 및 기타 ν…μŠ€νŠΈ νŽΈμ§‘κΈ° μ‚¬μš©μžκ°€ ctrlp 및 ctrlp-py-matcher 이 λ¬Έμ œμ— λŒ€ν•΄ κ±±μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

거기에 λ‚΄κ°€ ν•¨κ»˜ 문제λ₯Ό μΌμœΌν‚€λŠ” 발견 λ‹€λ₯Έ νŒŒμΌμ΄μ—ˆλ‹€ vim.eval , 그것은 잘λͺ»λœ 포함 utf-8 의 결정에 따라 문자 grep -axv '.*' misc.html ( misc.html HTTPS에 : / /github.com/alphaCTzo7G/test). λ‚΄κ°€ μ•Œμ•„μ°¨λ¦° 것은 ctags κ°€ 잘λͺ»λœ utf-8 문자λ₯Ό misc.html 의 νƒœκ·Έ νŒŒμΌμ— μ‚½μž…ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

ctags κ°€ νŒŒμΌμ—μ„œ μœ νš¨ν•˜μ§€ μ•Šμ€ 문자λ₯Ό κ°μ§€ν•˜κ³  λŒ€μ‹  @tonymec 이 μ œμ•ˆν•œ 것과 같은 κ²ƒμœΌλ‘œ λŒ€μ²΄ν•˜λŠ” 것이 https://github.com/vim/vim/issues/3213#issuecomment -405211243 ?

IIUC, ctags(Exuberant ctags, 즉, μ‚¬μš© κ°€λŠ₯ν•œ ctags ν”„λ‘œκ·Έλž¨ 쀑 ν•˜λ‚˜μž„)λŠ” Vimκ³Ό λ³„λ„λ‘œ λ°°ν¬λ©λ‹ˆλ‹€.

ctags의 κ΄€μ μ—μ„œ 보면 ν”„λ‘œκ·Έλž¨ ν…μŠ€νŠΈλ₯Ό λ°”μ΄νŠΈ λ¬Έμžμ—΄λ‘œ μ·¨κΈ‰ν•˜λŠ” 것이 ν•©λ‹Ήν•©λ‹ˆλ‹€. UTF-8, Latin1, Latin9 λ˜λŠ” 기타 ISO 8859 charset에 관계없이 곡백은 0x20, ν•˜λ“œ 탭은 0x09, 쀄 λ°”κΏˆμ€ 0x0A μ•žμ— 0x0D 등이 올 수 μžˆμŠ΅λ‹ˆλ‹€. 0x00이 λ˜λŠ” 널 λ°”μ΄νŠΈλŠ” ν…μŠ€νŠΈ νŒŒμΌμ— λ‚˜νƒ€λ‚˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. CtagsλŠ” μž‘μ„±λœ ASCII ν˜Έν™˜ 인코딩에 관계없이 λͺ¨λ“  ν”„λ‘œκ·Έλž¨μ„ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜λ―€λ‘œ μ–΄λŠ 것이 μ–΄λŠ 것인지 μ‹ κ²½ μ“Έ ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. EBCDIC와 같은 일뢀 μ΄μƒν•œ 문자 μ§‘ν•©μ˜ κ²½μš°μ—λ§Œ ν…μŠ€νŠΈλ₯Ό ASCIIκ°€ μ•„λ‹Œ κ²ƒμœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€(EBCDIC, IIRCμ—μ„œ AIλŠ” 0xC1-0xC9, JR은 0xD1-0xD9, SZλŠ” 0xE2-0xE9, 0-9λŠ” 0xF0-0xF9). , 그리고 곡백, νƒ­, 쀄 λ°”κΏˆ, λŒ€μ‹œ, 밑쀄 λ“±μ˜ μ½”λ“œκ°€ 무엇인지 κΈ°μ–΅λ‚˜μ§€ μ•Šμ§€λ§Œ ASCII κ΄€μ μ—μ„œ 보면 정말 μ΄μƒν•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

IMHO, ctag의 경우, 가비지 인, 가비지 μ•„μ›ƒμ΄λΌλŠ” 였래된 원칙이 μ μš©λ©λ‹ˆλ‹€.

μΉœμ• ν•˜λŠ”,
ν† λ‹ˆ.

@tonymec .. 말이 universal-ctags κ°€ κ°€μž₯ 인기 있고 universal-ctags μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€ μ‚¬μ΄μ—μ„œ λ‚΄ μΆ”μΈ‘μœΌλ‘œλŠ” 큰 뢀뢄이 될 κ²ƒμž…λ‹ˆλ‹€. vim μ‚¬μš©μžμž…λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이 두 가지가 μž‘λ™ν•  수 μžˆλŠ”μ§€ μ•„λ‹ˆλ©΄ λΆˆλ²• utf-8 λ¬Έμžκ°€ μžˆλŠ” νŒŒμΌμ„ μ²˜λ¦¬ν•˜λŠ” 방법에 λŒ€ν•œ λ‹€λ₯Έ 아이디어가 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

  1. λ‚˜λŠ” λ˜ν•œ 눈치 ctags 이 μ˜΅μ…˜μ΄ +iconv 의 μ‚¬μš© κ°€λŠ₯, libiconv . iconv λͺ…λ Ήμ€„μ—μ„œ μ‚¬μš©ν•˜λ©΄ 잘λͺ»λœ utf8 문자λ₯Ό μ œκ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ --input-enconding=utf-8 및 --output-encoding=utf-8 λ₯Ό μ „λ‹¬ν•˜λ©΄ λͺ¨λ“  λΆˆλ²• utf-8 λ¬Έμžκ°€ 합법적인 utf-8 문자둜 λ³€κ²½λ˜λŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

이것은 https://media.readthedocs.org/pdf/ctags/latest/ctags.pdf의 μ„Ήμ…˜ 1.3.4에 μ„€λͺ…λ˜μ–΄

Two new options have been introduced (--input-encoding=IN and --output-encoding=OUT). Using the encoding specified with these options ctags converts input from IN to OUT. ctags uses the converted strings when writing the pattern parts of each tag line. As a result the tags output is encoded in OUT encoding. In addition OUT is specified at the top the tags file as the value for the TAG_FILE_ENCODING pseudo tag. The default value of OUT is UTF-8. NOTE: Converted input is NOT passed to language parsers. The parsers still deal with input as a byte sequence. With --input-encoding-<LANG>=IN, you can specify a specific input encoding for LANG. It overrides the global default value given with --input-encoding

  1. λΆˆλ²• utf8 문자λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것은 νŽΈμ§‘κΈ°μ— λ§‘κΈ°μ‹­μ‹œμ˜€. 이 경우 vim.eval λ₯Ό μˆ˜μ •ν•˜κ±°λ‚˜ vim.eval μ „λ‹¬ν•˜κΈ° 전에 잘λͺ»λœ utf-8 문자λ₯Ό ꡬ문 λΆ„μ„ν•˜κ³  μ œκ±°ν•  수 μžˆλŠ” vimL ν•¨μˆ˜κ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€ vim.eval ..

@alphaCTzo7G @tonymec κ³Ό 그의 결둠에 λ™μ˜ν•©λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„, μ μ ˆν•œ 인코딩을 μΈμ‹ν•˜λŠ” 것은 λ§Žμ€ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 그리고 μž…λ ₯이 기술적으둜 μœ νš¨ν•œ 인코딩을 μ°ΎκΈ°κ°€ 쉽기 λ•Œλ¬Έμ— μ μ ˆν•˜λ‹€κ³  μ£Όμž₯ν•©λ‹ˆλ‹€. ν•˜λ‚˜λŠ” κΉŒλ‹€λ‘­κ±°λ‚˜ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ ISO 8859-1κ³Ό 8859-15 사이λ₯Ό μ–΄λ–»κ²Œ ν™•μ‹ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ†”λ£¨μ…˜μ—λŠ” μ‚¬μš© λΉˆλ„ 및 μ»¨ν…μŠ€νŠΈμ— λŒ€ν•œ λ³΅μž‘ν•œ νœ΄λ¦¬μŠ€ν‹±μ΄ ν¬ν•¨λ©λ‹ˆλ‹€. λ˜λŠ” HTMLκ³Ό 같은 일뢀 언어에 μ μš©ν•  수 μžˆλŠ” 보닀 μˆœμ§„ν•œ μ•„μ΄λ””μ–΄λŠ” 파일 λ‚΄λΆ€μ˜ 인코딩 문을 μΆ”μΆœν•˜λŠ” κ²ƒμ΄μ§€λ§Œ, 그것도 μ—­μ‹œ μ˜¬λ°”λ₯΄μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ ctags λŠ” μ—¬κΈ°μ„œ μ–΄λ €μš΄ μœ„μΉ˜μ— μžˆμŠ΅λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ€ μ•„λ‹ˆμ§€λ§Œ λ§Žμ€ μ†ŒλΉ„μžκ°€ 인코딩을 μ²˜λ¦¬ν•˜μ§€ μ•ŠμœΌλ©° μƒμ„±λœ νƒœκ·ΈλŠ” λ°”μ΄νŠΈ μˆ˜μ€€μ—μ„œ μΌμΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νƒœκ·Έ νŒ¨ν„΄μ΄λ‚˜ 이름에 λŒ€ν•œ grepping은 인코딩을 λ³€ν™˜ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ νƒœκ·ΈλŠ” λ°”μ΄νŠΈ μˆ˜μ€€μ—μ„œ 파일과 μΌμΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ μ‹ κ²½ 써야 ν•˜λŠ” 것이 ASCIIμ˜€μ„ λ•ŒλŠ” μ‰¬μ› μ§€λ§Œ 더 이상 운이 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€... UTF-8은 μΆ©λΆ„νžˆ 일찍 μ±„νƒλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
μ΄λŠ” 자리 ν‘œμ‹œμž 문자둜 λŒ€μ²΄ν•˜λŠ” 아이디어에도 μ μš©λ©λ‹ˆλ‹€. μ†ŒλΉ„μžλŠ” λŒ€μ²΄ 문자둜 무엇을 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ΅œμ†Œν•œ νŠΉμ • λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μœ νš¨ν•˜μ§€ μ•Šμ€ UTF-8을 U+FFFD둜 κ΅μ²΄ν•˜κ±°λ‚˜ μ œκ±°ν•˜λŠ” 데 λ§Œμ‘±ν•œλ‹€λ©΄ λ‹¨μˆœνžˆ ctags의 좜λ ₯을 ν›„μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@b4n , κ·€ν•˜μ˜ μ˜κ²¬μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. μ €λŠ” μ‹€μ œλ‘œ utf-8 μΈμ½”λ”©λœ νŒŒμΌμ„ 주둜 μ²˜λ¦¬ν•˜κ³  μ œκ°€ λ§Œλ“  νŒŒμΌμ— λŒ€ν•΄ utf-8 μΈμ½”λ”©ν–ˆμŠ΅λ‹ˆλ‹€. λΆˆν–‰νžˆλ„, 당신이 μ–ΈκΈ‰ν–ˆλ“―μ΄ λ‚˜λŠ” λ•Œλ•Œλ‘œ μž„μ˜μ˜ 인코딩을 κ°–λŠ” κ²½ν–₯이 μžˆλŠ” 라이브러리λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

μ €λŠ” vim-gutentags μ‚¬μš©ν•˜λ©° ν›„μ²˜λ¦¬ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. λ‚΄κ°€ μˆ˜λ™μœΌλ‘œ λͺ¨λ“  νŒŒμΌμ— 결과에 νƒœκ·Έ νŒŒμΌμ„ κ²Œμ‹œ-처리 ν•  수 μžˆμ§€λ§Œ utf-8 λ‚΄κ°€ μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ 문자, post-processing μ—μ„œ κΈ°λŠ₯ vim-gutentags , 그것은 μž‘λ™ν•˜μ§€ μ•Šμ•˜λ‹€ . κ·Έλž˜μ„œ μ’€ 더 κ°•λ ₯ν•œ μ†”λ£¨μ…˜μ„ μ°ΎλŠ”κ²Œ λ‚˜μ„μ§€λ„ λͺ¨λ₯Έλ‹€λŠ” 생각이 λ“€μ—ˆλŠ”λ°..μ—†μœΌλ©΄ λ‹€μ‹œ κ³ λ―Όν•΄λ΄μ•Όκ² λ„€μš”..

파일 인코딩을 κ°μ§€ν•˜λ €λ©΄ λ‹€μŒ μ˜΅μ…˜ 쀑 ν•˜λ‚˜ 뒀에 μžˆλŠ” κΈ°λ³Έ 라이브러리λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. https://stackoverflow.com/questions/805418/how-to-find-encoding-of-a-file-in-unix - 슀크립트λ₯Ό 톡해

enca , file , uchardet , enguess ? 이것듀은 λͺ¨λ‘ λͺ…령쀄 μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ctags λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ–΄λ”˜κ°€μ— μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 제 μƒκ°μ—λŠ” 인코딩 수 λ•Œλ¬Έμ— λ§μ”€ν•˜μ‹  κ²ƒμ²˜λŸΌ 인코딩을 μ™„λ²½ν•˜κ²Œ μ˜ˆμΈ‘ν•˜λŠ” 것은 μ ˆλŒ€ λΆˆκ°€λŠ₯ν•  수 μžˆμ§€λ§Œ λŒ€λΆ€λΆ„μ„ ν¬ν•¨ν•˜λŠ” κ°„λ‹¨ν•œ μ†”λ£¨μ…˜μ€ μ—†λŠ” 것보닀 λ‚˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

--input-encoding (and/or --input-encoding-<LANG>) and --output-encoding options 을 μ‚¬μš©ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. ctags νŒŒμ•…ν•˜μ§€ μ•ŠλŠ” ν•œ νŠΉμ • 파일이 λ™μΌν•œ μ €μž₯μ†Œμ—μ„œ λ‹€λ₯Έ 인코딩을 κ°€μ§ˆ κ°€λŠ₯성이 맀우 λ†’κΈ° λ•Œλ¬Έμ— 항상 μž‘λ™ν• μ§€ μ—¬λΆ€λŠ” ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 인코딩을 κ°œλ³„μ μœΌλ‘œ μˆ˜μ •ν•˜κ³  μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰