2010-12-28 1 views
13

Utilizzando vim, trovo lo cw molto utile per modificare un'intera parola. La separazione dei comandi di movimento e dei verbi d'azione di Vim crea combinazioni molto potenti. Ho appena dovuto cambiare DefaultHandler a ContentHandler. L'ho pensato naturalmente come "passare alla successiva lettera maiuscola", ma non sono riuscito a trovare un comando di movimento che passasse da una lettera maiuscola all'altra.Modifica delle parti delle parole CamelCase in vim

In questo caso, avrei potuto usare ctH, ma c'è un modo per modificare (o eliminare, ecc.) La prima parte di una parola CamelCase indipendentemente da quale lettera maiuscola viene dopo?

+0

possibile duplicato di [Come posso configurare vim in modo che i comandi di movimento includerà sottolineature e CamelCase , ma il completamento li ignorerà?] (http://stackoverflow.com/questions/1279462/how-can-i-configure-vim-so-that-movement-commands-will-include-underscores-and-c) (come accennato nella risposta di Luc, che ritengo dovrebbe essere un commento) – yshavit

risposta

2

Vim non fornisce un oggetto testo Word CamelCase per impostazione predefinita, quindi sarà necessario creare da soli . La buona nuova è che non abbiamo bisogno di reinventare la ruota dal momento che un plug-in già esiste e si può usare come base: camelCaseMotion

Questo script definisce movimenti ,w, ,b e ,e (simile a w, b, e), che non si muovono in termini di parole (avanti/indietro), ma Camel-wise; vale a dire i confini delle parole e le lettere maiuscole. Il problema è che non è definire un oggetto di testo simile a iw per selezionare un'intera parola. Creiamo quindi :

Per essere completo, un oggetto di testo necessita di due definizioni: una per la modalità visiva e un'altra per la modalità di attesa dell'operatore. Ecco le nostre definizioni (da aggiungere al la .vimrc):

vmap ,i <Esc>l,bv,e 
omap ,i :normal v,i<CR> 

Come si può vedere facciamo un uso dei ,b e ,e movimenti definiti dal plugin.

La prima definizione consente di digitare ,i quando siamo in modalità visiva e sarà selezionare l'attuale "parola interna camelCase". (Il l movimento è una soluzione per ottenere sempre la parola trova il cursore. Altrimenti ottiene il precedente quando il cursore si trova sulla prima lettera della parola)

La seconda definizione utilizza il primo uno a lasciare che operatori come d o c lavoro con ,i

Dopo aver installato il plugin e aggiunto le definizioni al nostro .vimrc siamo in grado di fare quello che si voleva.Per esempio se prendo questo esempio:

DefaultHandlerWord 

Se il mio cursore si trova sulla lettera n di Handler posso usare:

  • ,e per andare all'ultima lettera di Handler
  • ,b andare alla prima lettera di Handler
  • ,w per andare alla prima lettera di Word
  • d,i eliminare Handler e ottenere solo DefaultWord
  • c,i eliminare Hanlder e avere la possibilità di sostituirlo con un'altra parola
+0

Anche per domande su Vim, potrebbero essere interessati al [sito di scambio dello stack dedicato] (http://vi.stackexchange.com/). – statox