在熟悉 Vim 基本的 yy (yank current line) 和 p (paste) 的操作前提下,如果现在 Vim 中批量的移动某一些行,或者批量的复制从第 50 行到100 行到第200行后面,以我们之前的知识,可以先跳转到第 50 行 (:50),然后进入 行选择模式 (V) ,往下选择 50 行 (50j),然后再对选中的 50 行进行复制操作 (y),然后再移动到 200 行 (:200) 粘贴 (p)。
计算一下,从选择到复制,上面的操作可以划分为 5 个步骤,需要敲击 :50V50jy:200p
,当然上面的例子只是一个极端的例子,一般这样的需求也不大可能会出现。而如果有命令可以直接拷贝某些行,那么就不需要这么复杂,Vim 提供了整行的复制和移动命令。
:[range]copy {address}
copy 命令, range 表示拷贝的范围,行号范围, address 表示要拷贝到的地方,比如上面的例子就可以使用 :50,100copy200
来完成。
copy 命令可以简写成 :co
或者 :t
。
几个常用的格式:
:t5 拷贝当前行到第5行的下一行
:t. 拷贝当前行到光标下一行,相当于 `Yp` 或者 `yyp`
:t$ 拷贝当前行到文件最后一行
:'<,'>t0 拷贝选取的区域到文件开头,在 Visual 模式下选中文本,输入 `:`,再输入 `t0`
move 命令也和 copy 一样
:[range]m[ove] {address}
这里只是将拷贝,换为移动。
可以通过 :help copy
和 :help move
来查看帮助
快速选择行
遇到一个操作,比如在一个非常大的文件中,需要快速的选择 1000 行到 4500 行,那么可以用下面的方法快速选择。
方法一
- 使用
:1000
快速移动到 1000 行 - 行选择
V4500G
快速从当前行选择到 4500 行(包括)
G
Goto line [count]
方法二
- 使用
:1000
移动到 1000 行,然后按下 m + a,标记 a - 然后
:4500
移动到 4500 行,按下 V + \` + a 选择
方法三
- 使用
:1000
移动到 1000 行,然后按下 V - 然后输入 3500j 向下移动 3500 行