Рубрики
Без рубрики

Сделайте ваш Vim Smarter, используя Ctrlp и CTAGS

_haochuan сделать ваш Vim Smarter, используя Ctrlp и CTAGSI абсолютно Love Vim, и я использую Vim для всего моего кодирования и письма из года в год. Хотя больше людей больше людей, особенно для тех, кто работает с JavaScript, предпочитает современные редакторы кода, такие как Sublime Text или VSCode, I’

Автор оригинала: FreeCodeCamp Community Member.

_haochuan

Я абсолютно люблю Vim, и я использую VIM для всего моего кодирования и письма из года в год. Хотя больше людей, особенно для тех, кто работает с JavaScript, предпочитает современные редакторы кода, такие как Sublime Text или VSCode, я бы предпочел бы потратить немного времени, пытаясь сделать мою игрушку более умным.

Ctrlp.

Если вы являетесь возвышенным текстом, атом или VSCode парень, вы должны использовать Ctrl + P тысячи раз, чтобы повысить производительность. Ну, не ревнив, если вы VIM-парень, потому что этот модный плагин Vim Ctrlp даст вам все, что вам нужно. Проверьте это Официальный док Для установки и настройки.

CTAGS

CTAGS – это инструмент, который просеивает ваш код, методы индексации, классы, переменные и другие идентификаторы, сохраняя индекс в файле тегов. Файл тегов содержит один тег на строку. В зависимости от аргументов командной строки и языковым CTAGS работает против, большая информация может быть получена из этого индекса.

CTAGS в настоящее время поддерживает 41 Языки программирования И относительно легко добавлять определения для большего количества.

CTAGS упрощает навигацию на более крупном проекте, особенно если код, с которым вы работаете, является незнакомым. Если вы не уверены, какой метод делает или как он должен вызывать, вы можете прыгать прямо к его определению. Если вы находитесь в спирали с нисходящей спиралью Perl Perl Perl и хотите знать, где переменная была определена три часа назад, вы можете спрыгнуть прямо к нему. И после этого вы можете прыгнуть прямо туда, где вы работали.

Вы можете установить CTAGS, используя домой в OSX:

brew install ctags

Обратите внимание, что OS X поставляется с исполняемым CTAGS, но он не является излишним CTAGS и отсутствует большинство полезных функций. Если вы видите ошибку, как Неверный параметр . Когда вы запустите CTAGS , это означает, что система не использует тот, который вы установлены с домом. Решить это:

$ alias ctags="`brew --prefix`/bin/ctags"

Когда вы сидите в каталоге, который вы хотите индексировать, просто запустите:

ctags -R.

CTAGS проведет рекурсивно каталог, помечая все исходные файлы, которые он сталкивается. Для очень крупных проектов это может занять некоторое время, но обычно это довольно быстро.

Вам также может понадобиться дополнительную конфигурацию для CTAGS, ниже это ~/.CTAGS. Я использую:

