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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top