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的命令,例如ST2中的Ctrl-C或Ctrl-R。这不是任何形式的编码。
Optimizer

3
@Optimizer Vim是一种具有多种结构编码的图灵完整语言(例如,通过使用宏),并且主要的编辑方法基于动词(动作)和对象(动作)。vim高尔夫已经有一个受欢迎的网页:www.vimgolf.com。(但我同意这个特殊的问题很无聊)
Hjulle

1
@Optimizer:可以将问题移至更合适的SE网站吗?鉴于vim具有广泛的脚本/宏语言,某些人可能会认为它本身是一种语言。
shearn89

1
@ shearn89有敌意吗?你在说什么 ?PPCG是此网站。
Optimizer

2
如果您可以在其宏系统中编写程序,为什么也不允许其他IDE?是什么使它“没有编程”?
Hjulle

Answers:


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
替换yyY以保存字符。
门把手

2
哇,该r命令功能强大
刚刚

10

16 15 14击键

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

简便的方法:复制该行,将所有字符替换为#,复制结果并将其粘贴到上方。

我计数P:作为一个击键(用于代替两个每个Shift+ pShift+ ;)。话虽如此,问题指定要计算“命令”,而我不确定该如何计算替换。


与@rcrmn答案相同的评论:替换yyY以保存字符。
Doorknob

我相信实际上是14次击键,因为您必须按Intro来执行replace命令
rorlork 2015年

@rcrmn哦,很好。
Martin Ender
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.