VIM操作
移动
h | 左 |
---|---|
j | 下 |
k | 上 |
l | 右 |
正常模式
ESC | 正常模式 |
---|
如果按一次不行就多按几次
退出
:q | 退出 |
---|---|
:q! | 丢弃所有的改动,强制退出 |
插入
i | 在当前字符的左边插入 |
---|---|
I | 在当前行首插入 |
a | 在当前字符的右边插入 |
A | 在当前行尾插入 |
o | 在当前行下面插入一个新行 |
O | 在当前行上面插入一个新行 |
c{motion} | 删除 motion 命令跨过的字符,并且进入插入模式 |
d{motion} | 删除 motion 命令跨过的字符 |
常用命令(motion)
fx | 移动光标到当前行的下一个 x 处 |
---|---|
tx | 移动光标到当前行的下一个 x 处,但是是移动到 x 的左边一个位置 |
FX | 移动光标到当前行的上一个 x 处 |
TX | 移动光标到当前行的上一个 x 处,但是是移动到 x 的左边一个位置 |
w | 光标往后移动一个词 |
0 | 移动光标到当前行首。(是数字0) |
^ | 移动光标到当前行的第一个字母位置 |
$ | 移动光标到行尾 |
) | 移动光标到下一个句子 |
( | 移动光标到上一个句子 |
ggVG | 全选gg移动到顶部vG或者VG全部选中高亮 |
ggyG | 全选复制gg移动到顶部yG全部复制 |
ggdG | 全选删除gg移动到顶部dG全部删除 |
整个文件里面有效移动光标
Ctrl-f | 向下移动一屏 |
---|---|
Ctrl-d | 向下移动半屏 |
Ctrl-b | 向上移动一屏 |
Ctrl-u | 向上移动半屏 |
G | 到文件尾 |
numG | 移动光标到指定的行(num) |
gg | 到文件首H:移动光标到屏幕上面 |
M | 移动光标到屏幕中间 |
L | 移动光标到屏幕下面 |
* | 读取光标处的字符串,并且移动光标到它再次出现的地方 |
# | 读取光标处的字符串,并且移动光标到它再次出现的地方(方向相反) |
/text | 从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 |
?text | 从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n移动到下个 text 处,N 移动到上一个 text 处 |
m{a-z} | 在当前光标的位置标记一个书签,名字为 a-z 的单个字母。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了 |
`a | 到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边 |
`. | 到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它 |
%. | 在成对的括号等符号间移动,比如成对的 [ ] , { }, ( ) 之间。将光标放到任意符号上,然后通过 % 来移动到和这个符号匹配的符号上,% 还可以正确的识别括号的嵌套层数,总是移动到真正匹配的位置上。因此这个命令在编辑程序代码的时候非常有用,可以让你方便的在一段代码的头尾间移动 |
有效的移动大段的文本
v | 按字符选择。经常使用的模式,所以亲自尝试一下它 |
---|---|
V | 按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用 |
C-V | 按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮 |
剪切和拷贝
d | 剪贴选择的内容到剪贴板 |
---|---|
y | 拷贝选择的内容到剪贴板 |
c | 剪贴选择的内容到剪贴板并且进入插入模式 |
d{motion} | 剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板 |
y{motion} | 和上面类似,不过是拷贝 |
c{motion} | 和 d{motion} 类似,不过最后进入插入模式 |
dd | 剪切当前行 |
yy | 拷贝当前行 |
cc | 剪切当前行并且进入插入模式 |
D | 剪切从光标位置到行尾到剪贴板 |
Y | 拷贝当前行 |
C | 和 D 类似,最后进入插入模式。 |
x | 剪切当前字符到剪贴板 |
s | 和x类似,不过最后进入插入模式 |
p | 粘贴 |
---|
使用多重剪贴板
":reg" | 比如:我们要拷贝当前行到寄存器 k。你应该按 “kyy |
---|
避免重复
. 命令 | 在 VI 里面,输入 . (小数点符号),将会重复你输入的上一个命令。比如,你上个命令为“dw”(删除一个词),VI 将会接着再删除一个词。 |
---|
配置
. 设置缩进 | :set smartindent |
---|---|
. 显示光标行列信息 | :set ruler |
. 查看制表符 | :set list |
. 查看行数信息 | set number |
. 关键字高亮 | :syntax on |
. 多文件编辑 | : split two.c |
常用操作
- 选中一个单词
v | e |
- 选中一个单词复制
v | e | y |
- 选中一个单词粘贴
v | e | p |