Учините Вима паметнијим помоћу Цтрлп и Цтагс

Ја апсолутно волим Вима и користим га за цело кодирање и писање из године у годину. Иако све више људи, посебно оних који раде са ЈаваСцриптом, преферира модерне уређиваче кода попут Сублиме Тект или ВСЦоде, радије бих провео мало времена покушавајући да своју играчку учиним интелигентнијом.

ЦтрлП

Ако сте момак са узвишеним текстом, атомом или ВСЦоде-ом, морате ctrl + pхиљаде пута да побољшате продуктивност. Па, немојте бити љубоморни ако сте Вим момак јер ће вам овај фенси Вим додатак ЦтрлП пружити све што вам треба.

Проверите овај званични документ за инсталацију и подешавање.

Цтагс

Цтагс је алат који ће прегледати ваш код, методе индексирања, класе, променљиве и друге идентификаторе, чувајући индекс у датотеци ознака. Датотека ознака садржи по једну ознаку по реду. У зависности од аргумената командне линије и језика са којим се покрећу цтагови, из овог индекса може се добити пуно информација.

Цтагс тренутно подржава 41 програмски језик и релативно је лако додати дефиниције за више.

Цтагс чини много лакшим кретање кроз већи пројекат, посебно ако је код са којим радите непознат. Ако нисте сигурни шта метода ради или како би требало да се зове, можете прећи директно на њену дефиницију. Ако сте у силазној спирали 500+ редак Перл скрипте и желите да знате где је променљива дефинисана пре три сата, можете одмах да се вратите на њу. А после можете да се вратите тамо где сте радили.

Ознаке можете инсталирати помоћу Хомебрев-а у ОСКС-у:

brew install ctags

Имајте на уму да ОС Кс долази са извршном датотеком Цтагс, али није бујан-Цтагс и недостаје јој већина корисних функција. Ако видите грешку као Invalid Parameterкада покренете ctags, то значи да систем не користи онај који сте инсталирали са Хомебрев-ом. Да бисте ово решили:

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

Када седите у директоријуму који желите да индексирате, само покрените:

ctags -R.

Ознаке ће рекурзивно шетати директоријумом, означавајући све изворне датотеке на које наиђе. За врло велике пројекте то може потрајати, али обично је прилично брзо.

Можда ће вам требати и нека додатна конфигурација за Цтагс, у наставку се налази ~/.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.*

Ево како то изгледа да иде у дефиницију функције:

Такође можете да користите Цтрлп за претрагу ознака уместо датотека. Да бисте то урадили, прво морате мапирати пречицу у .vimrc:

nnoremap . :CtrlPTag

Ево како то функционише:

Надам се да помаже :)

Пишем код за аудио и веб и свирам гитару на ИоуТубе-у. Ако желите да видите више ствари од мене или знате више о мени, увек ме можете пронаћи у:

Веб сајт:

//хаоцхуан.ио/

ГитХуб:

//гитхуб.цом/хаоцхуан

Средње:

//медиум.цом/@хаоцхуан

ИоуТубе: //ввв.иоутубе.цом/цханнел/УЦНЕСазгвФ_НтДАОЈрЈМНв0г