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#
########################################

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)


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.