复制粘贴

简单命令

  • 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编辑器中, 只能通过鼠标中键进行粘贴.
下面是具体流程:

  1. 选择, 在vim中下面两种方式均可, 在其他软件中貌似只可以用鼠标选择

    • 在一般模式下按v或者 Ctrl + v, 进入可视模式, 此时就可以选择内容了, 选择完后按ESC退出可视模式
    • 使用鼠标直接选择(我试的是直接选择就行,不需要配置, 如果直接选择不行, 在.vimrc中加上set mouse=v )
  2. 粘贴

    • Shift + Insert(编辑模式下)
    • 鼠标中键
    • "*p(一般模式下)

如果要更加方便, 可以修改vim默认使用的寄存器改为选择缓冲区, 在.vimrc文件中加入下面的内容:

set clipboard = unnamed

这样就可以直接使用y, p和系统选择缓冲区进行数据交换了. 即选择完后直接按p即可


华丽的分割线, 下面补充几点:

  1. 如果设置y和p默认使用系统剪贴板, 则加入
    set clipboard=unnamedplus
    
  2. 在命令模式下输入 reg可以查看寄存器, 如果没有*+寄存器, 输入下面命令安装
    sudo apt-get install vim-gnome
    
  3. 使用示例
    // 全选
    ggyG  
    // 粘贴到其他地方
    鼠标中键
    
  4. 本节参考自 Vim复制粘贴探秘

results matching ""

    No results matching ""