vim编辑器
别折腾了,装neovim吧,兼容vim各种插件,体验也比vim好多了,不只是一个剪贴板的事
在mac系统下,使用vim编辑器已经几个月了,但是被一个问题一直困扰:vim不能使用系统剪贴板!而且我的问题很奇怪,周围同事和我一样的mac,系统也一样,同样用vim,他们能复制,我却不能。如果你和我一样,那可能我能帮到你。
我到现在还是没找出来我的vim工作下mac下不支持复制的原因,但是还是找出了一些办法解决此问题:
至于网上说的
检查
+clipboard
,.vimrc
加set clipboard=unamed
,使用xx寄存器等。
我一一试过,均无法解决此问题,找到的方法基本无效,无论系统自带的vi,vim,还是brew install的vim,又或者nvim,均无法使用复制功能,macvim支持复制,但是开发web的时候,开一个命令行终端,再开一个编辑器,显然不是一个好的选择,我决定还是继续使用vim。
后来一直谷歌,勉强接受了这个复制方法:
map <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>
上面的方法只能复制一行,类似的可以复制全文,这时候复制一段文本还是很难受,因为command(⌘)+ c是没有用的,通过鼠标在vim里右击,选择copy,可以复制一个单词。那要是复制任意一部分呢?
在不断谷歌之后,找到了一种尚可接受的方法:按住option,鼠标选择需要复制的区域,然后command(⌘)+ c,完美复制。
虽然完美复制,不过操作还是很繁琐好吗?
于是继续不断谷歌,终于在stackoverflow寻到更好的解决方法了,那就是在vimrc下加入这一行:
map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>
尝试过把map换成nnoremap,发现会失效,不过现在终于可以直接用Control+ c复制想要的内容了啊,visual下选中的内容,统统复制!
2018.4.13 16:30更新
发现之前的map 在刚开vim的时候使用会报错:
no write since last change for buffer
原因是对一个new buffer使用了:bdelete!
于是自己在原来的基础上改造了一下:
map <C-c> y:e ~/clipsongzboard<CR>P:w<cr>:w !pbcopy<CR><cr>:1,$d<cr>:w<cr><C-o><C-o>
当然,用惯了vim的我,觉得control + c这种键实在不方便,比如我使用的是<leader>+y
。另外,指令中的~/clipsongzboard
是根目录下的一个文件,被我用来当剪贴板了。
发表于 2018.04.13
© 自由转载 - 非商用 - 非衍生 - 保持署名