1. vim怎么和系统剪切板进行复制粘贴
参考来源:
vim 如何与外界粘贴复制
vim 里面粘贴复制实际上是在vim 缓冲区 存取数据
而系统的ctry+c ctry+v 是与系统剪贴板之间的交互
我也不知道我这样描述准不准确,反正大概就是这个意思:vim 粘贴复制和系统粘贴复制操作的不是同一个东西,所以系统和vim 之间不是那么容易直接使用的
但是,这个问题还是可以解决的
- 用vim 打开一个文件,然后执行命令:reg 查看是否有 + 或者 × 号 或者执行:version 命令 查看是否有+clipboard用vim 打开一个文件,然后执行命令:reg 查看是否有 + 或者 × 号 ;
或者执行命令查看是否有+clipboard:
vim --version | gerp "clipboard"
如果存在:
则可以使用 “+y 将vim 里面的内容复制到系统剪贴板或者 +p 将系统剪贴板里面的内容复制到vim 里面
如果不存在:
则需要安装vim-gnome, sudo apt-get install vim-gnome
然后就可以用以上命令粘贴复制
- 可以在
/etc/vim/.vimrc
里面设置 clipboard=unnamedplus 这样就可以直接使用 y p命令直接粘贴复制了; - (2019-03-04更新)在系统剪贴板复制后,在vim中可以使用
Shift+Insert
组合键来实现粘贴,嘿嘿嘿,竟然是在用shell跑impala脚本时学会的。
2. 整行移动
想在vim里实现类似eclipse中Alt+up/down
的功能,即整行上下移动。
我用到的命令为
:[start,end] move target_line
将start开始的范围内行,也可以是单独一行,移动到目标行之后,对,是之后。要是不清楚行数的,可以用:set nu
来显示函数。之后用:set nonu
就可以取消。
3. 批量替换
这个以前看到过,但是那天面试问我的时候,真没想起来,在此记录一下:
[addr] s / 源字符串 / 目标字符串 / [option]
s 代表替换的意思
[addr]是指要替换的范围:
- “start,end”行数范围
- “. ,$”从当前行到文件尾
- % 全文,与“1,$”效果一样
[option]是指替换的方式:
- 默认每行的一个匹配串
- g全局替换
- c 需要确认替换
例子:将全文中的that 换为this%s/that/this/g
将句尾的child换为children%s/child\(,.;!?\)/children\1/g
将多个空格换成一个空格%s/ */ /g
从上面也可以看出来,转义字符要用"\'转义。可以和正则表达式一样的匹配。