1. 已经在编辑状态(insert mode)了,如何快速执行 normal mode 的命令?
在编辑文本时,需要快速定位到某个位置,如下一个 d 的位置,难道要
<ESC>、fd、i 这般繁琐吗?
其实,使用 Ctrl-O 就可以临时切换到 normal mode, 执行一个命令后自动返回 insert mode。
于是上述命令序列可以改为:
Ctrl-O、fd 即可。
Ctrl-O 要按两个键呢,很麻烦,于是来个 keymap
" make ` functions <C-O> in insert mode
inoremap ` <C-O>
nnoremap ` i`<ESC>
在 normal mode 下按 ` (左上角那个),会正常插入 `,
而在 insert mode 下则相当于按 Ctrl-O,
于是上述命令序列又可简化为
`fd 即可。
在 insert mode 想粘贴剪贴板内容时,可以输入 `P,爽吧?
这样就可以在 insert mode 下天马行空,不用再按 <ESC>和a 切来切去了。
2. vim 的剪贴板怎么怪怪的?
用 y 命令拷贝的文本怎么不能在 X/Windows 的其它应用中使用呢?
事实上,vim 有多个所谓寄存器来寄存剪切的内容。
平时是不是只用 y <motion> 和 p 命令呢?
其实这时使用的是 unamed 寄存器(对应寄存器*,不知对否?),即没有给定名称的,
而给定名称的,可以加前缀 "r 使用。
例如,将当前行放到寄存器a中,输入: "aY
将另一行(先移到其它行)放到寄存器b中,输入: "bY
粘贴寄存器a,输入:"aP
粘贴寄存器b,输入:"bP
好了,扯远了,X/Windows 的剪贴板的内容是存在寄存器+中,不信,自己试试:"+P
能不能将简单的 y 和 p命令与系统剪贴板联系起来呢?
就这句,浪费了我许多口水:)
set clipboard+=unnamed " set clipboard
3. 我不要每次都输入 this_object.set_...
呵,在 C 的结构或 C++ 的对象设置时,那个结构名或对象名总是重复 n 次要输入,挺烦的:(
添加这两句到配置文件中吧:
" Ctrl-F to yank line upstairs
inoremap <silent> <C-F> <C-O>:exe "norm! kly0jPD"<CR>
这是在编辑模式中使用的,怎么个用法?举个例子吧(括号内是我的注释):
(在编辑模式下,先输入这句:)
this_object.set_height(1.80);
( ^)
( )
(用<tab>啊,空格啊移到箭头所示处,即h处,然后按Ctrl-F)
(自动补全成:)
this_object.set_
(于是你可以继续输入"weight(100);" 了)
不知大家明白没有,不明白的先试试:)
4. 我想注释一堆 C++ 代码
当然,这有许多种我不知道的方法,我的通用方法为,先在配置文件里添加:
vnoremap . :normal .<CR>
呵,一句就够了,示例如下:
假设你有如下几行代码需要注释:
this_object.set_height(1.60);
this_object.set_weight(100);