vim使用有一些小技巧,虽然这些使用vim在日常操作中容易忽视,在操作时很容易忘了其实还可以这么干,但只要需要平时稍微留心掌握,使用vim熟练之后会显著提高综合使用vim编程的能力。
假设你有一个字符串,而光标键在第一个 o 的位置。
(map (+) ("foo")).
gv 可以再次visually select上次的区域
用Vim的方式编辑Command-line(EX mode) 在Ex-mode输入命令时,有时需要调整,不能用Vim的方式来编辑, 这时候可以按「Ctrl-F」,切换进「Command-line window」,随意编辑,回车执行。
:h c_CTRL-F
也可以使用Command-line补全,在Command-line输入命令时,想不起来命令全称了?Tab不好用?试试 Ctrl-D
:h c-CTRL-D
Vim 宏与yank是共享寄存器的,最好有某种策略保证不会冲突。其实可以qwer四个寄存器用来录制临时用完即弃的宏(靠近q和@比较好按)。uiop四个键预留给yank (靠近”和y,p键。也就是除了常用的“和0号寄存器外,再预留四个寄存器来做复制粘贴,通常够用了),其他字母键用来记录固定宏(也就是关了vim下次打开还会接着用的常用宏)
理论上在Vim中可以进行无限层级的Undo/Redo操作。同时Vim提供了一些高级的Undo/Redo操作,即earlier和later命令。例如我想回到四分钟以前的状态,只需执行命令:earlier 4m 。然后我又想前进到30秒后的状态,则执行命令:later 30s 。刚才的两个例子用时间点做参考,那么如果我想回到之前五次修改之前的状态,则执行命令:undo 5 .Vim以树形结构的方式组织undo list,可以用命令:undolist查看。所以从某种意义上讲,Vim不仅是一个文本编辑器,而且还是一台时光机(time machine)。
在vimrc中进行设置,就不会为频繁切换输入法抓狂了,特别是在Vim下写代码和注释时或者完全采用vim写中文的时候。
" Input method
set iminsert=0
set imsearch=0
se imd
au InsertEnter * se noimd
au InsertLeave * se imd
au FocusGained * se imd
但这种方式在搜索的时候也不能输入中文,但和使用 Ctrl+F 和I输入