vimrc - Tasto Tab== 4 spazi e rientro automatico dopo parentesi graffe in Vim




vim fix indentation (6)

Come è stato sottolineato in un paio di risposte qui sotto, il metodo preferito ora NON è usare smartindent, ma usare il seguente (nel tuo .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 di aiuto richiedono un po 'di tempo per abituarsi, ma più leggi, più Vim ottiene:

:help smartindent

Ancora meglio, puoi incorporare queste impostazioni nella tua sorgente per la portabilità:

:help auto-setting

Per vedere le tue impostazioni attuali:

:set all

Come sottolineato da graywh nei commenti, smartindent è stato sostituito da Cindent che "funziona in modo più intelligente", sebbene sia ancora principalmente per le lingue con sintassi simile a C:

:help C-indenting

Come faccio a fare in modo che vi - Vim non usi mai le schede (convertendo gli spazi in schede, male!), Renda il tasto tab == 4 spazi e indentri automaticamente il codice dopo i blocchi di parentesi graffa come fa Emacs ?

Inoltre, come posso salvare queste impostazioni in modo da non doverle inserire di nuovo?

Ho visto altre domande relative a questo, ma sembra sempre un po 'fuori da quello che voglio.


Correlato, se apri un file che utilizza sia le schede che gli spazi, assumendo che tu abbia

set expandtab ts=4 sw=4 ai

Puoi sostituire tutte le schede con gli spazi nell'intero file con

:%retab

Il metodo consigliato è utilizzare il rientro basato su filetype e utilizzare solo smartindent e cindent se ciò non è sufficiente.

Aggiungi quanto segue al tuo .vimrc

set expandtab
set shiftwidth=2
set softtabstop=2
filetype plugin indent on

Spero che aiuti come una risposta diversa.


Il modo migliore per ottenere un rientro specifico per il tipo di filetype plugin indent on è utilizzare il filetype plugin indent on in vimrc. Quindi puoi specificare cose come set sw=4 sts=4 et in .vim / ftplugin / c.vim, per esempio, senza dover rendere globali quelle per tutti i file che vengono modificati e altre sintassi di tipo non C verranno indentate correttamente, troppo (anche le lisci) .


Per avere tabs a 4 spazi nella maggior parte dei file, un vero char tab 8-wide nei Makefile e il rientro automatico in vari file, incluso C / C ++, mettilo 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 è consigliabile crearlo prima.

Non utilizzare il file .viminfo presente nella home directory. È usato per uno scopo diverso.

Passaggio 1: vai alla tua home directory

cd ~

Passaggio 2: crea il file

vim .vimrc

Passaggio 3: aggiungere la configurazione indicata sopra

filetype plugin indent on
set tabstop=4
set shiftwidth=4
set expandtab

Passaggio 3: salvare il file, premendo MAIUSC + ZZ .







auto-indent