Usuń od kursora do końca linii na VI

301

Wiem, że prawdopodobnie przejrzałem to milion razy we wszystkich dokumentach VI, które przeczytałem, ale wydaje mi się, że nie mogę znaleźć usunięcia polecenia od kursora do końca wiersza.

Falmarri
źródło
3
Masz literówkę - w tytule mówisz „koniec linii”, ale w pytaniu „koniec słowa”.
Cascabel,

Odpowiedzi:

449

Polecenie dwusunie z bieżącej pozycji kursora do początku następnego znaku słowa. Polecenie d$(uwaga, to znak dolara, a nie „S”) usunie się z bieżącej pozycji kursora do końca bieżącego wiersza. Djest synonimem d$.

Tok
źródło
Tak, wiem o tym dw, ale chyba po prostu założyłem, że będzie polecenie „usuń resztę tego wiersza”. Na przykład moja linia ma ip=|10.1.1.1z |czym położenie kursora. Czy istnieje polecenie, które usunie wszystkie 10.1.1.1?
Falmarri
3
@ Falmarri - przepraszam, musiałem źle zrozumieć twoje pytanie. Jest do tego polecenie:d$
Tok
84
D (Shift + d) jest również synonimem d $.
Net
5
@Andy, zadanie polega na usunięciu z kursora do końca linii. Jeśli uważasz, że usunięcie czegoś więcej to „wykonywanie pracy”, możesz po prostu użyć :!rm -f %i wtedy :q!. To usuwa cały plik.
Wildcard
2
@Amir Po prostu użyj d^('d' + karetka) ... w zasadzie d + dowolny znak, który normalnie przesunie kursor, ale myślę, że sam się uczę Vima, więc mogę się mylić.
JakeD
41

Jak wspomnieli inni: możesz użyć d$lub D( shift- d), aby usunąć z pozycji kursora do końca linii.

Co ja zwykle znaleźć bardziej użyteczne jest c$lub C( shift- c), ponieważ będzie to usunąć z pozycji kursora do końca linii i umieścić w trybie [INSERT].

Brad Johnson
źródło
2
MIŁY!!! DMoim zdaniem jest to o wiele lepsze niż w przypadku większości ludzi, ponieważ nie przesuwa cię to spacja na końcu linii.
Elijah Lynn
Dlaczego ta odpowiedź jest tutaj ukryta? Właśnie takiej funkcjonalności naprawdę szukałem, kiedy tu przybyłem.
M_M,
@ElijahLynn i tak nie powinno to stanowić problemu. Vim ma dwa główne sposoby wejścia w tryb wstawiania, iktóry wstawia przed kursorem i aktóry wstawia za kursorem. Jeśli kursor znajduje się na końcu linii, a chcesz wstawić na końcu linii, możesz po prostu użyć a.
Lie Ryan,
1
Celem jest zrobienie tego w jednej operacji, a nie w dwóch. Dodatkowe naciśnięcia klawiszy = dodatkowe tarcie.
Elijah Lynn,
36

Jedną z miłych rzeczy w vi jest jej logiczna struktura poleceń. dnastępnie za pomocą polecenia ruchu d eletes dla celu tego ruchu. $przesuwa się na koniec linii (mnemoniczny: jak w wyrażeniach regularnych). d$Usuwa więc do końca linii. Podobnie, eprzenosi się do e ND bieżącego słowa, i wprzesunie się na początek następnego wag ord; deusuwa więc koniec bieżącego słowa i dwdodatkowo usuwa następujące białe znaki.

Gilles
źródło
1
@gioele Używam <kbd>do rzeczywistych klawiszy, a nie do sekwencji poleceń. Np . <kbd>Ctrl</kbd>+<kbd>C</kbd>Ale d$.
Gilles
@Gilles Masz rację. Właśnie próbowałem d ^ i zostało ono usunięte z pozycji kursora do początku linii.
ka3ak
Zawsze używałem (d) elete (a) (w) ord do usuwania słów :)
Błażej Michalik
20

Prawdopodobnie chcesz użyć D. Przesuń kursor do pierwszego znaku, który chcesz usunąć, a następnie naciśnij Shift-D. Wszystko zniknęło W rzeczywistości jest w domyślnym buforze cięcia, więc możesz P lub p wkleić go z powrotem.

Używam Dp (usuń do końca wiersza, a następnie odłóż go z powrotem), przechodzę na koniec innej linii, a następnie p ponownie, aby wkleić ten sam tekst na końcu tej drugiej linii. Działa cuda w plikach konfiguracyjnych, w których trzeba umieścić skomplikowany adres URL w dwóch lub więcej miejscach.

Bruce Ediger
źródło
I tak prawdopodobnie używa minimalnego Vima.
polemon
0

Myślę, że skrót trybu wstawiania może się przydać.

W trybie wstawiania lepiej byłoby zacząć zmieniać do końca linii (umieść to na swoim ~/.vimrc):

inoremap <C-l> <C-o>C

Więc, jak już powiedziano, jesteś Dw trybie normalnym i Ctrl+ lw trybie wstawiania. Jak widać, również Czaczyna się to zmieniać do końca linii.

<C-o> ......... insert normal keystroke in insert mode

Wybrałem Ctrl- lbo ljest pod waszymi palcami. Znak Ctrl- kjest już używany do wstawiania digrafów.

Szukałem :h i_Ctrlwolnych skrótów klawiszowych i jest to większy problem, jeśli chodzi o tworzenie nowych skrótów do wykonywania akcji w vimie.

SergioAraujo
źródło
0

Aby usunąć zakres linii od pozycji kursora, 3Dusunie się z kursora do końca linii, a także całkowicie następne dwie linie (tj. Usuwa 3 linie po pozycji kursora).

np. dla następującego tekstu (kursor reprezentowany jako |),

If there's a cursor |in the line
here
we
go

Użycie polecenia 3Dspowoduje wyświetlenie:

If there's a cursor
go
Nick Bull
źródło