Dość powszechną operacją dla mnie w vimie, ponieważ jestem kompulsywno-obsesyjny i lubię utrzymywać moje pliki wolne od białych znaków, jest usuwanie zawartości całej linii, ale nie samej linii (tj. Nie łamanie linii).
Czy istnieje wbudowany sposób, aby to zrobić? Być może d<movement command>
operacja?
Jak dotąd najlepsze, jakie mam (na linii, o której mowa) 0d$. Czy jest szybszy sposób?
key-bindings
cursor-movement
Andrew Ferrier
źródło
źródło
:%s/\s*$//
Odpowiedzi:
Możesz użyć
0D
tego, przejdzie do pierwszego znaku w linii i usunie do końca linii. Pamiętaj, że możesz użyć,^D
jeśli chcesz pozostawić dowolne poprzednie białe znaki w spokoju. Nie można również powtórzyć tych operacji przy użyciu.
. Jeśli chcesz operacji, którą można powtórzyć za pomocą.
polecenia, zapoznaj się z odpowiedzią Dawida Pana.Tematy pomocy:
:help 0
:help D
:help ^
źródło
.
polecenia. Z tego powodu uważamcc<Esc>
lubS<Esc>
jest bardziej atrakcyjny, jeśli zależy ci na powtarzaniu..
..
. Działają tak, jakby te naciśnięcia klawiszy były wprowadzane interaktywnie, więc poszczególne polecenia są traktowane osobno. Użycie.
spowoduje powtórzenie tylko ostatniego polecenia w makrze.@{reg}
, możesz.
później powtórzyć .D
. Po0D
operacji kursor pozostanie w kolumnie 0. Jeśli kursor znajduje się już na początku linii (po przejściu do innej), będzie wyglądać, jakby makro zostało poprawnie powtórzone. Spróbuj przesunąć kursor do przodu w linii i pisać.
- zobaczysz, że tylko się powtarzaD
.cc <Esc>
zrobi, jak prosisz, ale jest więcej naciśnięć klawiszy niż0D
. Jeśli chcesz później umieścić coś w tej linii,cc
być może najlepiej.źródło
.
polecenia. Natomiast0D
(jak sugeruje wybrana odpowiedź) są dwie akcje:0
ruch iD
polecenie.0D
dla mnie, ponieważ mamjk
mapowane<Esc>
w moim vimrc, więc moje ręce nawet nie musiałyby wychodzić z rzędu.S
jest udokumentowane jako „Synonim dlacc
”S
a następnieCtrl+C
lubEsc
wydaje się spełniać dokładnie tę samą funkcję.Można to następnie powtórzyć,
.
ponieważ stanowi pojedyncze działanie.źródło
0D
jest prawdopodobnie tym, czego chcesz. Usunie się z kursora na koniec linii, pozostawiając linię (i wszelkie znaki przed kursorem) na miejscu.źródło
0D
Zwykle używam
ddO
.dd
aby usunąć bieżącą linię iO
(to duże o), aby dodać nową linię.Są to również 3 naciśnięcia klawiszy, ale
dd
liczą się tylko jako 1 i pół, i uważam, żeO
łatwiej jest pisać niż$
.Różni się od
0D
rozwiązania tym, że wykonuje automatyczne wcięcie, na przykład z tym kodem (gdzie!···
jest tabulator i █ kursor:0D
zostawi cię z:I
ddO
zostawi cię z:A jeśli naciśniesz
<Esc>
natychmiast po tym, Vim powinien usunąć automatyczne wcięcie, więc masz to samo co z0D
.Nie ma „poprawnego” sposobu, zależy to od tego, co dokładnie chcesz zrobić. Wolę,
ddO
ponieważ jest bardziej elastyczny i ponieważ jest „w moich palcach” :-)źródło
^D
pozostawi białe znaki w spokoju.O
pozostawia cię w trybie wstawiania, jest to równoważnecc
, z wyjątkiem bez automatycznego wcięcia .... chyba że twoja linia była już automatycznie wcięta.I aby zapisać ten jeden cenny klawisz, którego możesz użyć,
0C
który usunie wszystkie znaki w bieżącym wierszu i przejdzie w tryb wstawiania.źródło