复制粘贴
简单命令
- y -- 复o制
- d -- 剪切, 和y的用法相同, 使用d替换下面的y就是对应的剪切命令
- p -- 粘贴
- yl -- 复制当前字符
- yh -- 复制当前字符的前一个字符
- ggyG -- 全选复制
- yy -- 复制当前行
- nyy -- 从当前行开始复制n行, 例如5yy就是复制5行
- yw -- 复制单词
- nyw -- 从光标所在的位置开始往后复制n个单词, 如2yw
- y$ -- 复制光标的位置到行尾
- ddp -- 交换上下两行的位置
- xp -- 交换前后两个字符的位置
复杂操作
快速复制文件的某些行
// 将9-15的内容复制到16行(以下两种均可), 16行以下的内容会自动下移
:9, 15 copy 16
:9, 15 co 16
// 将9-15 行内容剪切到16行(以下两种均可)
:9, 15 move 16
:9, 15 m 16
设置粘贴模式
在粘贴模式下, 粘贴的内容是不会自动缩进的, 因此不会改变粘贴内容的样式,
// 进入粘贴模式
:set paste
//退出粘贴模式
:set nopaste
在.vimrc中加入下面的代码, 设置切换粘贴"模式的快捷键为
set pastetoggle=<F3>
与其他文件进行交互
前面加上"+
(注意是有加号的)即可, "
表示使用寄存器标签, +
表示使用系统剪贴板.
// 复制5行到系统粘贴板
"+5yy
// 复制当前行到系统粘贴板
"+yy
// 复制全部内容到系统粘贴板
gg"+yG
// 粘贴当前内容
"+p
通过上面的操作我们可以将内容复制到系统剪贴板, 也可以从系统剪贴板中获得数据.
在Linux系统中除了系统粘贴板, 还有一个叫做选择缓冲区, 它和系统剪贴板不同的是选择缓冲区时是实时的,
当我们选择了内容之后, 内容就已经存在选择缓冲区里了, 这意味着如果我们使用选择缓冲区就不用再ctrl+c复制了,
只需用鼠标选择, 有了内容之后下一步就是粘贴了, 使用Shift
+Insert
或者鼠标中键就可以粘贴选择缓冲区的内容,
在vim中使用两种方式都可以, 但是在gedit等gui编辑器中, 只能通过鼠标中键进行粘贴.
下面是具体流程:
选择, 在vim中下面两种方式均可, 在其他软件中貌似只可以用鼠标选择
- 在一般模式下按
v
或者Ctrl
+v
, 进入可视模式, 此时就可以选择内容了, 选择完后按ESC退出可视模式 - 使用鼠标直接选择(我试的是直接选择就行,不需要配置, 如果直接选择不行, 在.vimrc中加上
set mouse=v
)
- 在一般模式下按
粘贴
Shift
+Insert
(编辑模式下)- 鼠标中键
"*p
(一般模式下)
如果要更加方便, 可以修改vim默认使用的寄存器改为选择缓冲区, 在.vimrc文件中加入下面的内容:
set clipboard = unnamed
这样就可以直接使用y, p和系统选择缓冲区进行数据交换了. 即选择完后直接按p即可
华丽的分割线, 下面补充几点:
- 如果设置y和p默认使用系统剪贴板, 则加入
set clipboard=unnamedplus
- 在命令模式下输入
reg
可以查看寄存器, 如果没有*
和+
寄存器, 输入下面命令安装sudo apt-get install vim-gnome
- 使用示例
// 全选 ggyG // 粘贴到其他地方 鼠标中键
- 本节参考自 Vim复制粘贴探秘