Odpowiedzi:
Ogólnie rzecz biorąc, d <motion> usunie od bieżącej pozycji do pozycji końcowej po <motion>. To znaczy że:
Przeczytaj ten artykuł, aby dowiedzieć się wszystkiego, co możesz łączyć z poleceniem „d”.
d<leftArrow>
zrób to dh
, ponieważ h
jest kluczem do ruchu w lewo
Był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)
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.com
Aby odpowiedzieć na punkcie # 3, diw
i daw
są doskonałe.
db
usuwa litery poprzedzające ostatnią literę, ale nadal pozostawia ostatnią literę.
i
i a
co robią w środku tych poleceń? Wiem, że początek d
to „usuń”, a zakładam, że na końcu w
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:
db
(jeśli kursor znajduje się po słowie) lub bdw
d0
(lub d^
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ć:
:help motion.txt
:help WORD
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ąc x
.
Uwaga: jeśli
N
nie jest określony, zachowuje się jak gdybyN=1
(usuwa pojedynczy znak)
Dyskretne znaki:
<N>x
- Usuń N znaków po prawej stronie
d<N><left-arrow>
- Usuń N znaków po lewej stronie
d<N><right-arrow>
- Usuń N znaków po prawej stronie
Granice słów:
Uwaga: Pierwsze słowo poprzedzające / następne to słowo pod kursorem
d<N>b
- Usuń od początku poprzedniego N-tego słowa do aktualnej pozycji
d<N>e
- Usuń od bieżącej pozycji do końca następnego N-tego słowa
d<N>w
- To samo co, d<N>e
ale z końcowymi odstępami
diw
- Usuń całe słowo pod kursorem
daw
- To samo co, diw
ale z końcowymi odstępami
Granice linii:
d0
- Usuń od początku wiersza do aktualnej pozycji
d^
- Usuń od pierwszego niebiałego znaku do bieżącej pozycji
d$
- Usuń od aktualnej pozycji do końca wiersza
/ <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.
db
trudny do zapamiętania:5. dw or d<ctrl+rightarrow>
i6. db or d<ctrl+leftarrow>