对于所有那些vim专家来说,这可能是一个基本的vim问题。
如果要删除特定的if语句及其右括号,但又不想删除表达式中的代码,如何通过一些键盘快捷键来实现?
例如:
if (a == 2) {
// do not delete this part.
for (int i = 1; i < 10; i++) {
// code
}
}
结果将是:
// do not delete this part.
for (int i = 1; i < 10; i++) {
// code
}
谢谢你的帮助。
使用if语句将光标移动到行的任何位置。这是命令的顺序(将在后面说明)
$%dd''.
说明:
$
转到该行的末尾(光标现在处于{
)。
%
转到匹配的花括号(或括号等)。游标现在在}
if语句中
dd
删除光标所在的行(}
现已删除)
''
转到最后一跳的行。最后一跳是我们使用的时候%
。(光标返回到if语句行)
.
重复上一个命令(dd
)。这将删除行(如果现在删除了语句行)
结果:
// do not delete this part.
for (int i = 1; i < 10; i++) {
// code
}
缩进将关闭,因此您可以使用gg=G
(正确缩进文件)修复它。
如果您大量这样做,则可以将其映射到.vimrc中的键,也可以将其映射为宏
使其成为映射:
.vimrc中的映射示例:
nnoremap <C-d> $%dd''.gg=G
每当按下control-d
(您可以选择任何键,只需替换<C-d>
),Vim就会运行这些命令,执行我之前解释过的操作,然后执行整个文件缩进。使用此命令时,请确保光标位于if语句行上,否则可能会导致意外的结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句