5.vim
1.vim简单介绍
vi是”visual interface”的简称,它在Linux上的地位就仿佛Windows中的记事本一样。它可以执行编辑、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。vi是一个文本编辑程序,没有菜单,只有命令。
vim更高级一些,可以理解是vi的高级版本。
vim需要自行安装,在shell中输入vimtutor命令可以查看相关的帮助文档。
2.vim的三种模式
Vi有三种基本工作模式: 命令模式、文本输入模式、末行模式。
三种工作模式的切换如图所示,从下图中可以看出编辑模式和末行模式之间不能相互切换,必须经过命令模式。
3.vim基本操作
3.1命令模式下的操作
用户按下esc键,就可以使vi进入命令模式下;当使用vi打开一个新文件开始也是进入命令模式下。
保存退出
快捷键 | 操作 |
---|---|
ZZ | 保存退出 |
代码格式化
快捷键 | 操作 |
---|---|
gg=G | 代码的格式化 |
光标移动
快捷键 | 操作 |
---|---|
k | 光标上移 |
j | 光标下移 |
h | 光标左移 |
l | 光标右移 |
w | 移动一个单词 |
gg | 光标移动到文件开头 |
G | 光标移动到文件末尾 |
0 | 光标移到到行首 |
$ | 光标移到到行尾 |
nG | 行跳转,例12G,跳到12行处 |
删除命令
快捷键 | 操作 |
---|---|
x | 删除光标后一个字符,相当于 Del |
X | 删除光标前一个字符,相当于Backspace |
dw | 删除光标前一个字符,相当于 Backspace |
d0 | 删除光标前本行所有内容,不包含光标所在字符 |
D[d$] | 删除光标后本行所有内容,包含光标所在字符 |
dd | 删除光标所在行(本质其实是剪切) |
ndd | 从光标当前行向下删除指定的行数,如15dd |
v/ctrl+v | 使用h、j、k、l移动选择内容,然后按d删除其中ctrl+v是列模式,v为非列模式 |
撤销和反撤销命令
快捷键 | 操作 |
---|---|
u | 一步一步撤销,相当于word文档的ctrl+z |
ctrl-r | 反撤销,相当于word文档的ctrl+y |
复制粘贴
快捷键 | 操作 |
---|---|
yy | 复制当前行 |
nyy | 复制n行,如10yy |
p | 在光标所在位置向下新开辟一行,粘贴 |
P | 在光标所在位置向上新开辟一行,粘贴 |
剪切操作 | 按dd或者ndd删除,将删除的行保存到剪贴板中,然后按p/P就可以粘贴了 |
可视模式
快捷键 | 操作 |
---|---|
v/ctrl+v | 使用h、j、k、l移动选择内容; 使用d删除 使用y复制 使用p粘贴到光标的后面 使用P粘贴到光标的前面 |
替换操作
快捷键 | 操作 |
---|---|
r | 替换当前字符 |
R | 替换当前行光标后的字符 |
查找命令
快捷键 | 操作 |
---|---|
/ | /xxxx,从光标所在的位置开始搜索,按n向下搜索,按N向上搜索 |
? | ?xxxx, 从光标所在的位置开始搜索, 按n向上搜索, 按N向下搜索 |
# | 将光标移动到待搜索的字符串上, 然后按n向上搜索,但N向下搜索 |
shift+k | 在待搜索的字符串上按shift+k或者K,可以查看相关的帮助文档 |
3.2切换到文本输入模式
从命令模式切换到文本输入模式只需输入如下命令:
快捷键 | 操作 |
---|---|
i | 在光标前插入 |
a | 在光标后插入 |
I | 在光标所在行的行首插入 |
A | 在光标所在行的行尾插入 |
o | 在光标所在的行的下面新创建一行,行首插入 |
O | 在光标所在的行的上面新创建一行,行首插入 |
s | 删除光标后边的字符,从光标当前位置插入 |
S | 删除光标所在当前行,从行首插入 |
按列模式插入 | 先按ctrl+v进入列模式,按hjkl移动选定某列,按I或者shift+i向前插入,然后插入字符,最后按两次esc |
3.3末行模式下的操作
从命令模式切换到末行模式, 输入冒号(:)
保存退出
快捷键 | 操作 |
---|---|
q | 退出 |
q! | 强制退出,不保存修改内容 |
w | 保存修改内容, 不退出 |
wq | 保存并退出 |
x | 相当于wq |
替换操作
下面表格中old表示原字符串,new表示新字符串
快捷键 | 操作 |
---|---|
:s/old/new/ |
光标所在行的第一个old替换为new |
:s/old/new/g |
光标所在行的所有old替换为new |
:m, ns/old/new/g |
将第m行至第n行之间的old全部替换成new |
:%s/old/new/g |
当前文件的所有old替换为new |
:1,$s/old/new/g |
当前文件的所有old替换为new |
:%s/old/new/gc |
同上,但是每次替换需要用户确认 |
快速翻屏
快捷键 | 操作 |
---|---|
ctrl + u | 向下翻半屏(up)--光标向上移动 |
ctrl + d | 向上翻半屏(down)--光标向下移动 |
ctrl + f | 向上翻一屏(front) |
ctrl + b | 向后翻一屏(back) |
在末行模式下执行shell命令
!shell命令
按下两次esc可以回到命令模式
分屏操作
■在打开文件之后分屏:
快捷键 | 操作 |
---|---|
sp | 当前文件水平分屏 |
vsp | 当前文件垂直分屏 |
sp 文件名 | 当前文件和另一个文件水平分屏 |
vsp 文件名 | 当前文件和另一个文件垂直分屏 |
ctrl-w-w | 在多个窗口切换光标 |
wall/wqall/xall/qall/qall! | 保存/保存退出/保存退出/退出/强制退出分屏窗口 |
■在打开文件之前分屏:
分屏: vim -on file1 file2 …
垂直分屏: vim -On file1 file2…
注意: n可以省略,有几个文件就分几屏
从末行模式切换回命令模式
按两次ESC,退格(backspace)或者回车键
3.4vim的配置文件
用户级别配置文件
~/.vimrc, 修改用户级别的配置文件只会影响当前用户,不会影响其他的用户。
例如: 在用户的家目录下的.vimrc文件中添加
set tabstop=4 ----设置缩进4个空格
set nu ----设置行号
set shiftwidth=4 ---设置gg=G缩进4个空格, 默认是缩进8个空格
系统级别配置文件
/etc/vim/vimrc,修改了系统级别的配置文件将影响系统下的所有用户。
说明: 由于linux是多用户操作系统,建议只在用户级别的配置文件下进行修改,不要影响其他用户。