终于掌握vim的寄存器和系统剪贴板的使用了- 要安装vim-X11包
vim的系统剪贴板
vim的 加号寄存器 "+ 是和系统剪贴板 相关联的. 加号寄存器和系统剪贴板之间的内容, 可以互相切换.
- 要把 加号寄存器中的内容, -> 放到/转移到系统剪贴板中, 使用的是 "+y, (即: "+ => clipboard)
- 而要把 系统剪贴板 中的内容, 放到/转移到 加号寄存器, 或者是直接放在vim的光标处, 使用的是 "+p , 或者 "+gp. ( 即: clipboard => "+)
xdebug无所谓服务器端还是 客户端, 因为xdebug是php的一个 扩展extension, 一个php的so模块.
他会在客户端浏览器连接时, 会自动监视. 并启动调试.
Ascii的控制字符, 是指 0~ 31, 和127 表示的字符, 共33个"不可见字符"
其中0, 是表示NUL, null字符.
其他控制字符, 可以用ctrl+一个字母 (A ~ Z) 或符号来表示, 比如: ctrl+J: ^J, 就表示换行符 LF (line feed)
vim中几个常见的不可见字符: ^J 0x0A, LF 表示换行, ^M表示回车, ^H表示退格 BS, 0x08, ^I表示水平制表符HT, 0x09, ^@ 表示 NULL.
vim的寄存器?
寄存器 用引号来表示, 引号表示引用, 表示 寄存的意思. 查看寄存器用:reg命令
"", 两个引号, 表示的无名 unnamed register, 存放最后一次操作的内容(可能是复制的,也可能是删除的内容), 而且可以是行内的内容, 也可以是 包含换行在内的 "整行内容"
"0 到 "9 共10个数字寄存器, 其中 "0 缓存最近一次复制的内容. "1到"9 缓存最近9次的删除内容, 但是数字寄存器都要求是"整行"的内容. 即一定要包含^J
具名寄存器(跟前面的无名寄存器相对应), 即从 "a 到 "z 到 "A, 到 "Z, 我们操作存放内容的时候, 主要就是使用这些 "具名"寄存器.
只读寄存器: ": 表示最后依次执行的命令, "% 表示当前文件名
行内(删除)寄存器, "- 缓存的是 在一行的内部 删除的内容.
行内插入寄存器 ". 其中点号表示插入增加的意思. 他会把期间press的任何键都记录下来,包括BS ^@等退格, 回车等都作为符号记录下来.
模式寄存器 "/ 缓存的是最近依次进行模式搜索的内容.
黑洞寄存器 "_ 表示彻底删除内容, 不进行缓存.
vim中的p命令, 表示的是put, 放置, 即粘贴的意思. 是从 寄存器 unnamed 中 进行 put. p和gp的意思都是粘贴, 不同的是 p是在当前光标前进行粘贴, gp是 在粘贴后, 将光标移动到粘贴内容之后.
选择及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI选择文本,可用于与外部应用交互,使用前提为系统剪切板(clipboard)可用, 使用vim --version来检查. vim --version | grep 'clipboard'
选择与拖放寄存器, 共3个, 即: 星号寄存器"* 加号寄存器"+ 约等于寄存器"~
表示最后一行, 在不同的模式下要用不同的符号:
在normal下, 最后一行, 用G表示, 而$表示的是 当前行的末尾
在命令模式下, 最后一行,就是用$ 表示的.
yy命令可以在normal下使用, 但是在命令模式下就不能用yy命令, 会报错说没有yy这个命令, 这时应该用 y命令
要创建具名寄存器, 可以有两种方式
一种是在normal模式下, 先用v/V命令在visual模式下, 选择好内容, 然后 在normal下, 用 "ay 中间的a可以是其他任何一个 寄存器名称 , 包括加号寄存器等.
另一种是, 在命令模式下, 直接用 冒火命令, :10,15y"z, 即将10,15行的内容复制到z寄存器中. 这个里面 的引号 可以不用, 但是如果省略的话, y后面一定要有空格, 即: :10,15y z
vim怎样才能使用 系统剪贴板?
你可以卸载vim , 然后下载源码, 重新编译安装, 配置时使用 ./configure --with-features=huge 就可以使用加号寄存器和系统剪贴板了
但是, 不必这样麻烦, 可以安装一个vim的 增强包.
但是, 不是vim-common(各个vim版本共用的库), 也不是什么vim-gui, 而是/而且只需要 安装 vim-X11(大写的X), 这个是为了补充/vim为X graphic system使用的.
安装vim-X11,会 安装一个 vim的图形程序,即 gvim, 但是这个一般都不习惯使用.(gvim也同样可以使用vim的各种插件,包括 NERDTree等.)
同时, 会给vim添加 加号寄存器, 从而可以使用系统剪贴板.
vim-X11添加一些附加的命令, 比如 evim, gvim等, 最重要的是这个 vimx命令, 他就是 在vim的基础上增加x系统的支持. 即vimx 是命令行下的vim支持系统剪贴板的版本.
所以只要在 gnome-terminal下, 运行vimx就能使vim支持 加号寄存器.
使用 rpm -ql 'vim-X11'可以查看 该软件包安装了哪些增强命令 就是下面这个图中的 vimx命令!

使用系统剪贴板的过程:
fc23自带的, 最基本的版本是vi (即vim -v就是 vi) ,
然后安装 vim-enhanced, 就得到基本增强的vim版本, 但是还不能使用系统剪贴板和加号寄存器.
然后, 要安装,vim-X11, 就得到 gvim软件, 和 vimx的 +clipboard 和 +xterm-clipboard版本.
为什么 不能创建大写字母的寄存器?
#### 定义vim的映射leader 是使用 `let mapleader=',' 或者 let mapleader=';'` leader键可以是逗号或分号 . 使用leader是 用 `` 的方式
注意gnome-terminal下的复制/粘贴和 vimx本身内部的 复制和粘贴的不同.
- 前者总是在系统剪贴板上. 而后者是在vim的 加号寄存器 和 系统剪贴板之间 进行转移/转换
- 前者会将界面内的所有的内容(包括vim的行号)都复制下来,而后者只会 操作文档本身里面的内容. 不包括行号.
"*和"+的区别?
在启用了 +clipboard 的情况下, 星号寄存器表示的是 被选择的内容. 这个内容可以是你用鼠标选择的, 也可以是你用 visual模式下选择的.
但是, 加号寄存器只能将你 在 visual模式下 选择的内容 复制到 系统剪贴板上, 你用鼠标拖选 的内容 不能 复制到系统剪贴板上??
所以, 最重要的是, 在设置快捷键的时候, 要注意映射模式.
- 如果是复制到系统剪贴板, 要设置vmap, 或者是设置成 map !! 因为, 你要复制到系统剪贴板, 需要在visual模式下, 你用nmap在normal模式下就无效. 其中的map 会自动检查, 在vmap下有效, 在nmap下无效!
- 反之, 如果是从系统剪贴板粘贴到vim中, 则要设置成 在nmap下粘贴, 或者甚至可以在 insert模式下直接粘贴. 但是不能设置成vmap, 因为你在 粘贴 系统剪贴板的内容到vim的时候, 不可能是vmap visual模式. 通常还是normal模式或 insert模式
所以, 最后的有效配置, 正确配置是:
"在visual模式下,复制到系统剪贴板上.
vmap <leader>c "+y
"在nmap或insert 模式下将系统剪贴板上的内容put到vim中
nmap <leader>v "+gp
nmap <leader>gv "+p
imap <leader>v <esc>"+gp
imap <leader>gv <esc>"+p
vim的minibuffer中, 是保持 "不同"文件的缓存. 如果是同一个文件, 不管你开多少个窗口, 都认为 只有一个 文件缓存.
即使用vimx启动, 仍然不能使用鼠标拖动 窗口的 大小, 只有在 gvim中 才能使用鼠标拖动窗口大小.
为了能够用常用的vim命令 来运行 vimx, 可以在.bashrc中, 加上一个 alias: alias vim=/usr/bin/vimx
注意 虽然安装了 vim-X11, 但是 /usr/bin/vim 和 /usr/bin/vimx 实际上还是 两个互补相关的 应用, 在原来的vim中, 仍然并不支持 剪贴板, 查看 --version | grep 'clipboard', 仍然还是没有启用剪贴板的特性.
只有 使用 vimx 才能启用 +clipboard, 和 +xterm_clipboard 特性.
估计 vimx启动时, 首先是去调用 了 /usr/bin/vim, 然后 再加载 了 / 添加了 加号寄存器的特性.
终于掌握vim的寄存器和系统剪贴板的使用了- 要安装vim-X11包的更多相关文章
- vim复制内容到系统剪贴板
vim提供了y键盘操作用于复制文本,但是复制之后的文本位于当前窗口的缓冲区中,不在系统剪贴板中,这给跨程序文本拷贝代码很来很多麻烦.搜索发现,可以使用]y指令快速将选定的文本复制到系统剪贴板中. 顺便 ...
- vim复制粘贴到系统剪贴板
一般来讲,如果你没有在.vimrc中配置过相关的信息的话,可以考虑下面的方法.系统环境 Ubuntu 14.04 LTS. 安装与使用 首先需要安装一个vim-gtk 命令$sudo apt-get ...
- vim的复制粘贴(包括系统剪贴板)
1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...
- 【vim小小记】vim的复制粘贴(包括系统剪贴板)
1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...
- VI/VIM 无法使用系统剪贴板(clipboard)?(Ubuntu&Mac OS X已解决)
在 Ubuntu/Mac OS X 中使用VI/VIM时,发现无法使用系统的剪贴板. Ubuntu 上网一查,原来是少装了几个东西. 使用如下命令,安装相关的包.安装成功后,就可以使用系统剪贴板了. ...
- VI/VIM 无法使用系统剪贴板(clipboard)
来自: http://www.bubuko.com/infodetail-469867.html vim 系统剪贴板 "+y 复制到系统剪切板 "+p 把系统粘贴板里的内容粘贴到v ...
- 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理
今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...
- 【转】无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理
今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...
- docker下安装vim
进入docker内部后,发现之前的vim命令用不了了,这个时候就需要重新安装vim,具体步骤如下: 更新源 apt-get update 安装vim apt-get install vim
随机推荐
- quartz demo01
1,Pom.xml 加入:quartz-2.1.7.jar <dependency> <groupId>org.quartz-scheduler</groupId&g ...
- arcgis api for javascript 添加图层时设置标注,自定义符号
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <meta nam ...
- python django简单的登陆实现
实现方法: 1,可以先定义一个基础的页面访问路径 例如:http://127.0.0.1:8000/index/ 定义index路径 在urls urlpatterns = [ url(r'^ind ...
- Discuz目录结构
/source/class/task站点任务内置包 task_avatar.php头像类任务 task_blog.php发表日志任务 task_connect_bind.phpQQ 帐号绑定任务 ta ...
- poj1741 树上的分治
题意是说给了n个点的树n<=10000,问有多少个点对例如(a,b)他们的之间的距离小于等于k 采用树的分治做 #include <iostream> #include <cs ...
- RobotFrameWork(十三)RobotFramework与loadrunner性能测试结合(基于Remote库)
一般我们进行完功能测试,都需要进行下性能测试,那么这章我来介绍下,RobotFramework与loadrunner性能测试的融合,即运行完自动化功能测试,借助RobotFramework的Remot ...
- arc 093 C – Traveling Plan
题意: 给出横坐标上一系列的点,一个人从0出发按照下标顺序访问每一个点,再回到0点. 问每次如果去掉一个点,那么访问的距离变为多少. 思路: 去掉这个点,那么就减去这个点到上一点到这一点的距离,减去这 ...
- 输出列表为字符串,并在最后一个值前加上and 4.10.1
逗号代码: def test4(lis): str1='' for i in range(len(lis)-1): str1+=(str(val[i])+', ') str1+=('and '+str ...
- Shell变量相关
li@ubuntu:~/test$ vi test.sh li@ubuntu:~/test$ cat test.sh #!/bin/bash #shell变量不加引号;加单引号;加双引号都行 url= ...
- python 网页cookie的使用
网页cookie的使用 Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) # opener的概念当你获取一个URL你使用一个opener(一 ...