Wstaw tabulatory w trybie INSERT, gdy jest ustawione rozwinięcie

12

expandtabW moim .vimrcpliku ustawiłem konwersję tabna wiele spaceznaków. Jednak niektóre pliki (np. Makefile) wymagają rzeczywistego tabwstawienia znaku.

Czy istnieje prosty sposób na wymuszenie wstawiania tabpodczas pisania?

ztik
źródło

Odpowiedzi:

27

Zamiast tylko naciskać Tab, najpierw naciśnij, Ctrl-Va następnie naciśnij Tab.

Można to wykorzystać do wstawienia różnych znaków specjalnych. Zobacz :help i_CTRL-Vszczegóły.

Ctrl-Vdziała również w trybie wiersza poleceń ( :help c-CTRL-V), a nawet całkowicie w niektórych innych programach. (np. bash, mutt.)

Jeśli Ctrl-Vzmapowałeś coś innego, spróbuj Ctrl-Q. Ma to taki sam efekt w Vimie Ctrl-V, ale niektóre terminale używają go do sterowania przepływem, w którym to przypadku Vim go nigdy nie zobaczy.

Bogaty
źródło
5
Lub <c-v>009w przypadku złamanego klawisza Tab lub hardcore purystów ASCII :-)
Martin Tournoij
17

Zamiast zmieniać swoje zachowanie (które jest podatne na błędy).
Skonfigurowałbym vima, aby zachowywał się inaczej dla tego typu plików.

Więc w mojej normalnej edycji rozwijam zakładki. Ale specjalnie dla makeplików ustawiam noexpandtabtak, aby zakładki były zachowane.

Dodaj następujące elementy do pliku ~ / .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
Martin York
źródło
3
Odpowiedziałem na jego pytanie, ale tak naprawdę zorientowaliście się, jaki podstawowy problem jest o wiele lepszy niż ja. Dobra robota.
Bogaty
Myślę, że obie odpowiedzi są cenne. Ponieważ czasami jesteś zalogowany gdzieś zdalnie i nie chcesz zadzierać z konfiguracją vima, ale po prostu chcesz szybko edytować plik Makefile.
Daniel Schmitz,