Inserisci le schede in modalità INSERT quando è impostata la scheda di espansione


12

Ho impostato expandtabnel mio .vimrcfile per convertire tabin più spacecaratteri. Tuttavia, alcuni file (come Makefile) necessitano effettivamente del tabcarattere inserito.

C'è un modo semplice per forzare l'inserimento tabmentre sto scrivendo?

Risposte:


27

Invece di premere Tab, premere prima, Ctrl-Vquindi premere Tab.

Questo può essere usato per inserire una varietà di caratteri speciali. Vedi :help i_CTRL-Vper i dettagli.

Ctrl-Vfunziona anche in modalità riga di comando ( :help c-CTRL-V) e persino in alcuni altri programmi. (es. bash, mutt.)

Se hai Ctrl-Vmappato a qualcos'altro, prova Ctrl-Q. Questo ha lo stesso effetto in Vim Ctrl-V, ma alcuni terminali lo usano per il flusso di controllo, nel qual caso Vim non lo vedrà mai.


5
O <c-v>009in caso di tasto Tab rotto o purista ASCII hardcore :-)
Martin Tournoij

17

Piuttosto che cambiare il tuo comportamento (che è soggetto a errori).
Configurerei vim per comportarsi diversamente per questo tipo di file.

Quindi nella mia normale modifica espanderò le schede. Ma in particolare per i makefile ho impostato in noexpandtabmodo che le schede vengano mantenute.

Aggiungi quanto segue al tuo file ~ / .vimrc:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
Ho risposto alla sua domanda, ma in realtà hai capito quale sia il problema di fondo molto meglio di me. Buon lavoro.
Ricco

Penso che entrambe le risposte siano preziose. Perché a volte sei connesso da qualche parte in remoto e non vuoi fare confusione con la configurazione di VIM, ma vuoi solo modificare rapidamente un Makefile.
Daniel Schmitz,
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.