Jak wstawić znak tabulacji, gdy w Vimie jest włączona opcja expandtab

352

Gdy jestem w trybie wstawiania i mam expandtabwłączoną opcję, naciśnięcie Tab ↹powoduje wstawienie skonfigurowanej liczby spacji.

Ale czasami chcę wstawić znak tabulacji.

Czy wiesz jak to zrobić?

devemouse
źródło

Odpowiedzi:

516

Możesz używać <CTRL-V><Tab>w „trybie wstawiania”. W trybie wstawiania <CTRL-V>wstawia dosłowną kopię następnego znaku.

Jeśli musisz to robić często, @ Dee`Kej zasugerował (w komentarzach) ustawienie Shift+, Tababy wstawić prawdziwą kartę z tym odwzorowaniem:

:inoremap <S-Tab> <C-V><Tab>

Ponadto, jak zauważył @feedbackloop, w systemie Windows może być konieczne naciśnięcie przycisku <CTRL-Q>zamiast <CTRL-V>.

Michael Anderson
źródło
33
A następnie użyj, .aby powtórzyć ostatnie polecenie, jeśli chcesz wstawić wiele kart.
Xavier T.
10
Miałem pewne problemy z używaniem tej kombinacji, ponieważ byłem w trybie poleceń. Upewnij się, że wykonałeś to polecenie w trybie EDIT.
mgfernan
11
Tryb INSERT, technicznie.
mkmurray
2
Uwaga: Jeśli używasz gVima w systemie Windows, prawdopodobnie będziesz musiał użyć CTRL+ Q- patrz stackoverflow.com/questions/6951672/…
feedbackloop
8
Mam tylko prosty skrót do tej sprawy i wydaje się, że działa (nie psuje niczego innego): inoremap <S-Tab> <C-V><Tab>- Możesz umieścić go w swoim ~/.vimrcpliku.
Dee'Kej
34

Możesz wyłączyć opcję expandtab w Vimie, jak poniżej:

:set expandtab!

lub

:set noet

PS: I ustaw go z powrotem, gdy skończysz wstawiać tabulatory, używając „set expandtab” lub „set et”

PS: Jeśli masz zestaw tabulatorów odpowiadający 4 spacjom w .vimrc (softtabstop), możesz również ustawić 8 spacji, aby móc wstawić tabulację, naciskając klawisz tabulatora raz zamiast dwa razy (set softtabstop = 8 ).

Jahanzeb Farooq
źródło
W skrócie: set eti set noetdo zmiany tabi spacew razie potrzeby.
Eric Wang
Ctrl + V spowodował, że nastąpiło wklejenie i nie miałem czasu na dostosowanie skrótów klawiszowych. Pomogło to
Shirish Hirekodi
2

Z dokumentacji expandtab:

Aby wstawić prawdziwą kartę, gdy expandtabjest włączona, użyj . Zobacz także i ins-expandtab . Ta opcja jest resetowana po ustawieniu opcji i przywracana po zresetowaniu opcji.CTRL-V<Tab>:retab
pastepaste

Więc jeśli masz mapowanie do przełączania pasteopcji, np

set pastetoggle=<F2>

możesz też zrobić <F2>Tab<F2>.

Eugene Yarmash
źródło