Dimensioni della scheda Vim quando si preme <Tab> e quando si applica l'indipendenza


22

Ho deciso di modificare le dimensioni della mia scheda da 4 a 2, perché perché no? Chiunque desideri esaminare il codice può sicuramente utilizzare le proprie preferenze.

Tuttavia, una domanda.

Se premo il tasto Tab, inserisce 2, ma l'autoindent di Vim sta ancora inserendo 4. Cosa devo modificare per renderlo 2?

Un'altra domanda non correlata: quale stile di rientro è meglio per C e linguaggi simili? Ho usato 1TBS, ma ci sono così tanti tra cui scegliere. Qualcuno di loro è più professionale o preferito?

Risposte:


17

Prova a impostare " shiftwidth" sullo stesso valore di " tabstop". Meglio ancora, se stai usando una versione abbastanza recente di Vim, imposta ' shiftwidth' su 0 e sarà impostato come predefinito su ' tabstop'.


Questo è quello che stavo cercando. Attualmente in discussione tra l'impostazione tscome 2, 4 o 8
user341814

Uso 8 su file non di codice e 2 o 4 a seconda della lingua e della quantità di annidamento che tende a verificarsi.
Eptita,

Faccio solo C al momento.
user341814

33

Opzioni di rientro Vim

Vim utilizza principalmente 3 impostazioni per quanto riguarda le dimensioni del rientro:

  • tabstop, ts: quando Vim incontra una tabulazione in un file che stai aprendo, visualizza la scheda come {ts} spazi (vedi la guida di tabstop o digita :help tabstopVim).
  • softtabstop, sts: quando si modifica un file e si preme il tasto Tab, Vim utilizza questa impostazione per definire la larghezza della tabulazione inserita (consultare la guida di softtabstop o digitare :help softtabstopVim).
  • shiftwidth, sw: Il numero di spazi Vim usa quando rientri, sia utilizzando roba autoindent o il solito >>, <<i comandi. Come notò Heptite, questo è quello che stavi cercando in questo caso particolare. E le versioni recenti di Vim ti permettono davvero di non definire questa opzione, shiftwidthquindi prenderebbero il valore definito da tabstop. Molto utile (consultare la guida di shiftwidth ).

Esempio

Ad esempio, se si utilizzano le seguenti impostazioni:

set sts=4
set ts=2
set sw=8

Ciò produrrebbe il seguente comportamento:

  1. L'inserimento di una tabulazione nel file produrrebbe un rientro di 4 spazi.
  2. Dato che il tuo tabstopè impostato su 2, questo sarebbe effettivamente l'equivalente di 2 tabulazioni. È abbastanza facile da controllare, basta usare le opzioni liste listcharsper visualizzare le tabulazioni.
  3. Se si rientra una linea usando >>, la rientranza sarebbe larga 8 spazi (quindi l'equivalente di 4 tabulazioni, basato sul tabstopvalore, come sopra).

inserisci qui la descrizione dell'immagine

Raccomandazioni sul rientro di Vim (dalla documentazione di Vim)

Da tabstopaiuto ( :help tabstopin Vim):

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

Personalmente uso principalmente la seconda soluzione, con tabulazioni di 2 spazi.

set ts=2
set sts=2
set et     "expand tabs to spaces

-1

Secondo http://vim.wikia.com/wiki/Indenting_source_code , il comando 'filetype plugin indent on' farà sì che il programma utilizzi script di indentazione specifici del tipo di file situati nella sottodirectory di rientro dell'installazione di Vim. Quella pagina afferma anche che 'cindent' viene usato automaticamente nei file C e C ++ e che non dovresti essere obbligato a usare quel comando manualmente.

Non ho molta familiarità con Vim, poiché lo uso solo per alcune occasionali modifiche di base al testo, ma proverei a immettere manualmente il comando 'cindent' per utilizzare la dimensione autoindent predefinita di Vim per quel codice. Se il problema persiste, puoi provare "indentazione del plugin del tipo di file" e modificare tu stesso gli script per ottenere i rientri desiderati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.