2009-09-18 13 views
29

La chiave % è una delle migliori caratteristiche di vim: esso consente di passare {-}, [ a ], . e così viaIn vim, c'è un plugin per utilizzare% in modo che corrisponda virgolette (")

Tuttavia, non funziona di default con le citazioni: o " o ', probabilmente perché l'apertura e la quotazione di chiusura sono lo stesso personaggio, rendendo implementazione più difficile

Pensando un po 'di più. il problema, sono convinto che dovrebbe essere implementato, da contando se il numero di preventivi precedenti è pari o dispari e salta alla quotazione precedente o successiva, di conseguenza.

Prima di provare a implementarlo da solo, vorrei solo sapere se qualcuno ha già?

risposta

68

A seconda del motivo per cui hai bisogno di questo, ci può essere un modo migliore per realizzare ciò che stai cercando. Per esempio, se avete il seguente codice:

foo(bar, "baz quux") 
      ^

e il cursore sembra essere al ^, e si desidera sostituire tutto dentro le virgolette con qualcos'altro, utilizzare ci". Questo utilizza il Vim "text objects" di cambiare (c) tutto dentro (i) le virgolette (") e si mette in modalità di inserimento in questo modo:

foo(bar, "") 
     ^

allora si può iniziare a digitare il testo di sostituzione. Ci sono molti altri oggetti di testo che sono veramente utili per questo tipo di scorciatoia. Impara (e usa) un nuovo comando Vim a settimana e sarai un esperto in men che non si dica!

+0

Grazie, è stata una risposta utile. Vedi qualche motivo per non implementare% per le virgolette, però? –

+4

Come dici tu, la difficoltà con le virgolette è che non sono naturalmente simmetrici. La tua idea di numeri pari/dispari sembra un buon compromesso, anche se non sarebbe applicabile a tutte le situazioni. Bisogna fare attenzione con le virgolette di escape ('\" ') o le virgolette di Python (' "" "') o le virgolette in altri contesti come le espressioni regolari di Perl o le lingue che supportano i letterali di stringa multi-linea. Ma forse vale la pena provare! –

+0

Questo non funziona per me? Va semplicemente nella modalità di inserimento normale –

28

La risposta di Greg è stata molto utile ma mi piacciono anche i comandi "f" e "F" che spostano il cursore avanti e indietro sul carattere che si preme dopo il comando.

Quindi premere f" per passare al prossimo 'carattere e F' per passare a quella precedente.

+3

Puoi anche combinare questi comandi di spostamento del testo con i comandi di modifica, quindi "cf" cambia fino a includere la citazione successiva, mentre "ct" "cambia fino a ma * non * inclusa la citazione successiva. –

8

mi piacerebbe approfondire Greg's answer, e introdurre il plugin surround.vim.

Supponiamo che invece di modificare il contenuto delle citazioni, si desidera modificare se stessi i " personaggi. Diciamo che si desidera modificare da virgolette a apostrofi.

foo(bar, "baz quux") 
      ^

Il plugin Surround permette y OU per cambiare questo per

foo(bar, 'baz quux') 
      ^

semplicemente eseguendo il seguente: cs"' (che recita: "cambiare le circostanti doppi apici per apostrofi").

Si potrebbe anche eliminare le virgolette semplicemente in esecuzione: ds" (che recita: "eliminare circostanti virgolette)

C'è una good introduction to the surround plugin here..

1

Ho trovato questa tecnica molto utile per andare al di inizio/fine di un stringa molto lunga citata.

  1. quando il cursore si trova all'interno della stringa, selezionare visivamente l'intera stringa utilizzando vi" o vi'
  2. vai a inizio/fine della stringa premendo o
  3. premere Esc per uscire dalla modalità di selezione visiva

questo effettivamente prende il cursore accanto al carattere di inizio/fine citazione, ma è comunque abbastanza utile.

+0

Molto carino, grazie! –

Problemi correlati