Tasto Tab == 4 spazi e rientro automatico dopo parentesi graffe in Vim
-
04-07-2019 - |
Domanda
Come faccio a vi - Vim non usa mai le tabulazioni (conversione di spazi in tabulazioni, cattivo!), rende il tasto tab == 4 spazi e rientra automaticamente il codice dopo il riccio blocca blocchi come Emacs ?
Inoltre, come posso salvare queste impostazioni in modo da non doverle più inserire?
Ho visto altre domande relative a questo, ma sembra sempre essere un po 'fuori da quello che voglio.
Soluzione
Come è stato sottolineato in un paio di risposte di seguito, il metodo preferito ora NON è utilizzare smartindent, ma invece utilizzare quanto segue (nel vimrc ):.
filetype plugin indent on
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
Nel tuo .vimrc: file:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
I file della guida richiedono un po 'di tempo per abituarsi, ma più leggi, migliore è Vim:
:help smartindent
Ancora meglio, puoi incorporare queste impostazioni nella tua fonte per la portabilità:
:help auto-setting
Per visualizzare le impostazioni correnti:
:set all
Come graywh sottolinea nei commenti, smartindent è stato sostituito da cindent che "Funziona in modo più intelligente", anche se ancora principalmente per le lingue con sintassi simil-C:
:help C-indenting
Altri suggerimenti
Correlato, se apri un file che utilizza sia schede che spazi, supponendo che tu abbia
set expandtab ts=4 sw=4 ai
Puoi sostituire tutte le schede con spazi nell'intero file con
:%retab
Il modo migliore per ottenere il rientro specifico del tipo di file è utilizzare rientro del plug-in del tipo di file su
nel tuo vimrc. Quindi puoi specificare cose come set sw = 4 sts = 4 et
in .vim / ftplugin / c.vim, ad esempio, senza dover renderli globali per tutti i file che vengono modificati e altri non-C anche le sintassi del tipo verranno rientrate correttamente (anche lisps) .
Per avere schede a 4 spazi nella maggior parte dei file, caratteri di tabulazione a 8 dimensioni reali in Makefile e rientro automatico in vari file tra cui C / C ++, inseriscilo nel tuo file ~ / .vimrc
:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Use filetype detection and file-based automatic indenting.
filetype plugin indent on
" Use actual tab chars in Makefiles.
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
endif
" For everything else, use a tab width of 4 space chars.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4.
set softtabstop=4 " Sets the number of columns for a TAB.
set expandtab " Expand TABs to spaces.
Su molti sistemi Linux, come Ubuntu, il file .vimrc
non esiste per impostazione predefinita, quindi si consiglia di crearlo prima.
Non utilizzare il file .viminfo
presente nella directory home. È utilizzato per uno scopo diverso.
Passaggio 1: vai alla tua home directory
cd ~
Passaggio 2: crea il file
vim .vimrc
Passaggio 3: aggiungi la configurazione indicata sopra
filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab
Passaggio 3: salva il file premendo Maiusc + ZZ .
Il modo consigliato è utilizzare il rientro basato sul tipo di file e utilizzare smartindent e cindent solo se ciò non è sufficiente.
Aggiungi quanto segue al tuo .vimrc
set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on
Spero che sia d'aiuto come risposta diversa.
modifica il tuo ~ / .vimrc
$ vim ~/.vimrc
aggiungi le seguenti righe:
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
Dal wiki VIM :
:set tabstop=4
:set shiftwidth=4
:set expandtab
Il rientro automatico si basa sulla modalità di sintassi corrente. So che se stai modificando Foo.java, inserendo un {
e premendo Enter rientra la seguente riga.
Per quanto riguarda le schede, ci sono due impostazioni. All'interno di Vim, digita i due punti e poi "imposta tabstop = 4" che imposterà le schede in modo che vengano visualizzate come quattro spazi. Premi di nuovo i due punti e digita " set expandtab " che inserirà spazi per le schede.
Puoi mettere queste impostazioni in un .vimrc (o _vimrc su Windows) nella tua home directory, quindi devi digitarle solo una volta.