J'essaie d'utiliser Vim correctement - pour m'aider que j'ai mappé mes touches fléchées de "" afin que je suis obligé d'utiliser {hjlk} pour se déplacer. p>
Cela me cause un problème lorsque je veux juste entourer un caractère avec des espaces, par exemple: p>
"2 + 3" est mieux formaté "2 + 3" p>
Auparavant, j'aurais placé mon curseur sur + et dactylographié: p>
i [espace] [arrow-droite] [Espace] [Echap] P> blockQuote>
C'est 5 presses. P>
Pour ce faire sans la flèche, je semble avoir besoin de mettre le curseur sur + et d'aller: p>
i [espace] [Esc] lli [espace] [Echap] p> blockQuote>
C'est 8 presses. P>
Je peux convertir "LI" en un "A" qui la réduit à 7 presses: P>
i [espace] [Esc] la [Espace] [Echap] P> blockQuote>
Un bref écrit d'écriture dans une macro est une meilleure façon de le faire? Existe-t-il une commande magique Vim qui me permettra de le faire en moins de 5 presses - et d'une manière de le généraliser afin que je puisse le faire à des mots ou symboles entiers, par exemple si je veux convertir 3 == 4 à 3 == 4? P>
9 Réponses :
La première chose qui saute à l'esprit après avoir lu le titre est surround.viM qui est un excellent script pour faire toutes sortes de choses utiles le long des lignes de ce que vous avez décrit. P>
Pour résoudre votre problème spécifique, je voudrais probablement positionner le curseur sur le + et: p>
s [espace] + [Espace] [Echap] P> blockQuote>
Pour changer 3 == 4 en 3 == 4, je pourrais positionner le curseur sur le premier =, et: p>
i [espace] [Echap] ww. p> blockQuote>
J'aime cette deuxième solution de la vôtre car elle semble fonctionner sur n'importe quel jeton. Plus le double w est plus facile à taper que deux touches différentes.
Personnellement, je pense qu'il a le plus de sens de détruire ce que vous voulez entourer, puis de le repousser.
s [space] [space] ESC P
Nice - je m'habitue toujours au fait que la suppression des choses les met dans la tampon de pâte. Et j'utilise VI depuis 10 ans ... C'est pourquoi je me forise à l'apprendre correctement! Sed est la prochaine ...
Essayez de positionnez votre curseur sur le '+' et en tapant ceci: p>
q1i [espace] [flèche droite] [espace] [flèche gauche] [Echaw] q p> blockQuote>
Cela enregistrera une macro rapide dans la fente 1 que vous pouvez réutiliser chaque fois que vous en avez envie, cela entourera le caractère sous le curseur avec des espaces. Vous pouvez le rappeler avec
@ 1 code>. P>
Il y a aussi le plus polyvalent: p>
q1ea [espace] [ESC] bi [espace] [flèche droite] [Echaw] q p> blockQuote>
qui entourera le mot sous le curseur ("=" compte comme un mot) avec des espaces lorsque vous appuyez sur
@ 1 code>. p>
Comme je l'ai dit, je sais que je pouvais le faire avec une macro peut le faire, mais je me demandais s'il y avait un commandement intelligent que je ne connaissais pas!
Vous pouvez créer une macro avec l'une des actions décrites et l'appeler à chaque fois que vous en avez besoin (comme l'amphétamachine proposée pendant que j'écris) ou que vous pourriez simplement rechercher et remplacer:
:%s/\d\@<=+\|-\d\@=/ \0 /g
Vous pouvez configurer un mappage comme celui-ci (appuyez sur Entrée en mode Visual pour envelopper les espaces):
:vnoremap <CR> <ESC>`<i<SPACE><ESC>`>la<SPACE><ESC>h
Hah! J'ai essayé de comprendre comment entourer un bloc dans des espaces pendant un bon moment et j'ai finalement trouvé la bonne combinaison. P>
Utilisation surround.vim vous dire l'espace de l'espace sélecteur surround. P>
Donc, pour ce cas spécifique, j'utiliser le mode visuel (un bon truc pour fonctionner sur un seul caractère sous le curseur BTW) ainsi: « vs » <- quatre touches p>
J'ai aussi une habitude de taper des choses comme des listes d'arguments sans espaces. Avec cette technique, vous pouvez simplement naviguer au second argument en utilisant w et dire « VWS » pour sélectionner visuellement un mot et surround avec des espaces. P>
Je préfère le mode de sélection visuelle en général. Aussi la syntaxe surround alternate « YSW » ne comprend pas le mot de virgule finale qui est pris par « vw ». P>
Je me suis aussi demandé à ce sujet. J'ai essayé avec surround.vim, mais l'approche naïve p>
(après avoir effectué une sélection visuelle) ne fonctionne pas car l'espace est déjà absorbé par modificateur pour ajouter de l'espace à d'autres paires de caractères environnants. Après avoir demandé à TPope / Surround.viM sur GitHub: P>
en mode Visual fonctionne. Alternativement, à partir du mode normal, s
s
ss code> fonctionne presque mais insère un espace seulement avant. p>
s
YSL
Cette méthode vous permet d'utiliser. Pour répéter la commande à la version suivante +.
Mettez votre curseur sur + et tapez: P>
s[SPACE][CTRL-R]"[SPACE][ESC]
Je sais que c'est et le vieux fil, mais cela pourrait être utile à quelqu'un. J'ai trouvé que la carte (carapez-la à autre chose que vous voulez!)
noremap <leader>ss diwi<SPACE><C-R>"<SPACE><ESC>B
Juste curieux, comment avez-vous mappé vos flèches sur ""?
Pour six coups de frappe, vous pouvez faire
i [espace] [Esc] el. Code> mais il y a toujours probablement des moyens plus rapides que cela, donc cela étant un commentaire et non une réponse :)
Casey: Pour cartographier les touches fléchées, dans votre ~ / .vimrc: carte "" [nouvelle ligne] map <"[nouvelle ligne] carte " "[nouvelle ligne]" "(Désolé - Je ne peux pas mettre de nouvelles lignes dans les commentaires!)