VI快捷键
January 01, 2015
...常用快捷键
快捷键说明:\<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
,]
,>
,'
,"
,`
,t
XML标签内部
- 操作符:
-
文本块
- 操作符(同上)
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