0
votes

Commande Vim Surround

J'ai du mal à me souvenir de tous les mots-clés de Vim. Cependant, des choses comme "entourer" de Tim Pope's SUROUND.VIM Plugin sont très utiles.

Est-il possible de configurer une commande de texte générique telle que lorsque j'exécute quelque chose comme xxx

il remplacera la sélection actuelle avec xxx

ou si j'exécute xxx

Il remplacera la sélection actuelle avec: xxx


7 commentaires

Veuillez consulter la page GitHub du plugin. Il y a un mode de sélection visuelle


@Doktoroswaldo Je pense que son point est que c'est que tout est trop complexe à retenir. (En outre, Vim-Surround ne vous permet pas d'entourer une paire de texte arbitraire, sauf si vous vous engagez dans surround-personnifiant .)


Merci pour la clarification @Amadan. Mais autant que je puisse voir surround en mode visuel permet des paires de texte arbitraires. Regardez le raccourci s . Pour Non Visual, il y a toujours vim-sandwich . Se souvenir est plus ou moins simple surround -> s , change environnant -> CS et ainsi de suite .. . Mais cela prend du temps si vous êtes nouveau à Vim.


@Doktoroswaldo: Je ne sais pas ce que vous entendez par la première phrase; Je ne sais pas une voie autre que surround-personnage à surveiller de préambule .... quelque chose (par exemple, changement FOO à ou bar (foo) ). (Et oui, je suis d'accord, Se souvenir est une question de pratique.)


@Armadan avait un autre look, il semble que ce ne soit possible que du texte synchrone des balises HTML, mais de sélectionner un texte de sélection visuellement, puis appuyez sur s

par exemple fonctionnera


@Doktoroswaldo Oui, car une balise est un remplaçant défini. Vous ne pouvez pas, Afaik, maquiller une paire de remplacement ad-hoc sur laquelle vous pourrez entourer. (Ceci est en pratique pas un si grand désavantage; j'utilise un autre plugin pour commentaires et préfixer des parenthèses avec un nom de méthode peut être effectué à l'aide de Pure Vim sans trop de malaise.)


Laissez-nous Continuez cette discussion en chat .


4 Réponses :


0
votes

Afin de tirer parti du plug-in surround.viM, vous devez baser votre personnalisation sur ce que les offres du plug-in. Pour le mode visuel, c'est fondamentalement ce mappage (que par défaut est mappé sur s ): xxx

Le plugin n'expose aucune fonction (le opfunc () il invoque est script-local), vous devez donc appeler le -Mapping; qui peut facilement être fait avec : normal (sans un [!] ).

En outre, le plugin ne prend qu'un seul caractère (par exemple, ( sur entourer de parens et de blancheurs, ) pour entourer de juste des parens); Vous pouvez référencer que dans votre commande personnalisée via .

Vous créez une commande personnalisée avec : aide: commande ; Notez que la commande doit commencer par une lettre majuscule: xxx

ceci renonce en mode visuel ( gv ), puis invoque le plugin et Fournit enfin l'argument passé. Afin de l'invoquer directement à partir du mode Visual, ajoutez simplement un -range à la définition, de sorte que la commande prend (et ignore) le '<,'> VIM fournit automatiquement.

Vous pouvez ensuite appeler la nouvelle commande personnalisée comme : surround) , par exemple, et il entourera la sélection visuelle précédente avec ( ... ) .


0 commentaires

1
votes

Presque, oui. xxx pré>

avec ceci, vous pouvez créer une sélection visuelle, puis utiliser p> xxx pré>

notez que défini par l'utilisateur Les commandes ne peuvent jamais commencer par une lettre minuscule, donc : surround code> que vous demandez est pas em> possible. En outre, c'est un piratage rapide, c'est donc plutôt fragile. P>

Cependant, selon les commentaires, je vous exhorte à utiliser davantage de méthodes VIM standard (et plug-ins bien garnites comme Surround.vim) avant de préparer Façons personnalisées de l'utiliser. P>

Voici une autre solution, à l'aide d'un plug-in surround: définissez un remplacement personnalisé et effectuez-le (puis corrigez la configuration du plug-in sur ce qu'il était avant): P>

command! -range -nargs=1 Surround call ArbitrarySurround(<q-args>)
function! ArbitrarySurround(repl)
  let backup = b:surround_45
  let b:surround_45 = substitute(a:repl, "\\.", "\r", "")
  norm gvS-
  let b:surround_45 = backup
endfunction


1 commentaires

J'étais sur le point d'ajouter une réponse alternative qui impliquerait une demande d'OP sans le plugin surround quand j'ai vu que vous aviez déjà fait exactement cela. J'accepte également que, même si cela satisfait aux exigences de l'OP, il serait préférable de compter sur un plugin, surtout si l'un n'est pas bien versé dans les scripts Vim.



0
votes

Ce n'est pas exactement ce que vous avez demandé, mais puisque le problème mémorise, que diriez-vous de la mettre dans votre .vimrc: xxx

Faites votre sélection, appuyez sur ( et il est entouré de ( ) .

Faites votre sélection, appuyez sur " et il est entouré de " " .

Vous pouvez faire la même chose avec {, [ ou '< / Code>. Pour un tel cas simple, il n'y a pas de besoin réel pour un plugin.


0 commentaires

0
votes

Vous pouvez également utiliser un "entourage" personnalisé qui vous demandera le texte: xxx pré>

Vous pouvez désormais sélectionner visuellement ce que vous voulez envelopper puis appuyer sur S- Pour Tiguger le - code> entourant. Il vous invitera ensuite à vous pour un texte "Démarrer" et "Mettre fin". P>

Pour plus d'aide Voir: P>

:h surround-customizing
:h char2nr()
:h curly-brace-names


0 commentaires