vim寄存器与复制粘贴的实现
对于大多数在Ubuntu下使用vim作为常用编辑器的同学来讲,他们遇到的第一个比较大的麻烦来自于vim与外部应用的复制粘贴。
当然,愿意选择ubuntu以及vim的同学肯定是google好手。不幸的是,各大论坛告诉你,你可以在命令模式下使用类似"*p
或者"+p
的命令将已经复制或剪切到系统剪切板的外部内容粘贴进来,也可以使用类似"*y
或者"+y
的命令将vim中的内容复制到系统剪切板中。很多同学照此操作解决了这个问题,然而也有一些同学则悲剧的发现,这个方法没有任何作用。
这一切都可以从vim帮助中找到答案。
无论是vim内部抑或外部的复制([y]ank)、删除([d]elete)、粘贴([p]ut),在vim中都是借助registers(寄存器)实现的,vim共有9类寄存器:
- 无名(unnamed)寄存器:
""
,缓存最后一次操作内容; - 数字(numbered)寄存器:
"0 - "9
,缓存最近操作内容,复制与删除有别; - 行内删除(small delete)寄存器:
"-
,缓存行内删除内容; - 具名(named)寄存器:
"a - "z
或"A - "Z
,指定时可用; - 只读(read-only)寄存器:
":, "., "%, "#
,分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名; - 表达式(expression)寄存器:
"=
,只读,用于执行表达式命令; - 选择及拖拽(selection and drop)寄存器:
"*, "+, "~
,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用; - 黑洞(black hole)寄存器:
"_
,不缓存操作内容(干净删除); - 模式寄存器(last search pattern):
"/
,缓存最近的搜索模式。
上面的说明为简要概述,并不完全准确,详细说明须参考手册:
1
|
:help copy-move |
无图形界面的vi或vim下可用的寄存器只包括{a-zA-Z0-9.%#:-"}
,显然,这里面没有包含上面提到的"*
或者"+
等选择及拖拽存器。
由此可见,实现vim与外部应用相互复制、粘贴的关键在于系统剪切板对于vim是否可用。查看vim剪切板是否可用的命令为vim --version
,下面是我的系统下面的结果(我只保留了xterm_clipboard
一项):
1
2
3
4
5
|
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr 16 2010 12:47:47) 包含补丁: 1-330 编译者 buildd@ 巨型版本 无图形界面。 可使用(+)与不可使用(-)的功能: -xterm_clipboard |
对于非GUI版本的vim,剪切板是不可用的,解决方案很简单,安装一下就是了:
1
|
sudo apt-get install gvim |
然后再安装
vim-gnome:
sudo apt-get install vim-gnome
vim寄存器与复制粘贴的实现的更多相关文章
- vim全选复制粘贴
感谢来源:http://blog.sina.com.cn/s/blog_6e70abbd0100zbk9.html ggVG #gg: 光标跳转到首行,在vim才有效,vi中无效 #V 是进入Visu ...
- Vim 下的复制/粘贴/剪切/撤销
一 了解 vim 有 12 个粘贴板,分别是 0.1.2.....9.a.“.+:用 :reg 命令可以查看各个粘贴板里的内容.在 vim 中简单用 y 命令只是复制到 "(双引号)粘贴板里 ...
- vim不用鼠标复制粘贴
第一种方法(只能复制行): 在当前行3yy(表示复制3行,多行同理),然后鼠标移到需要粘贴的位置,按p,即可粘贴 第二种方法(无限制): 按v进入visual模式,移动光标(推荐使用hjkl,用熟后比 ...
- [转]Vim 复制粘贴探秘
Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim ...
- Vim 复制粘贴探秘
Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情.每当学会了vim的一个新功能,就会很大地提高工作效率.有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim ...
- vim 的复制粘贴命令,以及使用寄存器来存放要复制的内容;
一,y(yanks)复制,p(paste)粘贴: yy 复制当前行,2yy,复制2行: Y 复制整行:Y=yy; p 粘贴到光标后: P 粘贴到光标前: 注意vim会知道你复制内容的是整行还是一个矩 ...
- VIM复制粘贴大全!
原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...
- 在LINUX终端和VIM下复制粘贴
http://www.tinylab.org/linux-terminal-and-paste-copy-under-vim/ 在GUI界面下,我们可以很自由的复制粘贴.但是在字符界面下,我们不得不用 ...
- vim的复制粘贴小结(转)
原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry 内容: 用vim这么久 了,始终也不知道怎么在vim中使 ...
随机推荐
- Struts2中的类型转换与复杂对象配合使用
form 标签可以被映射到一个属性的属性 manager.java package com.atguigu.struts2.model; import java.util.Date; public c ...
- netty/example/src/main/java/io/netty/example/http/snoop/
netty/example/src/main/java/io/netty/example/http/snoop at 4.1 · netty/netty https://github.com/nett ...
- 设计模式之——Builder建造模式
Builder模式又叫建造模式,是用于组装具有复杂结构的实例的模式. 示例程序是编写一个文档,并且写入到文件中,该文档具有以下结构,含有标题,字符串,一些条目. Builder抽象类,为建造模式的核心 ...
- IE8数组不支持indexOf方法的解决办法
在使用indexof方法之前加上以下代码就可以了. if (!Array.prototype.indexOf){ Array.prototype.indexOf = functio ...
- Kafka简介及使用
一.Kafka概述 离线部分: Hadoop->离线计算(hdfs / mapreduce) yarn zookeeper->分布式协调(动物管理员) hive->数据仓库(离线计算 ...
- 【numpy】
ndarray在某个维度上堆叠,np.stack() np.hstack() np.vstack() https://blog.csdn.net/csdn15698845876/article/det ...
- AttributeError: 'NoneType' object has no attribute 'append'
大多数是这个原因: gongzi = [] for p in [1,2,3]: gongzi = gongzi.append(p) #改为如下即可 gongzi = [] for p in [1,2, ...
- PAT 1078 Hashing[一般][二次探查法]
1078 Hashing (25 分) The task of this problem is simple: insert a sequence of distinct positive integ ...
- The Jordan 3lab5 is the perfect sneaker for you
The Jordan 5 3Lab5 Metallic Silver returns inside a mind-turning new iteration for that Spring/Summe ...
- 取得选中Grid的数据
var MergeAction = new Ext.Action({ text: '合并(选中两行)', handler: function () { if (grid.getSelectionMod ...