vim cancellando i trucchi all'indietro


119
  • Come si cancella una parola a sinistra? In altre parole, elimina la parola quando il cursore si trova alla fine di essa.
  • Come si cancellano i caratteri all'inizio della riga?
  • Come si cancella il primo spazio bianco a sinistra?

  • Eventuali altri trucchi che comportano l'eliminazione delle parole?

Risposte:


163

In generale, d <motion> cancellerà dalla posizione corrente alla posizione finale dopo <motion>. Ciò significa che:

  1. d <leftArrow> cancellerà il carattere corrente e sinistro
  2. d $ cancellerà dalla posizione corrente alla fine della riga
  3. d ^ eliminerà dall'indietro corrente al primo carattere diverso da uno spazio bianco
  4. d0 cancellerà dall'indietro corrente all'inizio della riga
  5. dw cancella dalla corrente alla fine della parola corrente (incluso lo spazio finale)
  6. db cancella dalla corrente all'inizio della parola corrente

Leggi questo per imparare tutte le cose che puoi combinare con il comando "d".


2
Un'altra comoda scorciatoia nel caso in cui sia dbdifficile ricordare: 5. dw or d<ctrl+rightarrow>e 6. db or d<ctrl+leftarrow>
Crisboot

7
Invece di digitare d<leftArrow>fai dhinvece, poiché hè la chiave per spostarti a sinistra
Dylanthepiguy

4
Perché questa risposta accettata? d <leftArrow> (e non di seguito tranne dw) non cancellerà un carattere sotto un cursore come OP voluto.
listerreg

73

Sono stato in questo scenario molte volte. Voglio eliminare tutti gli spazi nella riga 10 in modo che si unisca alla riga 9 dopo la virgola.

inserisci qui la descrizione dell'immagine

Questa è fondamentalmente una semplice linea di unione in VIM.

kJ fa il trucco (guarda sotto)

Vim Join Lines


9
Ho cercato dappertutto per questo!
funzionevoid

2
haha, lo voglio e non ho idea di come descriverlo in Google. Così fortunato che scorro verso il basso =))
Thai Tran

1
Non riesco a credere quante volte l'ho fatto manualmente. Questo è esattamente quello che stavo cercando, GRAZIE!
tobiasandersen

1
Questo e 'esattamente quello che stavo cercando. Vim mi fa
impazzire

4
La spiegazione è: k= Su, J= Unisci la riga sotto a quella corrente con uno spazio in mezzo. Potresti anche fare kgJper partecipare senza uno spazio. gJ= Unisci la riga sotto senza spazi in mezzo. Tramite cheatsheet
KhalilRavanna

31

Per rispondere al punto 3, diwe dawsono eccellenti.


4
Trovo triste che non ci siano comandi di due caratteri per cancellare una parola all'indietro quando sei all'ultima lettera, perché in editor standard come notepad ++, gedit ecc. Puoi facilmente usare CTRL + Backspace ... tranne che da quello vim è eccellente.
itmuckel

3
@ roggan87 Se ti trovi sull'ultima lettera di una parola, dbelimina le lettere che precedono l'ultima lettera ma lascia comunque l'ultima lettera.
Prashanth Chandra

2
Puoi spiegare cosa stanno facendo i ie anel mezzo di quei comandi? So che la parte iniziale dè "cancella" e presumo che la parte finale wsia "parola".
Carl G

1
@CarlG La migliore spiegazione è in :help text-objects. Il paragrafo iniziale è molto conciso e penso lo descriva molto bene.
Randy Morris

5
<kbd> i </kbd> è "interno" e <kbd> a </kbd> è "a", come in "una parola". Il primo non includerà spazi bianchi racchiusi, mentre il secondo includerà spazi vuoti finali, se presenti, altrimenti includerà spazi bianchi precedenti. Molto utile, grazie.
Carl G

25

In modalità di inserimento:

  • ^ w
  • ^ u
  • non posso rispondere dalla mia testa ;-)

Altrimenti:

  • dw
  • V0X
  • non posso rispondere dalla mia testa ;-)

Non sapevo di poter eliminare la parola in modalità di inserimento in Vim. Questo aiuta molto.
Đỗ Tiến

18

In modalità di comando:

  1. bdw, indietro cancella parola.
  2. d^(al primo non vuoto), d0(al primo carattere)
  3. BdW (vai al primo spazio bianco elimina al successivo spazio bianco)

(Wiki della comunità, sentiti libero di hackerare.)


14
  1. db (se il cursore si trova dopo la parola) o bdw
  2. d0(o d^se vuoi cancellare fino al primo carattere non vuoto)
  3. dEo dtSpaceper eliminare al primo spazio o d/\sEnterper eliminare al successivo carattere di spazio bianco.

modificare

Poiché la domanda è stata modificata in modo tale che 3 venga eliminato al primo carattere di spazio vuoto a sinistra, la mia risposta dovrebbe cambiare in:

  1. dBo dShiftTSpaceper cancellare di nuovo al primo spazio o d?\sEnterper cancellare al carattere di spazio vuoto precedente.

Vedere:

:help motion.txt
:help WORD

Buona chiamata al n. 3. Non ero sicuro di come gestire QUALSIASI spazio bianco. Vale la pena ricordare che dF <SPACE> eliminerà fino a <SPACE> incluso mentre dT <SPACE> lascerà <SPACE> lì.
Mark Biek,

Sono venuto qui cercando qualcosa di simile bdw. Il carattere rimanente (quello originariamente sotto il cursore) dbcontinuava a darmi fastidio.
Deiwin

8

Sento che nessuna delle risposte è completa:

In generale, di solito si avvia un'operazione di eliminazione utilizzando d<motion>e raramente utilizzando x.

Nota: se Nnon specificato, si comporta come se N=1(elimina un singolo carattere)

Caratteri discreti:

<N>x - Elimina N caratteri a destra

d<N><left-arrow> - Elimina N caratteri a sinistra

d<N><right-arrow> - Elimina N caratteri a destra

Confini delle parole:

Nota: la prima parola precedente / successiva è quella sotto il cursore

d<N>b - Cancella dall'inizio della parola N-esima precedente alla posizione corrente

d<N>e - Elimina dalla posizione corrente alla fine della successiva N-esima parola

d<N>w- Come d<N>ema includendo gli spazi vuoti finali

diw - Elimina l'intera parola sotto il cursore

daw- Come diwma includendo gli spazi vuoti finali

Confini della linea:

d0 - Elimina dall'inizio della riga alla posizione corrente

d^ - Elimina dal primo carattere diverso da uno spazio vuoto alla posizione corrente

d$ - Elimina dalla posizione corrente alla fine della riga


1

/ <CR>x

(cerca uno spazio in avanti, premi invio per andare lì, x per eliminare)

Potrebbe esserci un modo più magico per farlo, ma non ne conosco uno.


Se vuoi eliminare il primo spazio bianco a sinistra, premi? invece di / nel mio esempio.
brettkelly,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.