2014-06-06 13 views
5

In vim, è possibile effettuare questa operazione vi", vi [, vi (...Come selezionare il testo tra virgolette, parentesi ... in Emacs?

Ad esempio, se si dispone di una linea come questa:

x = "difference between vim and emacs" 

e il cursore è ovunque tra quelli citazioni e si colpisce vi", la stringa sarà visivamente selezionato.

+0

Strettamente correlato: [Come contrassegnare il testo tra parentesi in Emacs?] (Http://stackoverflow.com/q/5194417/1199226) – itsjeyd

risposta

3

in ritardo alla festa, ma è anche possibile utilizzare Evil mode, che fa un lavoro bang-up di emulazione di Vim, tra cui i comandi di movimento che lei ha citato.

+0

Sì, questo è quello che ho finito per usare! :) – qed

4

Da Emacs Documentation

Quasi tutte le modalità di sostegno‘(,)’come p arenthes e la maggior parte supporta anche le parentesi quadre "[,]" e parentesi graffe "{,}" . Tuttavia, è possibile effettuare qualsiasi coppia di caratteri una parentesi coppia, utilizzando il comando seguente :

(modify-syntax-entry ?^ "($") 
(modify-syntax-entry ?$ ")^") 

Inoltre, dare un'occhiata a questo post How to mark the text between the parentheses in Emacs?. combinazione di tasti dato a questo post

Prova nella sequenza di tasti C-M-u C-M-SPC (cioè, tenendo le chiavi Control e Meta, premere u e Space in sequenza) che esegue i comandi backward-up-sexp e mark-sexp

11

Il pacchetto expand-region è conveniente per questo. Chiamando il numero er/expand-region con il punto all'interno delle virgolette, si segnerà la parola più vicina, quindi richiamandola di nuovo verranno contrassegnate tutte le parole all'interno delle virgolette. (Chiamandolo una terza volta si espanderà la regione per includere le virgolette.)

Ho legato a C-;.

(global-set-key (kbd "C-;") 'er/expand-region) 

Con questo legame, premento C-; C-; metterà in evidenza il testo tra le virgolette.

+1

@qed Se si seleziona il testo perché si desidera operare su di esso (copialo, uccidilo, ecc.) c'è anche [change-inner.el] (https://github.com/magnars/change-inner.el) che è basato su 'expand-region.el' e "ti dà il comando' ci' di vim ". – itsjeyd

1

In cima al toolkit

https://launchpad.net/s-x-emacs-werkstatt/+download

i seguenti tasti/comandi vengono consegnati:

(global-set-key [(super \))] 'ar-parentized-atpt) 
(global-set-key [(super \])] 'ar-bracketed-atpt) 
(global-set-key [(super \})] 'ar-braced-atpt) 
(global-set-key [(super \")] 'ar-doublequoted-atpt) 
(global-set-key [(super \')] 'ar-singlequoted-atpt) 

questo modo con un paio di caratteri noti come delimitatori costituiranno comandi.

ar-delimited-atpt restituirà la stringa attorno al punto individuato dal delimitatore più vicino.

Un gruppo di comandi più potenti permette ri-utilizzando i tasti del genere

(global-set-key [(control c)(\")] 'ar-doublequote-or-copy-atpt) 
(global-set-key [(control c)(\')] 'ar-singlequote-or-copy-atpt) 
(global-set-key [(control c)(<)] 'ar-lesser-angle-or-copy-atpt) 
(global-set-key [(control c)(>)] 'ar-greater-angle-or-copy-atpt) 

Ecco un doctring dato come esempio:

ar-doublequote-or-copy-atpt is an interactive Lisp function in 
`thing-at-point-utils.el'. 

It is bound to C-c ". 

(ar-doublequote-or-copy-atpt &optional NO-DELIMITERS) 

If region is highlighted, provide THING at point with doublequote(s), 
    otherwise copy doublequote(ed) at point. 
    With C-u, copy doublequote(ed) without delimiters. 
    With negative argument kill doublequote(ed) at point. 
0

Utilizzare librerie thingatpt+.el e thing-cmds.el.

Troverete comandi come thing-region, che seleziona una cosa al punto come regione.Dal momento che string-contents e list-contents sono definiti come le cose (in thingatpt+.el), questi selezionare i contenuti della stringa/lista come regione:

(thing-region "string-contents") ; Select the contents of the string at point. 
(thing-region "list-contents") ; Select the contents of the list at point. 

o in modo interattivo:

M-x thing-region RET string-contents RET 

Altri, i comandi relativi includono:

  • C-M-U (alias C-M-S-u) - mark-enclosing-list: selezionare allegando elenco. Ripeti per espandere i livelli dell'elenco. Funziona con qualsiasi espressione di parentesi bilanciata (ad esempio, vettori): qualunque sia la sintassi corrente definita nella tabella di sintassi delimitatore.

  • mark-thing - Seleziona le cose successive di un determinato tipo (ripetendo).

  • next-visible-thing - Passa alla prossima cosa visibile di un determinato tipo (ripetendo).

Problemi correlati