Vim: línea de comentario envolvente con carácter de comentario

27

Hoy me di cuenta de que a menudo me gusta definir secciones en mi código así:

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

Pero eso es tedioso de hacer. Suponiendo que tengo una línea como esta:

# Helper Functions #

¿Cuál es el conjunto más corto de vimpulsaciones de teclas para envolverlo en un #? Shift no cuenta como una pulsación de tecla en este desafío.

Casos de prueba:

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
fuente
3
Estoy votando para cerrar esta pregunta como fuera de tema porque "pulsaciones de teclas vim" básicamente significa ejecutar comandos de un IDE, como Ctrl - C o Ctrl - R en ST2. Esto no es codificación de ninguna forma.
Optimizador
3
@Optimizer Vim es un lenguaje completo (por ejemplo, mediante el uso de macros) con varias codificaciones de construcciones diferentes y el método principal para la edición se basa en verbos (acciones) y objetos (movimientos). Ya existe una página web popular para vim golf: www.vimgolf.com. (Pero estoy de acuerdo en que esta pregunta en particular es bastante aburrida)
Hjulle
1
@Optimizer: ¿hay un sitio SE más adecuado al que se pueda trasladar la pregunta? Dado el amplio lenguaje de scripting / macro de vim, algunas personas podrían considerarlo un lenguaje en sí mismo.
shearn89
1
@ shearn89 Hostil? De qué estás hablando ? PPCG es este sitio.
Optimizador
2
¿Por qué no se permitirían otros IDE también si puede escribir programas en su sistema macro? ¿Qué es lo que lo hace "no programar"?
Hjulle

Respuestas:

40

11 8 7 pulsaciones de teclas

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.

(gracias al pomo de la puerta por recordar Y = aa)

rorlork
fuente
3
Reemplazar yycon Ypara guardar un personaje.
Pomo de la puerta
2
Wow, ese rcomando es poderoso
solo el
10

16 15 14 pulsaciones de teclas

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

El enfoque directo: duplicar la línea, reemplazar todos los caracteres con #, copiar el resultado y pegarlo arriba.

Estoy contando Py :como una pulsación de tecla cada uno (en lugar de dos para Shift+ po Shift+ ;). Dicho esto, la pregunta especifica contar "comandos", donde no estoy seguro de cómo contar la sustitución.

Martin Ender
fuente
El mismo comentario que en la respuesta de @ rcrmn: Reemplace yycon Ypara guardar un personaje.
Pomo de la puerta
Creo que en realidad son 14 pulsaciones de teclas, ya que debe presionar Intro para ejecutar el comando de reemplazo
rorlork
@rcrmn Oh, buena captura.
Martin Ender