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 genere C:\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 directory
    
  • Su 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/vimrc
    
  • Su 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/.vimrc
    
  • Su 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_variable
    
  • utilizzando :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.
  • :map e :map! sono troppo generici Usa :n[nore]map per i mapping in modalità normale,: :i[nore]map per la modalità di inserimento :x[nore]map per 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.vim potremmo definire foo#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 utilizzare a:000 (elenco di tutti i parametri) o a:0 (numero di parametri uguale a len(a:000) ), a:1 prima 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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow