Vim - rode a linha de comentário com o caractere de comentário

27

Hoje percebi que geralmente gosto de definir seções no meu código da seguinte maneira:

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

Mas é tedioso fazer isso. Supondo que eu tenho uma linha como esta:

# Helper Functions #

Qual é o menor conjunto de vimpressionamentos de teclas para envolvê-lo em um #? A mudança não conta como pressionamento de tecla neste desafio.

Casos de teste:

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
fonte
3
Estou votando para fechar esta questão como fora de tópico, porque "pressionamentos de tecla vim" basicamente significam a execução de comandos de um IDE, como Ctrl - C ou Ctrl - R no ST2. Isso não está codificando de nenhuma forma.
Optimizer
3
O @Optimizer Vim é uma linguagem completa de turismo (por exemplo, usando macros) com vários códigos de construção diferentes, e o método principal de edição é baseado em verbos (ações) e objetos (movimentos). Já existe uma página da web popular para o golfe vim: www.vimgolf.com. (Mas eu concordo que esta questão em particular é muito chato)
Hjulle
1
@ Optimizer: existe um site SE mais adequado para o qual a questão possa ser movida? Dada a extensa linguagem de script / macro do vim, algumas pessoas podem considerá-lo uma linguagem em si.
shearn89
1
@ shearn89 Hostil? Do que você está falando ? PPCG é este site.
Optimizer
2
Por que outros IDE não seriam permitidos também, se você pode gravar programas em seu sistema macro? O que faz com que "não programe"?
Hjulle

Respostas:

40

11 8 7 pressionamentos de tecla

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.

(obrigado à maçaneta da porta por lembrar Y = yy)

rorlork
fonte
3
Substitua yypor Ypara salvar um personagem.
Maçaneta
2
Uau, esse rcomando é poderoso
justhalf 27/04
10

16 15 14 pressionamentos de tecla

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

A abordagem direta: duplique a linha, substitua todos os caracteres por # , copie o resultado e cole-o acima.

Estou contando Pe :como uma tecla cada (em vez de duas para Shift+ pou Shift+ ;). Dito isto, a pergunta especifica contar "comandos", onde não tenho certeza de como contar a substituição.

Martin Ender
fonte
Mesmo comentário da resposta de @ rcrmn: Substitua yypor Ypara salvar um personagem.
Maçaneta da porta
Eu acredito que são 14 teclas pressionadas, pois é necessário pressionar Intro para executar o comando replace
rorlork
@ rcrmn Oh, boa captura.
Martin Ender