Muutke oma Vim targemaks, kasutades Ctrlp ja Ctags

Ma armastan Vimi absoluutselt ja kasutan Vimi kogu oma kodeerimise ja kirjutamise jaoks aastast aastasse. Kuigi rohkem on inimesi, eriti nende jaoks, kes töötavad JavaScripti kasutamisel, eelistavad moodsad koodiredaktorid, näiteks Sublime Text või VSCode, veedaksin pigem natuke aega, et oma mänguasja intelligentsemaks muuta.

CtrlP

Kui olete üleva teksti, Atomi või VSCode'i tüüp, peate ctrl + ptootlikkuse parandamiseks kasutama tuhandeid kordi. Noh, ära ole kade, kui oled Vimi tüüp, sest see uhke Vimi pistikprogramm CtrlP annab sulle kõik, mida vaja.

Installimise ja seadistamise jaoks kontrollige seda ametlikku dokumenti.

Ctagid

Ctags on tööriist, mis sirvib teie koodi, indekseerimismeetodeid, klasse, muutujaid ja muid identifikaatoreid, salvestades indeksit sildifaili. Sildifail sisaldab ühte silti ühes reas. Sõltuvalt käsurea argumentidest ja keelest, millesse ctagid käivitatakse, saab sellest registrist palju teavet.

Ctags toetab praegu 41 programmeerimiskeelt ja määratluste lisamine on suhteliselt lihtne.

Ctagid hõlbustavad suuremas projektis navigeerimist, eriti kui kood, millega töötate, pole tuttav. Kui te pole kindel, mida meetod teeb või kuidas seda peaks kutsuma, võite minna selle definitsiooni juurde. Kui olete 500+ rea pikkuse Perli skripti allakäiguspiraalil ja soovite teada, kus muutuja kolm tundi tagasi määratleti, saate selle juurde tagasi hüpata. Ja pärast saate hüpata kohe sinna, kus te töötasite.

Ctagsi saate installida OSX-is Homebrew abil:

brew install ctags

Pange tähele, et OS X-ga on kaasas käivitatav Ctags-fail, kuid see pole üleküllane-Ctags ja sellel puuduvad enamik kasulikke funktsioone. Kui näete sellist viga nagu Invalid Parameterkäivitamisel ctags, tähendab see, et süsteem ei kasuta Homebrew'iga installitud viga . Selle lahendamiseks tehke järgmist.

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

Kui istute kataloogis, mida soovite indekseerida, käivitage lihtsalt:

ctags -R.

Ctagid läbivad kataloogi rekursiivselt, sildistades kõik kohatud lähtefailid. Väga suurte projektide jaoks võib see aega võtta, kuid tavaliselt on see üsna kiire.

Samuti võite vajada Ctagide jaoks täiendavat konfiguratsiooni, allpool on ~/.ctagsminu kasutatav:

--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.*

Funktsiooni määratluse välja nägemine näeb välja järgmine:

Samuti saate failide asemel siltide otsimiseks kasutada klahvi Ctrlp. Selleks peate kõigepealt kaardistama oma otsetee .vimrc:

nnoremap . :CtrlPTag

See toimib järgmiselt.

Loodan, et see aitab :)

Kirjutan koodi heli ja veebi jaoks ning mängin YouTube'is kitarri. Kui soovite minult rohkem asju näha või minu kohta rohkem teada saada, leiate mind alati:

Veebisait:

//haochuan.io/

GitHub:

//github.com/haochuan

Keskmine:

//medium.com/@haochuan

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