de _haochuan

Faceți-vă Vim mai inteligent folosind Ctrlp și Ctags

Îmi place absolut Vim și îl folosesc pentru toate codările și scrierile mele de la an la an. Deși mai mulți sunt mai mulți oameni, mai ales pentru cei care lucrează cu JavaScript, preferă editori de cod moderni precum Sublime Text sau VSCode, aș prefera să petrec puțin timp încercând să-mi fac jucăria mai inteligentă.

CtrlP

Dacă sunteți un tip Sublim Text, Atom sau VSCode, trebuie să utilizați ctrl + p de mii de ori pentru a îmbunătăți productivitatea. Ei bine, nu fiți geloși dacă sunteți un tip Vim, deoarece acest plugin fantezist Vim CtrlP vă va oferi tot ce aveți nevoie.
Verifica acest lucru doc. oficial pentru instalare și configurare.

Faceti va Vim mai inteligent folosind Ctrlp si Ctags

Etichete

Ctags este un instrument care va trece prin codul dvs., metodele de indexare, clasele, variabilele și alți identificatori, stocând indexul într-un fișier de etichete. Fișierul etichete conține o singură etichetă pe fiecare rând. În funcție de argumentele din linia de comandă și de limbajele ctag-uri, se pot obține multe informații din acest index.

Ctags acceptă în prezent 41 de limbaje de programareși este relativ ușor să adăugați definiții pentru mai multe.

Ctags facilitează navigarea într-un proiect mai mare, mai ales dacă codul cu care lucrați este necunoscut. Dacă nu sunteți sigur de ceea ce face o metodă sau cum ar trebui să fie numită, puteți să treceți direct la definiția acesteia. Dacă vă aflați în spirala descendentă a unui script Perl de peste 500 de linii și doriți să știți unde a fost definită o variabilă acum trei ore, puteți să vă întoarceți imediat. Și după aceea, puteți sări înapoi la locul în care lucrați.

ad-banner

Puteți instala Ctags folosind Homebrew în OSX:

brew install ctags

Rețineți că OS X vine cu un executabil Ctags, dar nu este exuberant-Ctags și lipsește majoritatea caracteristicilor utile. Dacă vedeți o eroare de genul Invalid Parameter când alergi ctags, înseamnă că sistemul nu îl folosește pe cel pe care l-ați instalat cu Homebrew. Pentru a rezolva acest lucru:

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

Când stați în directorul pe care doriți să-l indexați, rulați:

ctags -R.

Etichetele vor parcurge recursiv directorul, etichetând toate fișierele sursă pe care le întâlnește. Pentru proiecte foarte mari, ar putea dura ceva timp, dar în mod normal este destul de rapid.

Este posibil să aveți nevoie și de o configurare suplimentară pentru Ctags, mai jos este ~/.ctags Eu folosesc:

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

Iată cum pare să funcționeze definiția:

1611645306 569 Faceti va Vim mai inteligent folosind Ctrlp si Ctags

De asemenea, puteți utiliza Ctrlp pentru a căuta etichete în loc de fișiere. Pentru a face acest lucru, mai întâi trebuie să mapați o comandă rapidă în .vimrc:

nnoremap <leader>. :CtrlPTag<cr>

Iată cum funcționează:

1611645306 176 Faceti va Vim mai inteligent folosind Ctrlp si Ctags

Sper ca ajuta 🙂

Scriu cod pentru audio și web și cânt la chitară pe YouTube. Dacă doriți să vedeți mai multe lucruri de la mine sau să aflați mai multe despre mine, mă puteți găsi întotdeauna în:

Site web:
https://haochuan.io/

GitHub:
https://github.com/haochuan

Mediu:
https://medium.com/@haochuan

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