如何从
获得int lel = 123; // this is a comment
^
到
// this is a comment
int lel = 123;
最好是在插入模式下开始,并使用正确的缩进?
我目前的做法是C-c l d$ O C-c p
,但由于我的自动缩进不完美,插入的行根本没有缩进。
我认为有些编辑使用space+enter
或者其他东西(至少我想我已经看过了)。
默认情况下这是否可以在vim中使用?
答案 0 :(得分:3)
仍然不是一个非常漂亮的答案,但假设光标位于" ^"如上所述,另一种选择是:
d 0 = : P û 输入
d0
删除直到行的开头。=
对下一个动议表示欢迎。:pu
:put
Enter
运行命令。答案 1 :(得分:3)
我可能会用
DO<c-r>"
D
删除到行尾。 O
在插入模式下打开上面的行(使用正确的缩进)。 <c-r>"
将使用D
删除的部分粘贴。
(以插入模式结束)
答案 2 :(得分:2)
新答案:
d^o<c-u><esc>p
想出来。这是我的早期尝试之一,但是以<esc>d^o<esc>p
的形式,其中存在插入的行获得评论领导者的问题。 <c-u>
解决了这个问题。
d^o<c-u><c-o>p
如果想要保持插入模式,当然很有用。
<小时/> 早期回答:
此解决方案有效,但Randy Morris的答案更好。
建议的密钥序列:
<esc>mpa<cr><esc>dd`pP`pa
(其中p
可以替换为任何其他标记。)
这意味着<esc>
进入正常模式,mp
将当前位置标记为p
,a
进入插入模式,<cr>
中断行并发表评论在正确缩进的下一行,<esc>
转到正常模式,dd
删除行,`p
转到标记位置,P
将删除的行放在当前行,`p
转到标记位置,a
转到插入模式。为避免将手指伸出,请将其映射:
:inoremap <F2> <esc>mpa<cr><esc>dd`pP`pa
如果评论位于增加或减少缩进的行的末尾,则缩进将不正确。
更简单的序列,不适用于缓冲区的最后一行
要在不是缓冲区中最后一行的行上执行此操作,以下操作将执行此操作。将光标放在第一个斜杠上,在插入模式下:<cr><esc>ddkPjA
。
<cr>
会中断该行并将评论置于正确的缩进位置,<esc>
转到普通模式,dd
删除行,k
转到上一行,{ {1}}将删除的行放在当前行P
之前,以最初处于启动时的插入模式。
要映射它:
jA