>

VIM复制粘贴大全,VIM使用系列

- 编辑:澳门新葡亰平台游戏 -

VIM复制粘贴大全,VIM使用系列

内容:

原文地址:

VIM使用系列:寄存器与复制粘贴缓冲区

 

内容:

 

用vim这么久 了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不 爽;上次论坛上有人问到了怎么在vim中使用系统粘贴板,印象里回复很多,有好几页的回复却没有解决问题,今天实在受不了了又在网上找办法,竟意外地找到 了,贴出来分享一下。

vim这么久 了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后再用vim打开编辑,真的不 爽;上次论坛上有人问到了怎么在vim中使用系统粘贴板,印象里回复很多,有好几页的回复却没有解决问题,今天实在受不了了又在网上找办法,竟意外地找到 了,贴出来分享一下。

现在已经可以熟练使用VIM的大多数基本命令、功能来进行项目代码的开发了,但是在项目的开发过程中,依然会感觉到一些操作效率比较低,比如通过h/j/k/l来进行光标的大范围移动这类操作,显然VIM提供了更高效的命令操作方式。最近经常需要完成的工作就是需要在代码之间来回的复制、粘贴、搜索和替换,常用的d/y/x/p命令已经显得不够,于是学习了一下VIM的寄存器功能,使用寄存器的内容缓冲功能可以极大地提高大量复制粘贴工作的效率。

  www.2cto.com  

如果只是想使用系统粘贴板的话直接在输入模式按Shift+Inset(粘贴)就可以了,下面讲一下vim的粘贴板的基础知识,有兴趣的可以看看,应该会有所收获的。
vim帮助文档里与粘贴板有关的内容如下:

 

如果只是想使用系统粘贴板的话直接在输入模式按Shift+Inset(粘贴)就可以了,下面讲一下vim的粘贴板的基础知识,有兴趣的可以看看,应该会有所收获的。

  1. vim有12个粘贴板,分别是0、1、2、...、9、a、“、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;

     

  2. 要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny(注意带引号)完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:

    • “号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;
    • +号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制vim中,需要在正常模式下按"+p;

     

  3. 要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。

寄存器类型

vim帮助文档里与粘贴板有关的内容如下:

注意:在我这里,只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器。安装vim.gnome使用apt-get install vim-gnome,然后vim自动会链接到vim.gnome。

VIM中有9中类型的寄存器,寄存器的主要功能就是缓存操作过程中删除、复制、搜索等的文本内容,通过 :help registers命令查看寄存器的详细帮助说明,这里对类型翻译如下:

 

下面是vim复制粘贴的基本命令:
yy复制游标所在行整行。或大写一个Y。 
2yy或y2y复制两行。 ㄟ ,请举一反三好不好! :-) 
y^复制至行首,或y0。不含游标所在处字元。 
y$复制至行尾。含游标所在处字元。 
yw复制一个word。 
y2w复制两个字(单词)。 
yG复制至档尾。 
y1G复制至档首。 
p小写p代表贴至游标后(下)。 
P大写P代表贴至游标前(上)。

 

vim有12个粘贴板,分别是0、1、2、...、9、a、“、+;用:reg命令可以查看各个粘贴板里的内容。在vim中简单用y只是复制到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容;

