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

3
Я голосую, щоб закрити це питання поза темою, оскільки "натискання клавіш vim" в основному означає виконання команд IDE, наприклад Ctrl - C або Ctrl - R в ST2. Це не кодування в будь-якій формі.
Оптимізатор

3
@Optimizer Vim - це загальнозміцнююча мова (наприклад, за допомогою макросів) з декількома різними конструкціями, що кодують, і основний метод редагування заснований на дієсловах (діях) об'єктів (рухів). Вже є популярна веб-сторінка для vim golfing: www.vimgolf.com. (Але я згоден, що саме це питання є досить нудним)
Hjulle

1
@Optimizer: чи є більш підходящий сайт SE, на яке питання можна було б перенести? Враховуючи широкий сценарій / макро мову vim, деякі люди можуть вважати це мовою саме по собі.
shearn89

1
@ shearn89 вороже? Про що ти говориш ? PPCG - це цей сайт.
Оптимізатор

2
Чому б не було дозволено також інших IDE, якщо ви можете писати програми в їх макросистему? Що це робить його "не програмуванням"?
Hjulle

Відповіді:


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)


3
Замініть yyна, Yщоб зберегти персонаж.
Дверна ручка

2
Нічого собі, ця rкоманда є потужною
щойнополовина

10

16 15 14 натискань клавіш

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

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

Я рахую Pі :як один набір клавіш кожен (замість двох для Shift+ pабо Shift+ ;). Зважаючи на це, питання вказує на підрахунок "команд", де я не впевнений, як рахувати заміну.


Той самий коментар, що і у відповіді @ rcrmn: Замініть yyна, Yщоб зберегти персонаж.
Дверна ручка

Я вважаю, що насправді це 14 натискань клавіш, оскільки вам доведеться натиснути на Intro, щоб виконати команду заміна
rorlork

@rcrmn О, хороший улов.
Мартін Ендер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.