Vim - окружить строку комментария символом комментария

27

Сегодня я понял, что мне часто нравится определять разделы в моем коде так:

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

Но это утомительно. Предполагая, что у меня есть такая строка:

# Helper Functions #

Какой самый короткий набор vimнажатий клавиш, чтобы обернуть его в #? Сдвиг не считается нажатием клавиши в этом вызове.

Тестовые случаи:

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
источник
3
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что "vim keystrokes" в основном означает запуск команд IDE, таких как Ctrl-C или Ctrl-R в ST2. Это не кодирование в любой форме.
Оптимизатор
3
@Optimizer Vim является полным языком Тьюринга (например, с помощью макросов) с несколькими различными конструкциями конструкций, а основной метод редактирования основан на глаголах (действиях) объектов (движениях). Уже есть популярная веб-страница для игры в гольф vim: www.vimgolf.com. (Но я согласен, что этот конкретный вопрос довольно скучный)
Hjulle
1
@Optimizer: есть ли более подходящий сайт SE, на который можно перенести вопрос? Учитывая обширный язык сценариев / макросов в vim, некоторые люди могут считать его языком сам по себе.
shearn89
1
@ shearn89 Враждебный? О чем ты говоришь ? PPCG это сайт.
Оптимизатор
2
Почему другие IDE не будут разрешены, если вы можете писать программы в их макросистеме? Что делает это «не программированием»?
Хюлле

Ответы:

40

11 8 7 нажатий клавиш

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.

(спасибо дверной ручке за напоминание Y = yy)

rorlork
источник
3
Замените yyна, Yчтобы сохранить символ.
Ручка двери
2
Вау, эта rкоманда сильна
justhalf
10

16 15 14 нажатий клавиш

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

Прямой подход: продублируйте строку, замените все символы на #, скопируйте результат и вставьте его выше.

Я считаю Pи :одним нажатием клавиши каждый (вместо двух для Shift+ pили Shift+ ;). При этом вопрос указывает на подсчет «команд», где я не уверен, как подсчитать подстановку.

Мартин Эндер
источник
Тот же комментарий, что и в ответе @ rcrmn: замените yyна, Yчтобы сохранить символ.
Ручка двери
Я считаю, что на самом деле это 14 нажатий клавиш, так как вы должны нажать Intro, чтобы выполнить команду замены
rorlork
@ rcrmn О, хороший улов.
Мартин Эндер