Qual è la differenza tra w e W in modalità escape di vim?


19

Sto guardando i comandi quickref di vim help per spostare il cursore. Le righe seguenti mi confondono perché trovo che entrambi funzionino allo stesso modo. Qualcuno potrebbe elaborarmi la differenza con un esempio.

N  w            N words forward
N  W            N blank-separated WORDS forward

La stessa domanda vale anche per e ed E.

Risposte:


34

Secondo questo cheat sheet sembrerebbe scendere alla punteggiatura.

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

Esempio

demo usando w

          ss di w

demo usando W

          ss di W

Notare nella prima demo come quando wviene continuamente colpito che il cursore si posiziona sulla punteggiatura, mentre nella seconda demo la punteggiatura viene saltata. Questa è la differenza tra i comandi minuscoli e i loro equivalenti maiuscoli.


@slm: grazie mille per questa fantastica demo. con tale demo non c'è bisogno di leggere anche ans
rahul.deshmukhpatil

5

In realtà è abbastanza semplice, wpassa alla parola successiva, ma qualsiasi tipo di punteggiatura o spazio bianco spezza le parole. Wè come il comando della parola successiva della forza industriale, le parole sono delimitate solo da spazi bianchi, sia esso tab, spazio o newline. wsi interrompe anche alla punteggiatura delimitante, nel caso in cui si desideri occuparsene.

Trovo la differenza utile più spesso con i nomi host:

birdman.cartoons.fictional.com # Fictional host

Con w, ti fermi su ogni parte del nome host e dei punti. Wsalta semplicemente l'intero nome host e passa al #. Questi entrambi valgono anche per de cper la rimozione e la modifica parole.

Se posizionato all'inizio della riga sopra, se si desidera sostituire birdman.cartoonscon qualcos'altro, si utilizzerà 3cwper sostituire entrambe le prime due parti e il punto nel mezzo. Non puoi farlo Wsenza dover riscrivere l'intero nome host.


2

È una differenza che si comprende meglio considerando come la punteggiatura può influire sul concetto di Vim di ciò che delimita una parola.

Nel caso di questo testo di esempio:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wsalterà felicemente alla prima lettera di ogni parola nella prima riga, poiché c'è solo spazio per negoziare. Fallirà gravemente sulla riga 2 con la punteggiatura, scendendo sulle prime lettere di ogni parola e sulle virgole e sui trattini. Per spostarsi da una parola all'altra sulla riga 2, è necessario utilizzare Shiftw1 .

1. Anche allora, Vim vede "is – note – virole" come una singola parola.


1

La differenza si trova nelle pagine di aiuto interne di vim. Diamo prima una descrizione di w e W con :helpw oppure :help W:

  • w [conta] parole in avanti. | Esclusiva | movimento.
  • W [conta] PAROLE in avanti. | Esclusiva | movimento.

Ora vogliamo sapere quali sono le definizioni di parola e WORD. Cerca di nuovo il manuale con :help worde :help WORD, li troviamo.

  • Una parola è composta da a sequence of letters, digits and underscores, o a sequence of other non-blank characters, separated with white space(spazi, tabulazioni). Questo può essere modificato con l'opzione 'iskeyword'. Una riga vuota è anche considerata una parola.
  • Una WORD è composta da a sequence of non-blank characters, separated with white space. Una riga vuota è anche considerata una WORD.
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.