Ogólnie rzecz biorąc, d <motion> usunie od bieżącej pozycji do pozycji końcowej po <motion>. To znaczy że:
- d <leftArrow> usunie aktualny i lewy znak
- d $ usunie od bieżącej pozycji do końca wiersza
- d ^ usunie od bieżącego wstecz do pierwszego znaku innego niż biały
- d0 usunie od bieżącej wstecz do początku wiersza
- dw usuwa bieżące do końca bieżącego słowa (w tym spację końcową)
- db usuwa bieżące do początku bieżącego słowa
Przeczytaj ten artykuł, aby dowiedzieć się wszystkiego, co możesz łączyć z poleceniem „d”.
db
trudny do zapamiętania:5. dw or d<ctrl+rightarrow>
i6. db or d<ctrl+leftarrow>
d<leftArrow>
zrób todh
, ponieważh
jest kluczem do ruchu w lewoByłem w tym scenariuszu wiele razy. Chcę pozbyć się wszystkich spacji w wierszu 10, aby łączył się z wierszem 9 po przecinku.
Jest to w zasadzie proste łączenie linii w VIM.
kJ
załatwia sprawę (patrz poniżej)źródło
k
= Góra,J
= Połącz linię poniżej z bieżącą z jedną spacją pomiędzy. Możesz teżkgJ
dołączyć bez spacji.gJ
= Połącz linię poniżej bez spacji pomiędzy. Przez ściągawkę: vim.rtorr.comAby odpowiedzieć na punkcie # 3,
diw
idaw
są doskonałe.źródło
db
usuwa litery poprzedzające ostatnią literę, ale nadal pozostawia ostatnią literę.i
ia
co robią w środku tych poleceń? Wiem, że początekd
to „usuń”, a zakładam, że na końcuw
jest „słowo”.:help text-objects
. Pierwszy akapit jest bardzo zwięzły i myślę, że bardzo dobrze go opisuje.W trybie wstawiania:
Inaczej:
źródło
W trybie poleceń:
bdw
, z powrotem usuń słowo.d^
(do pierwszego niepustego),d0
(do pierwszego znaku)BdW
(przejdź do pierwszej białej spacji usuń do następnej białej spacji)(Społeczność wiki, możesz zhakować).
źródło
db
(jeśli kursor znajduje się po słowie) lubbdw
d0
(lubd^
jeśli chcesz usunąć do pierwszego niepustego znaku)dE
lub, dtSpaceaby usunąć do pierwszej spacji lub d/\sEnterusunąć do następnego znaku odstępu.Edytować
Ponieważ pytanie zostało zmienione w taki sposób, że 3 jest usuwane do pierwszego białego znaku po lewej stronie, moja odpowiedź powinna zmienić się na:
dB
lub, dShiftTSpaceaby usunąć z powrotem do pierwszej spacji lub, d?\sEnteraby usunąć do poprzedniego znaku odstępu.Widzieć:
źródło
bdw
. Pozostała postać (ta pierwotnie pod kursorem)db
wciąż mnie irytowała.Czuję, że żadna z odpowiedzi nie jest kompletna:
Ogólnie rzecz biorąc, operację usuwania zwykle rozpoczynasz używając
d<motion>
, a rzadko używającx
.Dyskretne znaki:
<N>x
- Usuń N znaków po prawej stronied<N><left-arrow>
- Usuń N znaków po lewej stronied<N><right-arrow>
- Usuń N znaków po prawej stronieGranice słów:
d<N>b
- Usuń od początku poprzedniego N-tego słowa do aktualnej pozycjid<N>e
- Usuń od bieżącej pozycji do końca następnego N-tego słowad<N>w
- To samo co,d<N>e
ale z końcowymi odstępamidiw
- Usuń całe słowo pod kursoremdaw
- To samo co,diw
ale z końcowymi odstępamiGranice linii:
d0
- Usuń od początku wiersza do aktualnej pozycjid^
- Usuń od pierwszego niebiałego znaku do bieżącej pozycjid$
- Usuń od aktualnej pozycji do końca wierszaźródło
/ <CR>x
(wyszukaj spację do przodu, naciśnij enter, aby tam przejść, x, aby usunąć)
Może jest na to bardziej magiczny sposób, ale ja go nie znam.
źródło