快速选择
可视化模式 VISUAL
进入一般的可视化模式
命令模式下,
v - 命令进入的字符可视化模式(Characterwise visual mode), 文本选择是以字符为单位的
V - 命令进入的行可视化模式(Linewise visual mode), 文本选择是以行为单位的
ctrl-V/v - 进入的块可视化模式(Blockwise visual mode), 可以选择一个矩形内的文本, 类似于Notepad++和UE里的列编辑
代码块选择的可视化模式
vi{pattern character} 或者 va{pattern character}
例如:
vi" - 选中双引号之间的所有内容,但是不包含双引号;
va" - 选中双引号之间的内容且包括双引号
其他的还有 vi{, vi(, vi[, vi(, vi’ 等
vis, vip, viw, viB, vib
vis - 将光标停留在段落中的任何字符上,该命令会选中一个段落(空行分隔),但不包含段首和段尾的空白字符
vip - 将光标停留在段落中的任何字符上,该命令会选中一个段落(空行分隔),包含段首和段尾的空白字符
viw - 将光标停留在某单词的任何字符上,该命令会选中整个单词
viB - 将光标停留在一个大括号内,使用该命令选中该大括号内的代码
vib - 将光标停留在一个小括号内,使用该命令选中该小括号内的代码
快速查找替换
单词操作
w - 下一个单词开头
b - 上一个单词开头
e - 如果光标在当前单词上(非结尾字符),则跳到当前单词结尾;否则跳到下一个单词的结尾
跳到上一个单词的结尾怎么办?vim应该没有提供单个字符的命令,可以使用组合be,即先跳到上一个单词,再跳到当前单词的结尾
行操作
0 - 移动光标到行首
^ - 移动光标到行首非空字符
$ - 移动光标到行尾
g_ - 移动光标到行尾非空字符
括号操作
% - 如果当前光标停留在非成对字符上,跳到下一个成对字符处;如果当前光标停留在成对字符上,则跳到与当前字符匹配的字符
(多)窗口操作
分割窗口(打开多个文件)
:split或**:new** 打开一个新窗口,光标停在顶层的窗口上
:split file或**:new file** 用新窗口打开文件
split打开的窗口都是横向的,使用vsplit可以纵向打开窗口。
移动光标到窗口
Ctrl+ww 移动到下一个窗口
Ctrl+wj 移动到下方的窗口
Ctrl+wk 移动到上方的窗口
Ctrl+wh 移动到左方的窗口
Ctrl+wl 移动到右方的窗口
关闭窗口
:close 最后一个窗口不能使用此命令,可以防止意外退出vim。
:q 如果是最后一个被关闭的窗口,那么将退出vim。
ZZ 保存并退出。
关闭所有窗口,只保留当前窗口
:only
录制宏
按q键加任意字母开始录制,再按q键结束录制(这意味着vim中的宏不可嵌套),使用的时候@加宏名,比如qa。。。q录制名为a的宏,@a使用这个宏。