Vim - ligne de commentaire surround avec caractère de commentaire

27

Aujourd'hui, j'ai réalisé que j'aime souvent définir des sections dans mon code comme ceci:

####################
# Helper Functions #
####################

Mais c'est fastidieux à faire. En supposant que j'ai une ligne comme celle-ci:

# Helper Functions #

Quel est le jeu de vimtouches le plus court pour l'envelopper dans un #? Shift ne compte pas comme une touche dans ce défi.

Cas de test:

Input: "#test test test#"
Output:
################
#test test test#
################

Input: "#this is a nice block comment#"
Output:
##############################
#this is a nice block comment#
##############################

Input: "# s p a c e s must be supported a l s o#"
Output:
########################################
# s p a c e s must be supported a l s o#
########################################
shearn89
la source
3
Je vote pour fermer cette question comme hors sujet parce que "frappes vim" signifie essentiellement exécuter les commandes d'un IDE, comme Ctrl - C ou Ctrl - R dans ST2. Ce n'est pas du codage sous aucune forme.
Optimizer
3
@Optimizer Vim est un langage complet turing (par exemple en utilisant des macros) avec plusieurs constructions différentes codant et la méthode principale pour l'édition est basée sur les verbes (actions) et les objets (mouvements). Il existe déjà une page Web populaire pour le golf vim: www.vimgolf.com. (Mais je suis d'accord que cette question particulière est assez ennuyeuse)
Hjulle
1
@Optimizer: existe-t-il un site SE plus adapté où la question pourrait être déplacée? Étant donné le vaste langage de script / macro de vim, certaines personnes pourraient le considérer comme un langage en soi.
shearn89
1
@ shearn89 Hostile? Qu'est-ce que tu racontes ? PPCG est ce site.
Optimizer
2
Pourquoi les autres IDE ne seraient-ils pas autorisés aussi si vous pouvez écrire des programmes dans leur système de macro? Qu'est-ce qui fait qu'il "ne programme pas"?
Hjulle

Réponses:

40

11 8 7 touches

YpVkr#p

Yp - duplicate current line, leaving the cursor at the lower of the two
V - enter visual line mode
k - go up and select both lines
r# - replace every selected character with #. Leaves visual mode and leaves cursor at the upper line.
p - put the yanked line (the original) on the next line.

(merci à la poignée de porte pour avoir rappelé Y = yy)

rorlork
la source
3
Remplacez yypar Ypour enregistrer un caractère.
Poignée de porte
2
Wow, cette rcommande est puissante
juste le
10

16 15 14 touches

Yp
:s/./#/g
<cr>
YkP

L'approche directe: dupliquez la ligne, remplacez tous les caractères par #, copiez le résultat et collez-le ci-dessus.

Je compte Pet :comme une touche chacun (au lieu de deux pour Shift+ pou Shift+ ;). Cela étant dit, la question précise de compter les "commandes", où je ne sais pas comment compter la substitution.

Martin Ender
la source
Même commentaire que sur la réponse de @ rcrmn: Remplacez yypar Ypour enregistrer un caractère.
Poignée de porte
Je crois qu'il s'agit en fait de 14 touches, car vous devez
appuyer
@rcrmn Oh, bonne prise.
Martin Ender