vim
Configurazione di Vim
Ricerca…
Il file vimrc
Il file .vimrc (pronunciato Vim-wreck) è un file di configurazione di Vim. Mantiene i comandi che verranno eseguiti da Vim ogni volta che inizia.
Di default il file è vuoto o inesistente; puoi usarlo per personalizzare il tuo ambiente Vim.
Per scoprire dove Vim si aspetta che il file vimrc sia archiviato, apri Vim ed esegui:
:echo $MYVIMRC
Unix: su un sistema Unix come Mac o Linux il tuo vimrc sarà chiamato .vimrc e di solito si troverà nella tua directory home ( $HOME/.vimrc ).
Windows: su Windows sarà chiamato _vimrc e si trova nella directory home ( %HOMEPATH%/_vimrc ).
All'avvio, Vim cercherà in più posti per un file vimrc. Il primo che esiste è usato, gli altri sono ignorati. Per un riferimento completo, consultare l'articolo della documentazione di :h $MYVIMRC .
Quali opzioni posso usare?
Se non sai quali opzioni dovresti usare, potresti essere interessato al comando :options .
Questo aprirà una divisione con tutte le opzioni di Vim elencate e con il loro valore attuale visualizzato. Ci sono 26 sezioni per visualizzare tutte le opzioni che puoi provare.
per esempio
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
Su una riga di valore (ad es. set nowrap ) è possibile premere CR per commutare il valore (se si tratta di un valore binario). Su una linea di opzioni (ad es. wrap long line wrap ritorno a wrap long line wrap ) è possibile premere CR per accedere alla documentazione di questa opzione.
File e directory
Qualunque cosa tu faccia per personalizzare Vim, non dovrebbe MAI accadere al di fuori di $HOME :
- su Linux, BSD e Cygwin,
$HOMEè in genere/home/username/, - su Mac OS X,
$HOMEè/Users/username/, - su Windows,
$HOMEè in genereC:\Users\username\.
La posizione canonica per la tua directory vimrc e la tua directory vim è alla radice della directory $HOME :
su sistemi simil-Unix
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directorySu Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
Il layout sopra è garantito per funzionare, ora e in futuro.
Vim 7.4 ha permesso di mantenere il tuo bel vimrc nella tua directory di vim . È davvero una buona idea, se non altro perché rende più facile spostare la tua configurazione.
Se utilizzi esclusivamente 7.4, quanto segue sarà sufficiente:
su sistemi simil-Unix
$HOME/.vim/vimrcSu Windows
$HOME\vimfiles\vimrc
Se vuoi i vantaggi di un vim/ autonomo vim/ ma usare sia la versione 7.4 che una versione precedente, o solo una versione precedente, la soluzione più semplice e a prova di futuro è quella di mettere questa linea e solo questa linea:
runtime vimrc
in questo file:
su sistemi simil-Unix
$HOME/.vimrcSu Windows
$HOME\_vimrc
e fai la tua configurazione in $HOME/.vim/vimrc o $HOME\vimfiles\vimrc .
Opzioni
Ci sono tre tipi di opzioni:
- opzioni booleane,
- opzioni di stringa,
- numero di opzioni.
Per verificare il valore di un'opzione,
- utilizzare
:set option?per verificare il valore di un'opzione, - utilizzare
:verbose set option?per vedere anche dove era l'ultima volta.
Impostazione delle opzioni booleane
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Impostazione delle opzioni di stringa
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
Impostazione delle opzioni di numero
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Usare un'espressione come valore
utilizzando la concatenazione:
execute "set stroption=" . my_variableutilizzando
:let:let &stroption = my_variable
Vedi :help :set e :help :let .
Mapping
- Non inserire commenti dopo la mappatura, si romperà le cose.
- Usa
:map <F6>per vedere cosa è mappato a<F6>e in quale modalità. - Usa
:verbose map <F6>per vedere anche dove è stata mappata l'ultima volta. -
:mape:map!sono troppo generici Usa:n[nore]mapper i mapping in modalità normale,::i[nore]mapper la modalità di inserimento:x[nore]mapper la modalità visiva, ecc.
Mappature ricorsive
Utilizzare i mapping ricorsivi solo se si intende utilizzare altri mapping nei mapping:
nnoremap b B
nmap <key> db
In questo esempio, b è fatto per funzionare come B in modalità normale. Dato che usiamo b in una mappatura ricorsiva , premendo <key> funzionerà come dB , non come db .
Mappature non ricorsive
Utilizza i mapping non ricorsivi solo se intendi utilizzare i comandi predefiniti nei tuoi mapping, che è quasi sempre quello che desideri:
nnoremap <key> db
In questo esempio, usiamo b in una mappatura non ricorsiva, quindi premendo il tasto funzionerà sempre come db , sia che rimappiamo b oppure no.
Esecuzione di un comando da una mappatura
nnoremap <key> :MyCommand<CR>
Esecuzione di più comandi da una mappatura
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Chiamare una funzione da una mappatura
nnoremap <key> :call SomeFunction()<CR>
Mappatura di una mappatura <Plug>
map <key> <Plug>name_of_mapping
Vedi :help map-commands :help key-notation e :help <plug> .
vedi Key Mappings in Vim per ulteriori letture
variabili
Come la maggior parte dei linguaggi di scripting, vimscript ha variabili.
Si può definire una variabile con il comando: :let :
let variable = value
ed eliminalo con :unlet :
unlet variable
In Vim, le variabili possono essere esaminate anteponendo una singola lettera e due punti al loro nome. Gli autori di plug-in utilizzano questa funzionalità per simulare le opzioni:
let g:plugin_variable = 1
Vedi :help internal-variables .
comandi
- Non dimenticare il botto per consentire a Vim di sovrascrivere quel comando la prossima volta che ricarichi il tuo vimrc.
- I comandi personalizzati devono iniziare con un carattere maiuscolo.
Esempi
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Vedi
:help user-commands.
funzioni
- Non dimenticare il botto per consentire a Vim di sovrascrivere quella funzione la prossima volta che ricarichi lo script in cui è definita la funzione.
- Le funzioni personalizzate devono iniziare con caratteri maiuscoli (funzioni globali) o con
s:(funzioni locali di script) oppure devono essere preceduti dal nome associato al plug-in di caricamento automatico dove sono definiti (ad es. In{&rtp}/autoload/foo/bar.vimpotremmo definirefoo#bar#functionname()). - Per poter utilizzare i parametri nella funzione, utilizzare
a:parameter_name. Le funzioni variabili possono essere definite con i puntini di sospensione..., per accedere ai parametri utilizzarea:000(elenco di tutti i parametri) oa:0(numero di parametri uguale alen(a:000)),a:1prima senza nome parametri e così via. - Le funzioni possono essere chiamate in questo modo
:call MyFunction(param1, param2) - Ogni riga di una funzione inizia implicitamente con a
:quindi tutti i comandi sono comandi di due punti - Per evitare che la funzione continui la sua esecuzione in caso di errore, è meglio annotare la firma della funzione con
abort
Esempio
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Funzioni dello script
Se pensi di utilizzare la tua funzione solo nel file in cui è definita (o perché hai rotto una funzione più grande in parti più piccole, o perché la userai in un comando, una mappatura, ...), puoi prefisso con s: :, evitando di sporcare il tuo namespace globale con funzioni interne inutili:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Usando s: funzioni dalle mappature
Se la funzione locale dello script verrà utilizzata in una mappatura, è necessario fare riferimento utilizzando il prefisso <SID> speciale:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Vedi :help user-functions .
Si noti, tuttavia, che dal Vim 7 è considerata una buona pratica definire abbreviazioni di mapping, comandi e menu nei plugin (ft) e definire funzioni nei plugin di caricamento automatico, ad eccezione delle funzioni che i plugin devono utilizzare al momento del caricamento. Ciò significa che al giorno d'oggi la necessità di richiamare le funzioni locali degli script dalle mappature non è così pertinente come una volta.
Gruppi di autocomando
- I gruppi di autocommand sono validi per l'organizzazione ma possono essere utili anche per il debug. Pensali come piccoli spazi dei nomi che puoi abilitare / disabilitare a piacimento.
Esempio
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
Vedi :help autocommand .
Condizionali
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
Vedi :help has-patch e :help feature-list .
Impostazione delle opzioni
Comunemente useresti :set per impostare le opzioni a tuo piacimento nel tuo .vimrc . Ci sono molte opzioni che possono essere cambiate.
Ad esempio, per utilizzare gli spazi per il rientro:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Evidenziazione della sintassi
Attiva l'evidenziazione della sintassi, quando il terminale ha colori
if &t_Co > 2 || has("gui_running")
syntax on
end
Mostra spazi bianchi e tabulati finali. La visualizzazione delle schede può essere particolarmente utile quando si cercano errori nei Makefile.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Combinazioni di colori
Vim viene fornito con diversi schemi di colori preinstallati. In Linux, le combinazioni di colori fornite con Vim sono memorizzate in /usr/share/vim/vim74/colors/ (dove 74 è il numero della versione, i periodi sans); MacVim li memorizza in /Applications/MacVim.app/Contents/Resources/vim/runtime/colors .
Modifica delle combinazioni di colori
Il comando colorscheme cambia la colorscheme colori corrente.
Ad esempio, per impostare la combinazione di colori su "robokai":
:colorscheme robokai
Lo schema dei colori di default è creativamente nome default , quindi, per tornare esso uso
:colorscheme default
Per visualizzare tutte le combinazioni di colori attualmente installate, digitare :colorscheme seguito da spazio e quindi tab o ctrl d .
Installazione di combinazioni di colori
Le combinazioni di colori installate dall'utente possono essere inserite in ~/.vim/colors/ . Una volta che una colorscheme colori viene aggiunta a questa directory, verrà visualizzata come opzione per il comando colorscheme .
Per trovare nuove combinazioni di colori, ci sono siti come i vimcolors che contengono una varietà di combinazioni di colori. Ci sono anche strumenti come vim.ink e Vivify per aiutarti a creare i tuoi schemi colore, oppure puoi crearli a mano.
Attiva / disattiva l'enumerazione delle righe
Per abilitare - digitare:
:set number o :set nu .
Per disabilitare - digitare:
:set nonumber o :set nonu .
Per abilitare l'enumerazione relativa alla posizione del cursore, digitare:
:set relativenumber .
Per disabilitare l'enumerazione relativa alla posizione del cursore, digitare:
:set norelativenumber .
Nota: per modificare se la riga corrente mostra il numero di linea effettivo o 0 , utilizzare :set number e :set nonumber comandi non :set nonumber mentre l'attributo relativenumber è attivo.
plugin
I plugin Vim sono addon che possono essere usati per cambiare o migliorare la funzionalità di vim.
C'è una buona lista di plugin su vimawesome