Czy usunąć Vim „tab” w Vimie jednym naciśnięciem klawisza?


19

I edycja Python kod z Vima.

Za pomocą tabklucza wstawiam cztery spacje do wcięcia. Jak mogę usunąć te spacje jednym pociągnięciem „Backspace” (?) Zamiast czterech?

Do tego musi być jakaś opcja „ustawiania” ...

Oto mój .vimrc:

set autoindent
set ts=4
set sw=4
set et

Odpowiedzi:


23

Możesz użyć Ctrl+Ddo utworzenia kopii zapasowej jednego tabulatora. To faktycznie przesuwa całą linię do lewego tabulatora; Ctrl+Trobi to samo po prawej stronie. Zauważ, że te naciśnięcia klawiszy działają tylko w trybie Wstaw (użyj <<i >>dla odpowiednika w trybie Polecenia).



5

tl; dr: set tabstop=4 softtabstop=-1 shiftwidth=0 expandtab

skrócona forma: set ts=4 sts=-1 sw=0 et

Wyjaśnienie

Jeśli ustawisz softtabstop(lub sts) -1, automatycznie zachowa się tak samo jak tabstop( ts), co zaoszczędzi ci kłopotów, jeśli często zmienisz tabulację. Ustawienie shiftwidth( sw) na 0powinno również sprawić, że będzie to samo tabstop.

Szczegółowo

shiftwidth sw

Liczba spacji do użycia dla każdego kroku (automatycznego) wcięcia. Używany do cindent, >>, <<, itd.
Kiedy wyzerować tabstopzostanie wykorzystana wartość.

tabstop ts

Liczba spacji, dla których liczy się a. Zobacz także : polecenie retab i softtabstopopcja.

softtabstop sts

Liczba spacji, dla których Tabliczy się podczas wykonywania operacji edycji, takich jak wstawianie a Tablub używanie BS. To uważa jak Taby są wkładane, podczas gdy w rzeczywistości połączenie przestrzeni i S stosowane. Jest to przydatne, aby utrzymać tabsustawienie na standardowej wartości, a jednocześnie móc edytować tak, jak jest ustawione sts. Gdy stsjest ujemna, shiftwidthużywana jest wartość . Pozwoli ci to zaoszczędzić trochę kłopotów, jeśli często zmieniasz tabstopsy. Gdy expandtabnie jest ustawiony, liczba spacji jest minimalizowana za pomocą Tabs.

expandtab et

W trybie wstawiania: Użyj odpowiedniej liczby spacji, aby wstawić. Przestrzenie są wykorzystywane w tiret z >i <poleceń, a kiedy autoindentjest włączone. Aby wstawić prawdziwą kartę, gdy expandtabjest włączona, użyj Ctrl- V Tab. Zobacz także : retab


Fajnie, używam vima od lat, ale dziedziczenie sts / sw / ts nigdy nie przykuło mojego wzroku.
timss

2

Napisałem GreedyBackspace.vim dla kogoś, kto chciał czegoś takiego. Nie używam go osobiście, więc minęło trochę czasu, odkąd go zaktualizowałem. Jednak ostatnio nie otrzymałem żadnych raportów o błędach.


1

Kilka opcji:

  1. Możesz „przekształcić” wszystkie białe znaki, aby zostały zastąpione tabulatorami. W ten sposób można je łatwo usunąć.
  2. Możesz (jest to niesprawdzone, więc proponuję tutaj pomysły) stworzyć funkcję, która „wykonuje się w trybie normalnym 4 razy klawisz Backspace. Następnie przypisz to do czegoś. Jednak nie ma możliwości dowiedzenia się, czy usunie spacje lub niektóre ważne znaki, więc jest to potencjalnie niebezpieczne.
  3. „4X” usunie 4 ostatnie znaki (to duży X, a nie mały, mały będzie działał jak klawisz Del ”.

0

najprostszym sposobem jest <<powtórzenie za pomocą.


Witam i witam u administratora. Chociaż zgadzam się z twoją odpowiedzią jako użytkownik vi. Twoja odpowiedź jest krótka, nie wyjaśnia, dlaczego sugerujesz, co sugerujesz i dlaczego nie sugerujesz czegoś, co pasuje do zadanego pytania.
Mogget

-1

Czy sprawdziłeś za pomocą ustawienia kart rozwijanych w VIM?

:set noet

Zwykle wolę trzymać karty podczas pracy nad plikami.
Gdy jest to wymagane, zamieniam tabulatory na 4 spacje lub tyle, ile potrzeba.

:%s/<ctrl+V><tab>/    /g
                  ----

Jako niewielki bonus, plik źródłowy jest krótszy o 3 znaki na zakładkę :-)


och, mam et, bo muszę rozwinąć tabulatory - myślę - ponieważ kod, który edytuję, został początkowo napisany w ten sposób. teraz tylko przestrzegam tej konwencji.
Evgeny,

Nadal możesz robić to, co mówię i przywracać spacje na końcu (kiedy musisz oddać plik z powrotem do repozytorium)
nik

Może mógłbyś mieć funkcję vima, która rozszerzyłaby je na zakładki przy otwieraniu i zwinęła je do spacji przy zamykaniu? Czy ktoś ma jakieś pomysły?
sixtyfootersdude

To naprawdę niepomocna odpowiedź - niepotrzebnie wznawia debatę tabulatory kontra spacje, nie dostarczając żadnych użytecznych informacji.
Dietrich Epp

-2

Nie sądzę, że jest jakiś sposób. Gdy klawisz tabulacji zostanie rozszerzony do czterech spacji, vim nie będzie wiedział, że kiedykolwiek był tabulatorem.


4
-1: Brak wyobraźni.
sixtyfootersdude
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.