Tegye okosabbá Vim-jét a Ctrlp és a Ctags használatával

Nagyon szeretem a Vim-et, és évről évre minden kódoláshoz és íráshoz használom a Vim-et. Bár többen vannak, főleg azok számára, akik JavaScript-sel dolgoznak, inkább a modern kódszerkesztők, mint például a Sublime Text vagy a VSCode, inkább egy kis időt töltenék azzal, hogy intelligensebbé tegyem a játékomat.

CtrlP

Ha Sublime Text, Atom vagy VSCode srác vagy, akkor ctrl + ptöbb ezerszer kell használnod a termelékenység javításához. Nos, ne légy féltékeny, ha Vim fickó vagy, mert ez a divatos Vim plugin CtrlP mindent megad neked.

A telepítéshez és a telepítéshez ellenőrizze ezt a hivatalos dokumentumot.

Ctags

A Ctags egy olyan eszköz, amely szitálja a kódot, az indexelési módszereket, az osztályokat, a változókat és más azonosítókat, tárolva az indexet egy címkefájlban. A címkefájl soronként egyetlen címkét tartalmaz. A parancssori argumentumoktól és a nyelvtől, amely ellen a ctags fut, sok információ nyerhető ebből az indexből.

A Ctags jelenleg 41 programozási nyelvet támogat, és viszonylag könnyű definíciókat hozzáadni a többihez.

A Ctags sokkal könnyebben navigál egy nagyobb projektben, különösen, ha a kód, amellyel dolgozik, nem ismert. Ha nem biztos abban, hogy egy módszer mit csinál, vagy hogyan kellene ezt nevezni, akkor folytathatja a definícióját. Ha egy 500+ soros Perl-szkript lefelé irányuló spiráljában van, és szeretné tudni, hol határoztak meg egy változót három órája, akkor rögtön vissza is ugorhat hozzá. És utána rögtön visszaugrhat oda, ahol dolgozott.

Telepítheti a Ctag-okat a Homebrew használatával az OSX-ben:

brew install ctags

Felhívjuk figyelmét, hogy az OS X egy Ctags futtatható fájlt tartalmaz, de nem túl gazdag-Ctags, és hiányzik a legtöbb hasznos funkció. Ha olyan hibát lát, mint Invalid Parameteramikor fut ctags, akkor ez azt jelenti, hogy a rendszer nem azt használja, amelyet a Homebrew-val telepített. Ennek megoldásához:

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

Amikor az indexelni kívánt könyvtárban ül, csak futtassa:

ctags -R.

A Ctags rekurzív módon járja végig a könyvtárat, címkézve az összes forrásfájlt, amellyel találkozik. Nagyon nagy projekteknél ez eltarthat egy ideig, de általában elég gyors.

Szüksége lehet még egy extra konfigurációra a Ctags számára, az alábbiakban a Használom ~/.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.*

Így néz ki, hogyan fog működni a funkció meghatározása:

A Ctrlp segítségével fájlok helyett címkéket is kereshet. Ehhez először fel kell térképeznie egy parancsikont a következőbe .vimrc:

nnoremap . :CtrlPTag

Így működik:

Remélem ez segít :)

Írok kódot hanghoz és internethez, és gitározok a YouTube-on. Ha többet szeretne látni tőlem, vagy többet szeretne megtudni rólam, mindig megtalálhatja:

Weboldal:

//haochuan.io/

GitHub:

//github.com/haochuan

Közepes:

//medium.com/@haochuan

YouTube: //www.youtube.com/channel/UCNESazgvF_NtDAOJrJMNw0g