中文编辑怎么快起来。五笔,双拼? No No 我们要用vim!
但是vim作为一个小众纯文本编辑器,如何能应用到广泛的中文编辑场景中呢?
我们首先需要解释为什么vim能加快编辑。可以这样解释,vim的核心就是懒:懒得移动右手去握住鼠标(当然用鼠标没什么问题的),懒得移动右到小键盘区的方向键。为了满足这些懒人愿望,人们发明了模式编辑:在插入模式(记事本里输入)之外,增加了一个模式来专门移动光标和进行编辑操作,这个时候的普通按键事件被翻译成编辑指令,或者移动光标,或者复制剪切;我们称这个模式为常规模式。而模式切换异常简单:插入模式->常规模式用esc,普通模式->插入模式则用i/a/o/s等命令。如此简单的改变,却带来了非常不一样的体验,最后吸引粉无数。
而要把vim用到我们中文世界,需要面对两个问题: 首先,中文输入场景多元化;其次,vim命令和中文输入法的冲突。
极客的世界在于折腾,高效的工作在于专注工作内容。那有没有简单易行易懂的方式,应用vim模式编辑到我们繁杂的中文编辑场景中呢?
当然有的,GlobalVim( 一个让Windows变成 vim-Windows的辅助输入软件)。使用GlobalVim后,不管写文章,写邮件,还是写报告,随时随地都能用vim方式输入!
GlobalVim微软商店链接
读者可从上面链接直接下载最新版本,然后对照下面说明进一步了解和尝试。
vim号称编辑器之神
在不编程的情形下,要应用vim到我们的工作中,只需要花10分钟了解基础即可。
概念篇
vim的与众不同编辑方式是所谓的模式编辑。上文已经提及,vim模式编辑除了正常直观的插入模式,可以理解为仅仅多出了一个常规模式。而我们只要使用i(insert)命令就可以从常规模式进入插入模式。插入模式下,使用esc就可以回到常规模式。区分了常规模式和插入模式之后,我们就可以上手vim;因为插入模式就是普通的输入环境,因此无论如何也不会比使输入变慢。读者可大胆尝试。
实操篇-基础
如果读者已经安装好了GlobalVim,把以下几段复制到记事本或者word中,然后按下 CapsLock+v 启动 vim 模式。然后花几分钟练习即可上手。
插入模式就是大家非常熟悉常规环境,所以以下主要介绍常规模式(不能直接输入的模式)
光标移动:
h(左) j(下) k(上) l(右)
为什么是 h j k l 呢?很简单,因为 h j k l 就在右手手指默认位置,手指头可以用最小的动作来完成光标移动。h 和 l,一个在最左,一个最右,所以分别代表左和右;而通常按下很多,而食指又最灵活,所以 j 往‘下’,那剩下的 k 表示‘上’就是很自然的了。只要记住hjkl布局原因,稍做练习,就不会忘掉啦。
0 移动到行首,0表示开始,所以移动到行首的含义不言自明
$(shift+4) $是正则匹配中的表示行尾的标记,但4(死)也可以容易联想到终了、行尾
w 单词word的首字母,表示向后移动一个词,中文的分词组没有英文实用,但是聊胜于无,而且跳过大段空白很有用
b 单词back的首字母,表示向前移动一个词
移动到编辑位置后,自然要进入开始输入(进入插入模式)。
进入插入模式:
i 单词insert首字母,最常用的命令,当前位置进入插入模式。
s 删除当前字,并进入插入模式
以上就是vim最常用和基础的东西了。如果熟练以上操作,编辑效率应该可以有所提升了。
实操-深入
除了基础的光标移动,但是我们还会经常碰到需要复制粘贴,调整字词顺序的操作,
常用编辑命令:
x 删除当前单字,并存入剪切板
p 当前位置,粘贴剪切版内容
/ 打开搜索框(调用当前环境搜索框),然后进入插入模式,输入关键词,使用Enter导航关键词,最后点击两下esc定位到关键词
* 搜索光标所在处的词语
o 从下一行开始插入
O 从上一行开始插入
J 将下一行和当前行连接起来
中文情形下,以笔者经验,最好用的当属高亮选中,然后复制(剪切),然后找到位置粘贴了
高亮模式(visual mode):
也可叫选择模式,按下v键,然后可以移动光标选中文本,若放弃操作,可以再次按下v键退出高亮模式。也可以使用y命令或者x命令复制或者剪切选中文本到系统剪切板。高亮模式下可用的命令:
y 选中高亮文本,并返回常规模式
x、d、c 切高亮文本,并返回常规模式
批量操作
vim可以通过很简单直接的方式,完成批量操作:在操作之前,先输入一个非零数字N,这时状态栏会显示已经输入的数字N。
随后,紧邻数字的命令会被重复N次。
vim寄存器,宏录制:
GlobalVim同样支持寄存器机制,简单来说,我们会有a-z,0-9 等等寄存器,寄存器相当于windows系统的剪切版,这意味着vim下我们有有数量相当多的剪切板。
上述复制,剪切,粘贴操作匹配寄存器机制。用户可以享受到强大的无与伦比的与寄存功能。
寄存器操作可以看成一个前导操作:“{register} 作为前导,其后续的复制,剪切和粘贴操作是在这个寄存器的基础上进行操作。
与vim不同的是,由于GlobalVim并非独立编辑器,而是利用系统剪切板来实现功能,所以系统剪切板总会被当前寄存操作覆盖。
宏录制,可以把操作序列录制到寄存器中,然后录制好的宏可以稍后被调用。
例子,录制宏到寄存器a:
首先 按下 q a, vim状态栏会显示”录制a”,然后进行操作,
最后在常规模式下,按q结束录制
常规模式下按下 @ a 即可调用寄存器a中所录制的宏
需要注意的是,GlobalVim宏的内容的格式与原生vim并不相同,GlobalVim的宏内容为键盘事件记录。
计算python表达式
GlobalVim的表达式寄存器 "= 支持简单python表达式求值。
在常规模式下,按下 "= 后,用户即可开始输入表达式,按enter对表达式求值,结果会显示在状态栏并存入 "= 寄存器,用户可以按p粘贴计算结果。
结语
vim习惯和平常的输入确实不一样,但只要我们将其应用到日常工作中,相信很快就会有收获。