11
votes

Sélectionnez Texte entre deux guillemets sur plusieurs lignes dans Vim

Disons que j'ai le texte suivant: xxx pré>

Je veux tout sélectionner entre les citations. J'ai utilisé VI ", mais cela ne fonctionne pas, cela ne fonctionne que lorsque le texte est sur une seule ligne. D'autre part quand j'ai quelque chose comme ça: P>

(test1,
test 2)


0 commentaires

4 Réponses :


6
votes

Les objets texte délimités par des caractères identiques ( ", ') ne fonctionnent que dans une ligne, car sinon, il serait difficile de déterminer quelle est la bonne portée à Sélectionnez.

Si vous souhaitez qu'un tel objet texte multiligne, vous devez définir votre propre alternative. Les plugins comme KANA / VIM-TEXOBJ-User ou mon propre Plugin de CountJummp vous aide avec cela.

Avec ce dernier, cela peut être aussi simple que cela pour remplacer le i ' A' / i " / a" : xxx


0 commentaires

4
votes

La citation intégrée et la double citation objet de texte ne pas traverser les limites de la ligne. Cependant, vous pouvez utiliser une recherche avec les opérateurs de Vim. E.G.

y/"<cr>
c/"<cr>FOO<esc>
d?"<cr>


0 commentaires

1
votes

Le vim-texoubj-citations Le plugin fait exactement ce que vous recherchez: https://github.com/beloglazov/vim-textobj-quotes

Il fournit des objets texte pour les paires les plus proches des guillemets de tout type et prend en charge les guillemets couvrant plusieurs lignes. En utilisant uniquement iq ou aq Il vous permet de fonctionner sur le contenu des citations simples ('), doubles (") ou arrière (`) citations qui entourent actuellement le curseur, sont devant le curseur ou derrière (dans cet ordre de préférence). En d'autres termes, il saute en avant ou en arrière lorsque nécessaire pour atteindre les citations.

Veuillez consulter la page GITUB liée ci-dessus pour plus de détails.


0 commentaires

0
votes

Vous pouvez créer les mappages suivants:

" Visual
nnoremap <silent> vi" ?"<CR><space>v/"<CR><BS>
nnoremap <silent> vi' ?'<CR><space>v/'<CR><BS>
nnoremap <silent> vi` ?`<CR><space>v/`<CR><BS>
nnoremap <silent> va" ?"<CR>v/"<CR>
nnoremap <silent> va' ?'<CR>v/'<CR>
nnoremap <silent> va` ?`<CR>v/`<CR>

" Delete
nnoremap <silent> di" ?"<CR><space>v/"<CR><BS>d
nnoremap <silent> di' ?'<CR><space>v/'<CR><BS>d
nnoremap <silent> di` ?`<CR><space>v/`<CR><BS>d
nnoremap <silent> da" ?"<CR>v/"<CR>d
nnoremap <silent> da' ?'<CR>v/'<CR>d
nnoremap <silent> da` ?`<CR>v/`<CR>d

" Change
nnoremap <silent> ci" ?"<CR><space>v/"<CR><BS>c
nnoremap <silent> ci' ?'<CR><space>v/'<CR><BS>c
nnoremap <silent> ci` ?`<CR><space>v/`<CR><BS>c
nnoremap <silent> ca" ?"<CR>v/"<CR>c
nnoremap <silent> ca' ?'<CR>v/'<CR>c
nnoremap <silent> ca` ?`<CR>v/`<CR>c


0 commentaires