复制单个字符
首选进入正常模式(按ESC就行)
然后按v(指定粘贴板为"1v 引号不能少),进入visual方式,然后就可以移动方向键选中文本,然后按y,就拷贝完成,
如果你要从光标处开始复制 4 个字符,可以按 4yl (复制光标后的)("14yl)("110yl 后面10个字符),4yh(复制光标前的) ,就复制了4个字符到缓冲区中了,
按下来就可以用 p (指定粘贴板为"1v 引号不能少)命令随便粘贴了(1为指下粘贴板名)

未命名寄存器 ""  —— vim使用的默认寄存器,文本来源命令:d/c/s/x/y

要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny(注意带引号)完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下:  

10个数字命名寄存器 "0 - "9 —— vim缓存yank和delete行操作命令产生的文本

“号粘贴板(临时粘贴板)比较特殊,直接按y就复制到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容;

1个非行删除内容缓存寄存器 "- —— vim缓存delete操作在非行上时产生的文本

+号粘贴板是系统粘贴板,用"+y将内容复制到该粘贴板后可以使用Ctrl+V将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按"+p;

26个字母命名寄存器 "a - "z / "A - "Z —— 完全由用户指定内容的寄存器

要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。  

4个只读寄存器 ". "% "# ":  

注意:在我这里,只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器。安装vim.gnome使用apt-get install vim-gnome,然后vim自动会链接到vim.gnome。 

表达式寄存器 "= —— 使用VIM强大的表达式功能(从来没用过,一点不懂)

  www.2cto.com  

GUI选择寄存器 "* "+ "~ —— vim缓存在GUI中选择的文本

下面是vim复制粘贴的基本命令: 

黑洞寄存器 "_ —— 类似Linux中的/dev/null文件,只进不出,可用来滤掉影响默认寄存器的内容

yy复制游标所在行整行。或大写一个Y。  

最后搜索模式寄存器 "/ —— 缓存在vim中使用过的最后的搜索内容

2yy或y2y复制两行。 ㄟ ,请举一反三好不好! :-)  

这些寄存器很多,那怎么来查看它们的内容呢?使用VIM的 :registers命令或者短一些的 :dis命令,这两个命令会列出所有存在的寄存器的内容,然后你就可以选择指定寄存器的内容进行粘贴了。

y^复制至行首,或y0。不含游标所在处字元。  

 

y$复制至行尾。含游标所在处字元。  

寄存器使用

yw复制一个word。  

注意到上述寄存器的命名前面都有一个双引号,这就是使用他们的方式。

y2w复制两个字(单词)。  

 

yG复制至档尾。  

在Normal模式下操作d/y/x等命令时,通过在命令前面加入寄存器的名字如 "ayy,来将命令生成的内容放入指定的寄存器中,如上面的a寄存器中,而不是vim默认使用的""寄存器和"0寄存器。

y1G复制至档首。  

粘贴时,通过在p命令的前面加入寄存器的名字如 "ap,来将寄存器中的内容放入到光标所在的位置行上或下。

p小写p代表贴至游标后(下)。  

只读寄存器、搜索模式寄存器由VIM进行内容放入,用户只能使用他们的内容。

P大写P代表贴至游标前(上)。 

下面对个人觉得在开发中会比较有用和熟悉的一些寄存器进行具体的说明。

 

数字寄存器

复制单个字符 

"0 : 存放最近使用最多的y命令生成的文本内容,如果未显式指定其内容

首选进入正常模式(按ESC就行) 

"1 - "9 : 存放最近使用的d行操作命令生成的文本内容,如果未显式指定其内容,并在9个寄存器间对内容进行轮流存放,即有新的内容时,将"1的内容推到"2, 2到3,3到4 ...

然后按v(指定粘贴板为"1v 引号不能少),进入visual方式,然后就可以移动方向键选中文本,然后按y,就拷贝完成, 

字母寄存器

如果你要从光标处开始复制 4 个字符,可以按 4yl (复制光标后的)("14yl)("110yl 后面10个字符),4yh(复制光标前的) ,就复制了4个字符到缓冲区中了, 

如果你打算将一段内容进行多次长时间的来回拷贝,则最好使用字母寄存器,因为他们的内容被你修改后不会被VIM自动修改掉,而数字寄存器的内容随着新操作的使用会覆盖掉你指定的内容。

按下来就可以用 p (指定粘贴板为"1v 引号不能少)命令随便粘贴了(1为指下粘贴板名)

 

 

"a - "z : 每次指定这些寄存器之一时,产生的文本内容将覆盖掉寄存器中原有的内容

用vim这么久 了,始终也不知道怎么在vim中使用系统粘贴板,通常要在网上复制一段代码都是先gedit打开文件,中键粘贴后关闭,然后...

"A - "Z : 每次指定这些寄存器之一时,产生的文本内容将追加到寄存器中原有的内容之后,如果选项'cpoptions'的值中有>符号,则在追加同时会进行行分割,可以通过命令: :set cpo+=>设置。

只读寄存器

". : 包含最后在vim insert模式下插入的文本内容,也可以通过命令 . 重复上一次的操作。

"% : 包含当前文件的名字,方便在文件中插入文件名

"# : 包含当前可选择的文件名,指在当前会话中使用过的文件的名字

系统剪贴板

在系统中进行多个应用之间的内容拷贝时,会使用到系统剪贴板,这可以使用"*,"+寄存器来将内容粘贴到VIM中,他们也都是只读寄存器。除此之外,还可以使用键盘快捷键Shift+Insert来快速插入。

寄存器内容设置

除了上面介绍的通过在操作命令前添加寄存器号来指定寄存器的内容外,vim还提供了在命令行显式指定寄存器内容的命令 :[email protected],例如命令 :let @a = "vim registers blog", 表示将"a寄存器内容设置为右值。

 

粘贴模式

在vim中可以通过命令 :set paste来设置粘贴模式状态,此时粘贴的内容将可以保持原有的格式不变;通过命令 :set nopaste命令回到正常操作模式。

 

现在已经可以熟练使用VIM的大多数基本命令、功能来进行项目代码的开发了,但是在项目的开发过程...

本文由操作系统发布,转载请注明来源:VIM复制粘贴大全,VIM使用系列