VI 快捷键
常用快捷键
快捷键说明:\<CR\> 回车
命令模式
| 快捷键 | 功能 |
|---|---|
. | 重做(与其他操作配合) |
/ / ? | 正/反向查找 |
Ctrl-o/i | 向前/后位置跳转 |
Ctrl-] | 跳到光标下关键字的定义之处 |
g; | 跳到上次修改处。同 u<Ctrl-r>(撤销重做),`.(仅能返回一层)(NO IDEA) |
gi | 回到上次编辑处,并切到编辑状态。同 `^ + i |
gf | 跳到光标下文件(配合 C-o 返回)(NO IDEA) |
光标定位
| 快捷键 | 功能 |
|---|---|
| w / W | 下一个单词开头(WBE 大写时以空白字符识别) |
| b / B | 单词开头 |
| e / E | 单词末尾 |
| 0 | 行首 |
| ^ | 行首非空白字符 |
| $ | 行尾 |
| + / - | 下/上一行行首 |
| :n / nG | 光标定位到第 n 行 |
| ( / ) | 行首/尾 |
{ / } | 段落首/尾(空行识别) |
| H / M / L | 光标移动到屏幕的顶/中/底部 |
| Ctrl + y / e | 屏幕向下/上滚动一行 |
| Ctrl + f / b | 向下/上滚动一页 |
| Ctrl + d / u | 向下/上滚动半页 |
| J | 合并行 |
| = | 格式化代码 |
| < / > | 缩进 |
| :+y / :+p | 使用系统剪切板复制/粘贴 |
参考: http://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/ http://blog.csdn.net/yangzhongxuan/article/details/6542808
复合命令
| 快捷键 | 等效命令 | 功能 |
|---|---|---|
| C | c$ | 删除光标后的内容并切换到编辑模式 |
| s | cl | 删除光标处字符并切换到编辑模式 |
| S | ^c | 删除当前行并切换到编辑模式 |
| I | ^i | 行头部插入 |
| A | $a | 行尾部插入 |
| o / O | A<CR> / ko | 新增行/往上新增行 |
快速选择 & 操作
-
需要三条命令合用(前端工程师必学):
- 操作符:
v选择,c删除并进入插入模式,y复制,d删除 - 进入模式:
a包括分隔符,i不包括分隔符 - 输入分隔符:
)/b,}/B,],>,',",`,tXML 标签内部
- 操作符:
-
文本块
- 操作符(同上)
i当前,a包含一个空格(段落为一个空行)w单词,W字符串,s句子,p段落 常用:d配合a,c配合i。如:daw,ciw
位置标记
m{a-zA-Z} 标记,小写为局部,大写为全局
'{mark} 跳到标记行首,或 `{mark} 跳到标记光标处
常用:mm 配合 `m
` 后跟(上次*位置):` 跳转,. 修改,^ 插入,[/] 修改或复制起始/结束,</> 高亮起始/结束
编辑模式
更多命令
| 命令 | 功能 |
|---|---|
| :w !sudo tee % | 用 sudo 权限写入 |
C-v C-m 输入 win 下的换行符 ^M(win 下是 C-q C-m)
缓冲区 registers
-
查询缓冲区:
:di -
帮助:
:h registers -
不同模式下:如命令模式中
"0p,等价于编辑模式的C-r 0。 -
缓存器参数:
[1-9]:最近删除0:最后一次复制*:系统剪切板::命令暂存器/:搜索.:最近插入的%:文档名(IDEA 插件里不可用)
窗口
<C-w>w 窗口间跳转(w 也可以使用 hjkl 方向键,同 <C-w><C-w>(方便))
替换
例子:
a
说明 a
b
说明 b
...
%s/\v(.+)\n(.+)/\<label for="\1">^M <input type="radio" name="t" id="\1" value="alipay" \/>^M \<img src="images\/pay_bank_abc.gif" alt="\2" \/>^M\<\/label>
- 其他
p与"0p的区别:当之前进行过删除操作,前者会取出被删除的值,而后者只取上一次复制的值。
正则
后置参数 e,搜索时定位到末尾(IDEA 不可用),如:/div/e。
配置相关
$ vim -u NONE -N 不加载自定制 vimrc 文件。(-N 防止进入 vi 兼容模式)
未整理
-
g + 行操作屏幕行移动(用于有自动换行,如:gj, gk, g0, g^, g$) -
*查找光标处单词 -
f + 字符当前行查找(配合;或,进行重复或反方向,F可直接向前查找,t/T则是移动到前一个字符) 例:f,dt.删除后面逗号到句号之间的内容。 建议:f/F在普通模式使用,t/T配合d/c等操作符使用。 -
d{motion}定位删除 例:删除当前位置到get单词间的内容:v + /ge\<CR\> + h + d==d/ge\<CR\> -
<C-a>/<C-x>当前行数字加/减(后者在终端下可能与其他快捷键冲突) -
very magic 模式:
\v适合正则时使用(不需输入转义符),\V转义符之外字符都保持原意 -
di/da+(/[/{删除括号内内容/包含括号
规则
- 操作符 + 动作命令 = 操作
- 当一个操作符命令被连续调用两次时,它会作用于当前行
基准
操作符
| 命令 | 用途 |
|---|---|
| c | 修改 |
| d | 删除 |
| y | 复制到寄存器 |
| g~ | 反转大小写 |
| gu | 转小写 |
| gU | 转大写 |
| > | 增加缩进 |
| < | 减小缩进 |
| = | 自动缩进 |
| ! | 使用外部程序过滤 {motion} 所跨越的行 |
宏
- 录制宏
- 开始录制:
q+ 注册名(如a) - 操作
- 结束录制:
q
- 开始录制:
- 执行宏
@+ 注册名- 前面可加执行次数
插件
Vundle
插件管理
编辑 .vimrc 添加查件,重载 vim 后 :PluginInstall
Solarized
配色方案
Comment-T
快速文件定位
cd ~/.vim/bundle/command-t/ruby/command-t (包含 extconf.rb 文件的目录)
ruby extconf.rb
make