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中使 ...
随机推荐
- java环境变量、集成开发环境与使用两个类
1.集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面等工具.集成了代码编 ...
- Python--Get and Post
#python3 get and post 简单封装 from urllib import request, parse import json def RequestMethod(methodR, ...
- 【转】虚拟机下CentOS7开启SSH连接
在虚拟机(Vmware Workstation)下,安装了CentOS7,现在想通过SSH工具连接虚拟机中的CentOS7 1. 首先,要确保CentOS7安装了 openssh-server,在终 ...
- 在R语言中封装类读写sql操作工具类
1.mysql_helper.R # 使用RMySQL操作数据库 # 载入DBI和RMySQL包 library(DBI) library(RMySQL) mysql_con <- functi ...
- Django 翻译与 LANGUAGE_CODE
LANGUAGE_CODE[1] LANGUAGE_CODE 是 language code 的字符串.格式与 Accept-Language HTTP header 相同,不区分大小写,比如:zh, ...
- UNION WHERE
w条件语句的作用域. SELECT * FROM ( SELECT asin, LOWER(country) AS country FROM grab_amzreviews_asins UNION D ...
- Storm简介及使用
一.Storm概述 网址:http://storm.apache.org/ Apache Storm是一个免费的开源分布式实时计算系统.Storm可以轻松可靠地处理无限数据流,实现Hadoop对批处理 ...
- VC2005 warning C4819 消除方法
一. Warning C4819:The file contains a character that can ot be represented in the current code page(9 ...
- thinkphp curd的事务回滚 一看就会
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq1355541448/article/details/32314403 /** ...
- 18.出现Description Resource Path Location Type Unknown error merging manifest
原因是,依赖工程和主工程的manifest中的 <uses-sdk android:minSdkVersion="9" android:targetSdkVersion=&q ...