Re: [讨论]在vim中合理的使用Ctrl+C、Ctrl+X、Ctrl+V操作系统(全局)剪贴板
发表于 : 2010-01-25 20:16
习惯了,一时半会改不了 

c-c, c-x, c-v 并不是 linux 里面的通用粘贴剪切操作,这个是当年微软发明的。发明这个操作的主要目的是为了右手使用鼠标的时候无需把手拿回到键盘上。adagio 写了:用vi以来最感觉不爽的就是对系统剪贴板的使用了
众所周知,Ctrl+C、Ctrl+X、Ctrl+V这三个按键,明明在windows和linux里都是通用的粘贴、剪切、复制操作,而且都是针对全局剪贴板的,可是vi偏不这样
大家说说这样好不好?有没有什么缺陷?
首先我承认我对于软件之类的也有点宗教信仰的味道,mswim.vim绝对是画蛇添足的败笔,用那个就丢掉了vim很多好的特性,忘了MS吧Strange 写了:很早之前我就发起过呼吁,推荐大家使用mswin.vim中的设置。绝对是利大于弊。
粉笔头 写了:首先我承认我对于软件之类的也有点宗教信仰的味道,mswim.vim绝对是画蛇添足的败笔,用那个就丢掉了vim很多好的特性,忘了MS吧Strange 写了:很早之前我就发起过呼吁,推荐大家使用mswin.vim中的设置。绝对是利大于弊。
摘自 vim 7.3.47 版的 mswin.vim,全部就这么多了。" CTRL-X and SHIFT-Del are Cut
" CTRL-C and CTRL-Insert are Copy
" CTRL-V and SHIFT-Insert are Paste
" Use CTRL-Q to do what CTRL-V used to do
" Use CTRL-S for saving, also in Insert mode
" CTRL-Z is Undo; not in cmdline though
" CTRL-Y is Redo (although not repeat); not in cmdline though
" Alt-Space is System menu
" CTRL-A is Select all
" CTRL-Tab is Next window
" CTRL-F4 is Close window
原来有,改变功能的映射:CTRL-Q
CTRL-S
Alt-Space
CTRL-Tab
CTRL-F4
可以发现,功能被改动的映射仅仅只有6个键,然后这些键原来都是代表什么意思呢?这里简单解释下CTRL-X
CTRL-C
CTRL-V
CTRL-Z
CTRL-Y
CTRL-A
对上面6个大概又可以进行简单的分类CTRL-X 光标数字-count
CTRL-C break
CTRL-V 列模式
CTRL-Z background
CTRL-Y 屏幕向上滚动1行
CTRL-A 光标数字+count
有可能常用的功能:CTRL-C break 除非在很老的终端中,不然c-c本身也已经失去了中断vim的作用,"Type :quit<enter> to quit vim"
CTRL-Z background 同上
这两个映射可以说都是传统终端下编辑器的遗产,即使真的要使用,也可以用 :quit, :shell 这些操作来代替。
CTRL-Y 屏幕向上滚动一行 CTRL-E CTRL-Y是一对,虽然带有主观,但是在vim众多映射中,这两个属于既不方便记,又不方便用的了吧。(通常滚动屏幕会用CTRL-U(p) CTRL-D(own))
分析最后发现,可能用的功能也就3个CTRL-V 列模式
CTRL-X 光标数字-count
CTRL-A 光标数字+count
喜欢说这些是 ms 操作的同学,可以对比一下 linux 下其他有输入框,有tab的软件,gedit, mousepad, 甚至firefox, pidgin一类,都使用相近的快捷键常用的文本快捷键:
CTRL-A
CTRL-C
CTRL-X
CTRL-V
常用的窗口类快捷键
CTRL-Tab
CTRL-F4
常用的保存快捷键
CTRL-S
undo/redo快捷键
CTRL-Z/CTRL-Y
窗口最大化
Alt-Space
插入模式的 C-V 我会用到的,用来输入特殊字符。可视模式下我用 C-C 来复制选区。adagio 写了: 这下好了,总算找到一个老外的设置,基本解决了我的问题,原因如下:
Ctrl+V在插入模式里是用来输入十、八、十六进制值数字的,对我没用,干脆影射到全局剪贴板的粘贴,使用后感觉不错
然后自己再扩展一下
Ctrl+X、Ctrl+C两个按键在visual模式里根本没用(Ctrl+C在visual模式里效果等同于Esc),干脆分别影射到全局剪贴板的剪切和复制
这样在插入模式里我可以用Ctrl+V粘贴全局剪贴板内容
在visual模式里我可以用Ctrl+X--->剪切选定内容到全局剪贴板,Ctrl+C--->复制选定内容到全局剪贴板
同时又达到最小限度的影响vi原有按键功能的目的,挖哈哈哈~~~~~
大家说说这样好不好?有没有什么缺陷?
我在 X 这层将它们互换了。以后准备直接设置内核,写到 rc.local 里去,免得终端和自己开的 X 用不了。win 下可以直接修改注册表的,但二进制的数据,我不会修改……风间星魂 写了:win下用autokey互换了esc和大小写锁定,在linux直接gnome设置互换。这下vim爽多了。代码: 全选
Esc::CapsLock CapsLock:: Esc
ctrl+c也可以空出来了
所以实际上我很少使用剪贴板的haichang417 写了:在选中文字的时候就已经复制了,找个地方按鼠标中键就粘贴了啊。
因为用得少,所以我可以接受普通模式 "*p/"+p,插入模式 <C-R>* / <C-R>+adagio 写了: 如果你设置了mouse=a,用中键粘贴你就必须先定位鼠标指针;除非你禁用鼠标,这不是你想要的效果吧?
控制台下也没有X下那个剪贴板了。我一般是用screen的剪贴板,或者用鼠标选中+中键粘贴。adagio 写了: 再说了,在控制台下用vim你咋整?
我讨厌打字时手离开主键区,所以插入/命令模式下我设置了bash式的按键fzq5012 写了: 我承认一开始没看清,但是还是认为C-v的设置不好,用默认的S-insert不是更好?
<C-C> 在终端太常用了,所以偶尔会在 Vim 里也用下,中断Vim正在执行的脚本。Strange 写了: 几乎不使用的功能:CTRL-C break 除非在很老的终端中,不然c-c本身也已经失去了中断vim的作用,"Type :quit<enter> to quit vim"
CTRL-Z background 同上
这两个映射可以说都是传统终端下编辑器的遗产,即使真的要使用,也可以用 :quit, :shell 这些操作来代替。
CTRL-Y 屏幕向上滚动一行 CTRL-E CTRL-Y是一对,虽然带有主观,但是在vim众多映射中,这两个属于既不方便记,又不方便用的了吧。(通常滚动屏幕会用CTRL-U(p) CTRL-D(own))
<C-Q> 不是很好按,而 <C-X> 和 <C-A> 我经常用来调整数值的,不用进去插入模式,也不用准确定位光标位置~Strange 写了:
有可能常用的功能:分析最后发现,可能用的功能也就3个CTRL-V 列模式
CTRL-X 光标数字-count
CTRL-A 光标数字+count
但是其中
CTRL-V 列模式 提供了 CTRL-Q 替代。
剩下两个
CTRL-X 光标数字-count
CTRL-A 光标数字+count
这两个映射,是真真正正可以说缺少了的映射(虽然也不算常用),如果是在喜欢这两个映射的话,完全可以在 source mswin.vim 之前 noremap 一下它们。
<C-S> 我映射到保存(:up)命令了,<C-Tab> 到了新建标签页,但因为不好按所以没怎么用过。<C-Y> 上面已经说过了,<C-Z> 是挂起。全选我用 ta (因为我不常用 t 移动位置)。剪切操作在我大脑中已经成为历史了(在Vim之外的地方我会用鼠标拖动文本)。Strange 写了: 接下来我们看 mswin.vim 带来了什么喜欢说这些是 ms 操作的同学,可以对比一下 linux 下其他有输入框,有tab的软件,gedit, mousepad, 甚至firefox, pidgin一类,都使用相近的快捷键常用的文本快捷键:
CTRL-A
CTRL-C
CTRL-X
CTRL-V
常用的窗口类快捷键
CTRL-Tab
CTRL-F4
常用的保存快捷键
CTRL-S
undo/redo快捷键
CTRL-Z/CTRL-Y
窗口最大化
Alt-Space
虽然这些快捷键的绑定,是从 ms 那里来的,但是我们能看到,越来越多的软件支持了这些键绑定。这包含了软件作者,甚至成千上万用户的习惯。
看到这里的同学们,还那么反对 mswin.vim 吗?
Alt 最让我郁闷的是终端下发送 ^],和GUI下不一致不说,而且按Esc后还要等一秒。lainme 写了: 有些键盘上alt键也比较顺手,映射成alt的也不错