[英]Vim - move rest of line to new line above
如何得到
int lel = 123; // this is a comment
^
至
// this is a comment
int lel = 123;
最好是在插入模式下开始,并使用正确的缩进?
我目前的做法是Cc ld$ O Cc p
,但由于我的自动缩进不完美,插入的行根本没有缩进。
我认为有些编辑使用space+enter
或者其他东西(至少我认为我已经看过了)。
这是否可以在vim中默认使用?
仍然不是一个非常漂亮的答案,但假设光标是“^”在上面的位置,另一个选项是:
d 0 = : p u 输入
d0
删除直到行的开头。 =
对下一个议案的重新审视。 :pu
short for :put
Enter
以运行该命令。 我可能会用
DO<c-r>"
D
删除到行尾。 O
在插入模式下打开上面的行(使用正确的缩进)。 <cr>"
粘贴用D
删除的部分。
(以插入模式结束)
新答案:
d^o<c-u><esc>p
弄清楚了。 这是我早期尝试之一,但是以<esc>d^o<esc>p
,其中存在插入的行获得评论领导者的问题。 <cu>
解决了这个问题。
d^o<c-u><c-o>p
如果想要保持插入模式,这当然很有用。
这个解决方案有效,但Randy Morris的答案更好。
建议的按键顺序:
<esc>mpa<cr><esc>dd`pP`pa
(其中p
可以替换为任何其他标记。)
这意味着<esc>
进入正常模式, mp
标记当前位置为p
, a
进入插入模式, <cr>
打破该行并将注释放在下一行正确的缩进处, <esc>
进入正常模式, dd
删除line, `p
转到标记位置, P
将删除的行放在当前行之前, `p
转到标记位置, a
转到Insert模式。 为避免将手指伸出,请将其映射:
:inoremap <F2> <esc>mpa<cr><esc>dd`pP`pa
如果注释位于增加或减少缩进的行的末尾,则缩进将不正确。
更简单的序列,不适用于缓冲区的最后一行
要在不是缓冲区中最后一行的行上执行此操作,以下操作将执行此操作。 将光标放在第一个斜杠上,在插入模式下: <cr><esc>ddkPjA
。
<cr>
打破行并将注释置于正确的缩进处, <esc>
转到正常模式, dd
删除行, k
转到上一行, P
将删除的行放在当前行之前, jA
最后放在Insert中你开始时的模式。
要映射它:
:inoremap <F2> <cr><esc>ddkPjA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.