Utilisation de vim lorsque vous appuyez sur les parenthèses / parenthèses ouvrantes et fermantes / etc.


8

Quand j'ai appris à programmer, j'appuierais à la fois sur les parenthèses d'ouverture et de fermeture / etc, puis sur la touche fléchée gauche, puis entrerais le texte. Donc, pour mettre, [hello]je taperais [], puis la flèche gauche pour qu'elle soit au-dessus du premier support ( [).

J'aime ça parce que je sais que j'ai toujours le bon nombre de supports / etc et sinon j'ai l'impression que ma main doit aller et venir sur la touche support / etc

Mais, en restant dans la mentalité de Vim, je ne veux pas continuellement chercher les touches fléchées. Y a-t-il quelque chose que je pouvais faire qui n'impliquait pas l'utilisation des touches fléchées ou le fait de devoir continuellement quitter le mode d'insertion pour simplement appuyer het revenir?

Réponses:


5

Vous recherchez peut-être le plug - in de paires automatiques :

Lorsque vous tapez un caractère comme {, (ou [ce plugin ajoutera automatiquement le caractère symétrique et remplacera votre curseur en mode d'insertion entre les deux crochets. Il peut également être "intelligent" lors de la suppression de ces caractères.

Aussi, si je peux vous donner un conseil, oubliez les touches fléchées . Quoi que vous vouliez faire, il y a toujours un mouvement plus rapide accessible sans déplacer vos mains du rang d'origine. Cela peut prendre un certain temps pour s'y habituer, mais une fois que c'est une habitude, vous ne les manquerez même pas.


Merci pour le commentaire et, si cela ne vous dérange pas que je demande; tapez-vous "[" puis "bonjour" puis "]". Sans les plugins surround (ce qui semble être une excellente idée, merci), il semble assez lourd d'aller et venir même sans le problème de potentiellement perdre le bon nombre de supports
JZL003

Et bien en fait je l' utilise toujours soit des paires d'auto-ou surround.vim (voir la réponse de Pierre) , mais si je devais le faire sans plug-ins, je le ferais [, ] , <Esc>(qui placera le curseur sur la ] ) et , enfin , iqui sera placez le curseur entre les crochets en mode insertion.
statox

@statox en mode insertion, comment déplacez-vous votre curseur de deux positions vers la gauche? Avec ctrl-o 2h? Est-ce plus rapide que de déplacer votre main vers les curseurs? ;)
Vitor

@Vitor Nope Je vais appuyer sur la touche Echap pour passer en mode normal, pour un mouvement de moins de 3 caractères, je vais probablement frapper plusieurs fois hou jsinon j'utiliserai d'autres mouvements. Cela me semble plus rapide, mais je comprends que certaines personnes le ressentent différemment :)
statox

@statox après 10 ans d'utilisation de vim, j'ai toujours du mal à utiliser hjkl et spécialement dans ce scénario que je viens de décrire. Merci pour vos commentaires! :)
Vitor

8

Il existe de nombreux plugins "paires" qui le font automatiquement pour vous. Cependant, tous me frottent dans le mauvais sens. J'ai tendance à utiliser le plugin surround.vim de Tim Pope . Je fais ce qui suit: <c-s>]en mode insertion pour insérer []avec le curseur au milieu des crochets.


plus de gens ont besoin de savoir à ce sujet, vim surround est plus utile que de simplement emballer des choses. De plus, je ressens le malaise du plugin de paire, très agressif et
finis

4

Si vous avez juste besoin de déplacer un espace, ctrl-oen mode insertion, votre prochaine entrée est une commande normale, donc ctrl-o, vous hen reculez d'une. La modeline s'affichera --- (insert) ---jusqu'à ce que vous saisissiez la commande normale.


2

crochets lh fournit des mappages en mode insertion, normal et visuel pour insérer une paire de supports.

Remarques:

  • L'ajout de nouvelles paires de supports est assez simple.
  • Les mappages du mode d'insertion sont sensibles au contexte - c'est-à-dire qu'ils ne sont pas développés dans des contextes de chaîne ou de commentaire, ...
  • Contrairement au plugin surround, les mappages environnants sont intuitifs, mais pas dans le style vim. c'est-à-dire que frapper (en mode visuel entourera (par défaut), nous n'avons pas besoin de frapper si(ou de séquences similaires.

2

Les réponses précédentes sont très bonnes. Mais je pense que vous voudrez peut-être quelque chose de plus facile. Personnellement, j'utilise h j k lpour me déplacer. Par conséquent, j'ai ajouté à mon .vimrc ce qui suit:

inoremap <c-j> <esc>ji
inoremap <c-k> <esc>ki
inoremap <c-h> <esc>i
inoremap <c-l> <esc>2li

Juste un petit conseil. Vous avez dit que votre procédure est i, [], <Esc>hi.

Il existe des mappages en attente d'opérateur, ce qui signifie que vous pouvez ci[ou di[ou ii[.


1

Personnellement, je ne suis pas un grand fan de l'insertion automagique de personnages; vous pouvez facilement définir un ensemble de mappages pour insérer du texte et plus le curseur à l'endroit où vous voulez:

" Add brackets with closing bracket
inoremap <C-a>[ []<Left>
inoremap <C-a>( ()<Left>

" For C & C-like languages
inoremap <C-a>{ {<Cr><Cr>}<Up>

" For Ruby
inoremap <C-a>def def<Cr>end<Up>

Notez qu'un plugin comme ultisnips fait aussi des choses comme ça, mais plus avancé. Par exemple en Javascript je peux taper:

if<Tab>hello

et je reçois:

if (hello) {

}

Vous pouvez ajouter un simple extrait pour compléter les parenthèses; il s'agit d'un fichier .snippet spécial qui réside dans ~/.vim/UltiSnips/all.snippets:

snippet (
(${0})
endsnippet

snippet [
[${0}]
endsnippet

snippet {
{
${0}
}
endsnippet

${0} est la position du curseur.

voir :help UltiSnips-adding-snippetspour plus d'informations.

Notez que les ultisnips nécessitent Python; un autre plugin bien connu est vim-snipmate . Le Wiki Vim a une liste complète des plugins d'extraits .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.