:123,133m. # moves lines from 123 to 133 below the cursor position.
虽然我喜欢它,但是键入长行号很麻烦,尤其是当文件中的行太多时。
有时,要移动的线相对靠近光标(但是我不想移动光标,猛拉,回到原处,粘贴!)。如果我可以使用相对数字,那将很棒,类似于我们在正常模式下的操作。就像说
将当前行上方10行的5行移动到此处
总之,如何在命令行模式(类似于普通模式)?
#1 楼
假设您的行数比当前行数高15到10行,则可以使用相对行号实现所需的内容::-10,-15m.
指定反向范围Vim要求您确认这是否是您真正想要的。为避免确认步骤,您可以在命令前键入
silent
,或仅指定转发范围::-15,-10m.
您可能希望
+
可以用于引用行详细帮助可以找到:
:help cmdline-ranges
#2 楼
您可以在以下范围内使用硬数字::200,300command
或相对数字:
:-27,+46command
或手动标记:
:'a,'bcommand
或自动标记:
:'[,'>command
或搜索:
:?foo?,/bar/command
或行快捷键:
:.,$command
或以上技巧的任意组合:
:?foo?,+46command
:'a,$command
...
#3 楼
您可以在任何Ex命令cp中使用相对寻址(例如.-10,.+3
)。 :help :range
。或者,看看我的LineJuggler插件;它提供了几个简短的映射来移动线或复制它们,所有这些映射都采用相对线偏移量
[count]
。
评论
但是我从未使用过此功能。我做15k d5j 10jP。
– joeytwiddle
2015年10月30日在9:24
区别在于15k,5j在命令模式下工作,答案中解释的是在插入模式下。因此,根据模式,我们可以选择合适的模式。插入模式下的命令通常是运行其他命令的选择标准。
– Soundararajan
19年8月25日在2:33