2010-11-11 15 views
50

w moim .vimrc mam:przedziały zakładkach i zachowanie Backspace w vim

set shiftwidth=4 
set tabstop=4 
set expandtab 

zestaw użyć 4 spacji zamiast zakładki kiedy nacisnąć przycisk Tab. Ale kiedy uderzę Backspace po Tab, muszę cofnąć wszystkie 4 spacje. Czy istnieje sposób, aby to zrobić, więc kiedy przejdę do backspace, "karta" może usunąć wszystkie 4 spacje?

+5

Nota przypadkowa: ty może mieć wiele opcji 'set' w jednym wierszu, więc możesz mieć' set sw = 4 ts = 4 et sts = 4' –

Odpowiedz

72

Spróbuj set softtabstop=4

+2

Dla mnie jest to jedna z najtrudniejszych podstawowych opcji do zrozumienia na podstawie jej opisu w dokumentacji vima. Nie można winić nikogo za to, że go przegapiłem. "Czuje się" jakby wstawiono s, podczas gdy w rzeczywistości zastosowano kombinację spacji i s. " Powiedz co? Magia? – Cascabel

+6

Mam [naprawdę zdezorientowany] (http://stackoverflow.com/questions/1562336/tab-vs-space-preferences-in-vim/1610732#1610732) o tych ustawieniach, więc zrobiłem screencast o [zakładkach i przestrzeniach w Vimie (http://vimcasts.org/episodes/tabs-and-spaces/). Mam nadzieję, że pomoże to wyjaśnić. – nelstrom

6

Można spróbować użyć^T i^D.

:help i_CTRL-T 
:help i_CTRL-D 

Umożliwiają wstawianie lub kasowanie (bardziej przypominają one backspace) liczbę pól równą shiftwidth.

+2

Niezły! Mapowanie w następujący sposób daje mi naturalne wyczucie: 'inoremap ' –

0

Mam ten sam problem z wami wcześniej, ale wkrótce stwierdzam, że nie ma sensu po prostu cofać 1 znak w prawdziwym kodowaniu. ale jeśli naprawdę potrzebujesz znaku Backspace 1, możesz po prostu wpisać jeszcze jedną spację, a następnie możesz usunąć tylko jeden znak za każdym razem, gdy uderzysz w spację, nawet jeśli masz tam wpisaną kartę 4 spacji