Come cambio fino alla prossima sottolineatura in VIm?


54

Se ho questo testo in vim, e il mio cursore è al primo carattere:

www.foo.com

So che posso fare:

  • cw per cambiare fino al primo periodo, perché a word (minuscolo w) termina con qualsiasi punteggiatura O spazio bianco
  • cW per cambiare l'intero indirizzo, perché a Word (maiuscolo w) termina solo negli spazi bianchi

Ora, cosa succede se ho questo:

stupid_method_name

e vuoi cambiarlo con questo?

awesome_method_name

Tutti e due cw e cW cambia tutto, ma voglio solo cambiare il frammento prima del carattere di sottolineatura.

La mia tecnica di fallback è c/_, che significa 'cambia fino a quando non si preme il prossimo carattere di sottolineatura in una ricerca', ma per me, questo fa sì che tutti i caratteri di sottolineatura siano evidenziati come termini di ricerca, il che è leggermente fastidioso.

C'è un identificatore come w o W questo non include i caratteri di sottolineatura?


Cosa c'è di sbagliato :nohl?
Ignacio Vazquez-Abrams

io fare desidera che i termini di ricerca vengano evidenziati la maggior parte del tempo; non quando uso la ricerca come movimento. (Ho anche solo fatto questa domanda: superuser.com/questions/244042/... )
Nathan Long

Risposte:


76

Tu puoi fare cf_. f non evidenzierà il carattere cercato.

Puoi anche fare ct_ se non vuoi includere il _.


15
Stai confondendo f, t, F e T. f avanza verso il personaggio; F si sposta indietro al personaggio; t avanza poco prima del personaggio; e T si sposta indietro al personaggio a destra del personaggio bersaglio. Quindi il tuo secondo esempio avrebbe dovuto essere ct_.
garyjohn

2
Ora la mia risposta è corretta. Scusa e grazie.
doubleface

4
ct_ è esattamente quello che volevo. Questo è ora diventato parte del mio normale flusso di lavoro. Grazie!
Nathan Long

1
Questo è anche incredibilmente estensibile e quindi potente. Sto indovinando che puoi mettere qualsiasi carattere dopo il f o t e andrà alla ricorrenza successiva (o prev per tappi). Grazie.
Dom

1
Vim non fallisce mai, solo la comprensione di ciò di cui è capace!
Benjamin R

59

Metti questo nel tuo .vimrc:

set iskeyword-=_

Quindi _ sarà trattato come un limite di parole (sebbene non sia un limite di WORD), e cw potrebbe essere usato per cambiare semplicemente "awesome", e cW per cambiare il tutto.

Vedere:

:help iskeyword

e

:help word

per maggiori informazioni.


4
È bello sapere che posso definire i miei limiti di parole, ma dopo un po 'di riflessione, penso che la soluzione migliore sia ct_ come dice la doppia faccia in basso, dal momento che è concisa ed è un comportamento Vim predefinito.
Nathan Long

Questo è il mio preferito
Jay

2
Mi piace questo, ma rompe la mia codifica del colore della sintassi in PHP.
Aaron Surrain

1

camelcasemotion è un plugin vim molto utile che ti permette di muoverti tra le parole quando usi la notazione underscore o camelcase. Usando questo plugin puoi mettere una virgola di fronte a molti dei tradizionali comandi di movimento vim che ti permetteranno di trattare le parole in notazione underscore o camelcase come parole complete.

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.