Vim 操作
运行 vimtutor zh
命令,可以进入 vim 教学
移动光标
要移动光标,请依照说明分别按下 h、j、k、l 键。
Vim 的进入和退出
- 按下
<ESC>
进入正常模式:help user-manual - 输入
:q!
( 这种方式的退出编辑器会丢弃您进入编辑器以来所做的改动。):wq
( 保存改动过的文件并退出 Vim ):w <filename>
将当前文件保存为<filename>
文本编辑
在正常模式下 (如果命令输出错误,按下
编辑操作
i
进入输入模式(在光标位置前插入文字)I
进入输入模式(在一行的开头插入文字)a
进入输入模式(在光标位置后插入文字)A
进入输入模式(在一行的结尾插入文字)o
在光标下方打开新的一行,并进入插入模式。O
在光标上方打开新的一行,并进入插入模式。y
复制文本p
将最后一次删除的内容置入光标之后(删除的内容将会放到 vim 中的一个寄存器中)r
和一个字符替换光标所在位置的字符R
进入替换输入方式
删除操作
x
删除光标所在位置的字符dw
删除从光标当前位置直到下一个单词起始处de
删除从光标当前位置直到单词结尾d$
从当前光标删除到行末dd
删除整行 (输入2dd
将会删除 2 行)
许多改变文本的命令都由一个操作符和一个动作构成
operator [number] motion
。
- operator - 操作符,代表要做的事情,比如 d 代表删除
- [number] - 可以附加的数字,代表动作重复的次数
- motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。
例如:使用删除操作符 d 的删除命令的格式如:d motion
- d 删除操作符。
- motion 操作符的操作对象(在下面列出)。
operator | 解释 |
---|---|
d | 删除操作符 |
v | 多行选择 |
c | 修改字符操作符 |
r | 替换光标位置的字符但不进入插入模式 |
motion | 解释 |
---|---|
h | 左移一个字符 |
l | 右移一个字符 |
w | 从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符。 |
b | 移动到上一单词的开头 |
e | 从当前当前位置直到单词末尾,包括最后一个字符。 |
W、B、E | W、B、E 命令操作的单词是以空白字符(空格、Tab)分隔的字串 |
j | 下一行 |
k | 上一行 |
0 | 该行的开头 |
^ | 该行的第一个非空字符 |
$ | 从当前光标当前位置直到当前行末。 |
( | 当前句子的开头 |
) | 当前句子的末尾 |
{ | 当前段落的开头 |
} | 当前段落的末尾 |
H | 屏幕的第一行 |
M | 屏幕的中间位置 |
L | 屏幕的最后位置 |
% | 可以查找配对的括号 )、]、} |
CTRL+f | 向前翻页 |
CTRL+b | 向后翻页 |
CTRL+u | 向前翻半页 |
CTRL+d | 向后翻半页 |
G | 移到文件末尾 |
gg | 移到文件开头 |
'. | 跳转到最近的编辑点 |
`. | 跳转到最近的编辑点 |
正常模式下面仅按代表相应动作的键而不使用操作符,您将看到光标的移动正如上面的对象列表所代表的一样。
更改类命令
ce
要改变文本直到一个单词的末尾(删除当前光标所在单词,并进入插入模式)
- 更改类操作符的工作方式跟删除类是一致的。操作格式是:
c [number] motion
- 动作参数(motion)也是一样的,比如 w 代表单词,$代表行末等等。
撤销类命令
u
来撤消最后执行的命令U
来撤消对整行的修改。CTRL-R
撤消掉撤消命令
选择多行命令
v
进入多行选择模式,移动光标进行选择在多行选择的模式下,进入命令输入
:
将会对选择的行进行操作。例如::w <filename>
将会把选择的行保存在<filename>
中
在多行选择的模式下,输入操作符,同样是对选中的字符进行操作
提取和合并文件
:r <filename>
可提取磁盘文件<filename>
并将其插入到当前文件的光标位置后面。您还可以读取外部命令的输出。例如, :r !ls 可以读取 ls 命令的输出,并把它放置在光标下面。
定位
定位及文件状态
CTRL-G
显示当前编辑文件中当前光标所在行位置以及文件状态信息。G
可以使得当前光标直接跳转到文件最后一行。gg
使得当前光标直接跳转到文件第一行- 输入行号,然后输入大写 G。可以跳转到制定行数的位置
- 输入
50%
能直接跳转到 50% 的位置
搜索
/
(正序查找) 然后输入要查询的字符,回车?
(反序查找)CTRL-O
回退上一个查询位置CTRL-I
前进到下一个查询位置要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字符串,请输入大写 N 即可。
跳转到配对括号出
%
可以查找配对的括号 )、]、}
替换操作
:s/<oldWord>/<newWord>/g
替换一行所有的<oldWord>
为<newWord>
命令 | 解释 |
---|---|
:#,#s/old/new/g |
其中 #,# 代表的是替换操作的若干行中首尾两行的行号。 |
:%s/old/new/g |
则是替换整个文件中的每个匹配串。 |
:%s/old/new/gc |
会找到整个文件中的每个匹配串,并且对每个匹配串提示是否进行替换。 |
常用快捷操作
命令 | 说明 |
---|---|
. | 重复上次的操作 |
~ | 将光标下的字母切换大小写 |
guw | 将光标所在单词转换为小写 |
gUw | 将光标所在单词转换为大写 |
guu | 将光标所在行转换为小写 |
gUu | 将光标所在行转换为大写 |
g~w | 将光标所在单词进行大小写转换 |
>> | 缩进 |
* | 向前搜索光标所在的单词 |
# | 向后搜索光标所在的单词 |
q/ | 显示搜索命令历史的窗口 |
其他
VIM 内执行外部命令的方法
:!
然后紧接着输入一个外部命令可以执行该外部命令
设置类命令
set xxx
可以设置 xxx 选项。一些有用的选项如下:
- ‘ic’ ‘ignorecase’ 查找时忽略字母大小写
- ‘is’ ‘incsearch’ 查找短语时显示部分匹配
- ‘hls’ ‘hlsearch’ 高亮显示所有的匹配短语
在选项前加上 no 可以关闭选项: :set noic
获取帮助信息
输入 :help
<回车>
或者使用 :help <command>
<回车>,例如:
下一步您可以阅读 Vim 的用户手册,使用的命令是: :help user-manual