(
μ ν¬μκ² μ°λ½ν΄ μ€μ κ³ λ§μμ.
ꡬ문 λΆμ μΆλ ₯ λ¬Έμ λ₯Ό λ³΄κ³ νλ κ²½μ° λ€μμ μμ±νμμμ€.
λ€μ ν
νλ¦Ώ. μ¬μ©μ μ§μ 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
μ€μΉ:
μ΄ κ²μλ¬Ό νμ¬ μμ€(μ΅μ 컀λ°)μμ μ»΄νμΌλ Universal-ctags
λ‘,
μ¬κΈ°μ μ§μΉ¨μΌλ‘ μ»΄νμΌ:
https://github.com/universal-ctags/ctags/blob/master/docs/autotools.rst :
μλͺ»λ 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
λμκ² #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
λ¬Έμκ° μλ νμΌμ μ²λ¦¬νλ λ°©λ²μ λν λ€λ₯Έ μμ΄λμ΄κ° μλμ§ κΆκΈν©λλ€.
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
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
νμ
νμ§ μλ ν νΉμ νμΌμ΄ λμΌν μ μ₯μμμ λ€λ₯Έ μΈμ½λ©μ κ°μ§ κ°λ₯μ±μ΄ λ§€μ° λκΈ° λλ¬Έμ νμ μλν μ§ μ¬λΆλ νμ€νμ§ μμ΅λλ€. μΈμ½λ©μ κ°λ³μ μΌλ‘ μμ νκ³ μνλ νμμΌλ‘ μΆλ ₯ν©λλ€.