--langmap=javascript:.js.es6.es.jsx--javascript-kinds=-c-f-m-p-v
--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([A-Za-z0-9_$]+)[ \t]*=[ \t]*\[/\2/A,Array,Arrays/
--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([A-Z][A-Za-z0-9_$]+)[ \t]*=[ \t]*function/\2/C,Class,Classes/--regex-javascript=/^[ \t]*class[ \t]+([A-Za-z0-9_$]+)/\1/C,Class,Classes/
--regex-javascript=/^[ \t]*export[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\3/E,Export,Exports/--regex-javascript=/^[ \t]*export[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\5/E,export,Exports/--regex-javascript=/^[ \t]*export[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\7/E,Export,Exports/--regex-javascript=/^[ \t]*export[ \t]?(var|let|const)[ \t]+([A_Za-z0-9_$]+)/\2/E,Export,Exports/--regex-javascript=/^[ \t]*export[ \t]?(var|let|const)[ \t]+([A_Za-z0-9_$]+)[ \t]*[^,]+,[ \t]*([A_Za-z0-9_$]+)/\3/E,Export,Exports/--regex-javascript=/^[ \t]*export[ \t]?(var|let|const)[ \t]+([A_Za-z0-9_$]+)[ \t]*[^,]+,[ \t]*([A_Za-z0-9_$]+)[ \t]*[^,]+,[ \t]*([A_Za-z0-9_$]+)/\4/E,Export,Exports/
--regex-javascript=/^[ \t]*function[ \t]*([A-Za-z0-9_$]+)[ \t\(]/\1/F,Function,Functions/--regex-javascript=/^[ \t]*[\(]function[ \t]*([A-Za-z0-9_$]+)[ \t\(]/\1/F,Function,Functions/--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([a-z][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[^\*][^\*]/\2/F,Function,Functions/--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([a-z][A-Za-z0-9_$]+)[ \t]*=[ \t]*\([^\*]/\2/F,Function,Functions/
--regex-javascript=/^[ \t]*function[ \t]*\*[ \t]*([A-Za-z0-9_$]+)/\1/G,Generator,Generators/--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([a-z][A-Za-z0-9_$]+)[ \t]*=[ \t]*function([ \t]*\*)/\2/G,Generator,Genrators/--regex-javascript=/^[ \t]*(\*[ \t])([A-Za-z0-9_$]+)[ \t]*\(.*\)[ \t]*{/\2/G,Generator,Generators/
--regex-javascript=/^[ \t]*import[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\3/I,Import,Imports/--regex-javascript=/^[ \t]*import[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\5/I,Import,Imports/--regex-javascript=/^[ \t]*import[ \t]?({[ \t]*)*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])*([A-Za-z0-9_]+),[ \t]*([A-Za-z0-9_\*]*[ \t]as[ \t])([A-Za-z0-9_]+)/\7/I,Import,Imports/
--regex-javascript=/^[ \t]*this\.([A-Za-z0-9_$]+)[ \t]*=.*{$/\1/M,Method,Methods/--regex-javascript=/^[ \t]*([A-Za-z0-9_$]+)[ \t]*[:=][ \t]*[\(]*function[ \t]*\(/\1/M,Method,Methods/--regex-javascript=/^[ \t]*static[ \t]+([A-Za-z0-9_$]+)[ \t]*\(/\1/M,Method,Methods/--regex-javascript=/^[ \t]*([A-Za-z0-9_$]+)\(.*\)[ \t]*{/\1/M,Method,Methods/
--regex-javascript=/^[ \t]*(this\.)*([A-Za-z0-9_$]+)[ \t]*[:=].*[,;]*[^{]$/\2/P,Property,Properties/
--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([A-Za-z0-9_$]+)[ \t]*=[ \t]*{/\2/O,Object,Objects/
--regex-javascript=/\/\/[ \t]*(FIXME|TODO|BUG|NOBUG|\?\?\?|\!\!\!|HACK|XXX)[ \t]*\:*(.*)/\1/T,Tag,Tags/
--regex-javascript=/^[ \t]*(var|let|const)[ \t]+([A-Za-z0-9_$]+)[ \t]*=[ \t]*[^\[{]*;$/\2/V,Variable,Variables/
--exclude=min--exclude=vendor--exclude=\*.min.\*--exclude=\*.map--exclude=\*.swp--exclude=\*.bak--exclude=tags--exclude=node_modules--exclude=bower_components--exclude=test--exclude=__test__--exclude=build--exclude=dist--exclude=*.bundle.*

Вот как это выглядит как идет к определению функции:

Также вы можете использовать Ctrlp для поиска тегов вместо файлов. Для этого сначала нужно сопоставить ярлык в вашем .vimrc. :

nnoremap . :CtrlPTag

Вот как это работает:

Надеюсь, это поможет:)

Я пишу код для аудио и веб и играть на гитаре на YouTube. Если вы хотите увидеть больше материала от меня или узнать больше обо мне, вы всегда можете найти меня в:

Веб-сайт: https://haochuan.io/

Github: https://github.com/haochuan.

Среда: https://medium.com/@haochuan.

YouTube: https://www.youtube.com/channel/ucnesazgvf_ntdaojrjmnw0g.

Оригинал: “https://www.freecodecamp.org/news/make-your-vim-smarter-using-ctrlp-and-ctags-846fc12178a4/”