1. 三种模式
vim中有“一般模式”,“编辑模式”,“命令模式“三种模式,其作用分别为:
-
一般模式中能够移动光标查看文件,可以删除字符或整行,复制,粘贴处理文档内容用
- vi或者vim打开一个文件进入的就是一般模式。
- 另外两种模式需要回到一般模式才能进入彼此。
-
编辑模式可以编辑文件内容
- 在一般模式中按下【i,I,o,O,a,A,r,R,】任何一个字母后进入编辑模式
- 按下相关按键进入编辑模式后,下方会出现【INSERT】或者【REPLACE】字样
- 按【Esc】键退出编辑模式,回到一般模式
-
命令模式可以对通过命令对文档或者vim环境进行操作,例如查找,读取,存盘,替换,离开,显示行号等。
- 在一般模式中按下【:,/,?】中任意一个。
2. vim常用命令
2.1 一般模式中的命令
2.1.1 光标移动
命令 | 说明 |
---|---|
h,← | 光标左移一个字符 |
j,↓ | 光标下移一个字符 |
k,↑ | 光标上移一个字符 |
l,→ | 光标右移一个字符 |
n[h,j,k,l] | n表示数字,再按下按键key 可以向指定方向移动n个字符 |
aa | a |
Ctrl + f,[PgDn] | 屏幕向下移动一页 |
Ctrl + b,[PgUp] | 屏幕向上移动一页 |
Ctrl + d | 屏幕向下移动半页 |
Crtl + u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n<space> | n表示数字,再按下空格键 光标向右移动n个字符 |
0,[Home] | 光标移动到第一个字符 |
$,[End] | 光标移动到最后一个字符 |
H | 光标移动到屏幕第一行第一个字符 |
M | 光标移动到屏幕中央一行的第一个字符 |
L | 光标移动到屏幕最后一行的第一个字符 |
G | 光标移动到文件最后一行 |
nG | n为数字,光标移动到文件第n行 |
gg | 光标移动到文件第一行,相当于1G |
n<Enter> | n为数字,光标下移n行 |
2.1.2 查找与取代
命令 | 说明 |
---|---|
/word | 向光标之后查找”word“ |
?word | 向光标之前查找”word“ |
n | 重复前一个查找的动作 |
N | 反向重复前一个查找的动作 |
:n1,n2s/word1/word2/g | n1和n2为数字 在n1行和n2行之间查找word1,并替换为word2 |
:1, $s/word1/word2/g | 全文查找word1并替换为word2 |
:1, $s/word1/word2/gc | 全文查找word1并替换为word2,且在替换前确认 |
2.1.3 删除,复制,粘贴,动作
命令 | 说明 |
---|---|
x,【Del】 | 向后删除一个字符 |
X,【Backspace】 | 向前删除一个字符 |
nx | n为数字,向后删除n个字符 |
nX | n为数字,向前删除n个字符 |
dd | 删除光标所在行 |
ndd | n为数字,删除光标所在的向下n行 |
dnG | n为数字,删除光标所在行到第n行 |
dG | 删除光标所在行到最后一行 |
0G | 删除光标所在位置到该行第一个字符 |
yy | 复制光标所在行 |
nyy | n为数字,复制光标所在的向下n行 |
ynG | n为数字,复制光标所在行到第n行 |
yG | 复制光标所在行到最后一行 |
y0 | 复制光标所在字符到该行行首 |
y$ | 复制光标所在行到该行行尾 |
p | 将复制的数据粘贴在光标下一行 |
P | 将复制的数据粘贴在光标上一行 |
J | 将光标所在行与下一行的数据合并成一行 |
C,c$ | 删除当前行光标后面的字符,并进入编辑状态 |
c0,c^ | 删除当前行光标前面的字符,并进入编辑状态 |
cc,S | 删除当前行,并进入编辑状态 |
cw | 删除光标到该单词结束位置,并进入编辑状态 |
cfx | x为任意字符 删除光标到下一个x字符之间的文本,并进入编辑状态 |
cFx | x为任意字符 删除光标到上一个x字符之间的文本,并进入编辑状态 |
cnG | n为数字,删除光标所在行到第n行,并进入编辑状态 |
cG | 删除光标所在行到末行,并进入编辑状态 |
u | 撤销前一个动作 |
<Ctrl> + r | 重做前一个动作 |
. | 小数点,重复前一个动作 |
2.2 一般模式切换到编辑模式
命令 | 说明 |
---|---|
i,I | 进入插入模式(Insert mode) i:从光标所在处插入 I:从光标所在行的第一个非空格处开始插入 |
a,A | 进入插入模式(Insert mode) a:从光标所在下一字符开始插入 A:从光标所在行的最后一个字符开始插入 |
o,O | 进入插入模式(Insert mode) o:在目前光标所在处下一行插入新的一行 O:在目前光标所在处上一行插入新的一行 |
r,R | 进入取代模式(Replace mode) r:取代光标所在字符一次 R:取代光标所在字符,直到按下<Esc> |
<Esc> | 退出编辑模式,回到一般模式 |
2.3 一般模式切换到指令模式
2.3.1 存储与离开
命令 | 说明 |
---|---|
:w | 将编辑的数据写入硬盘 |
:w! | 强制写入文件,即使文件属性为“只读” 需要对文件有写的权限 |
:q | 离开vim |
:q! | 强制离开文件,不保存 |
:wq | 保存并离开 |
:wq! | 强制保存并离开 |
ZZ | 若文件没有改动,则不保存离开,如果文件有改动,则保存后离开 |
:w[filename] | 将文件另存为filename |
:r[filename] | 在光标处插入另一个文件的数据 |
:n1,n2 w [filename] | 将n1到n2行之间的内容保存为filename |
:! command | 暂时离开vim查看command的执行结果 |
2.4 区块选择
命令 | 说明 |
---|---|
v | 字符选择,选择光标经过的字符 |
V | 行选择,选择光标经过的行 |
<Ctrl> + v | 区块选择,选择光标经过的区块 |
y | 复制选择的部分 |
d | 删除选择的部分 |
2.5 多文件编辑
命令 | 说明 |
---|---|
:n | 编辑下一个文件 |
:N | 编辑下一上文件 |
:files | 列出当前vim打开的所有文件 |
2.6 多窗口
命令 | 说明 |
---|---|
:sp [filename] | 开启新窗口 如果有文件名参数,在新窗口中打开该文件 如果没有文件名参数,打开同一个文件(同步显示) |
<Ctrl + w> + j <Ctrl + w> + ↓ |
光标下移一个窗口 |
<Ctrl + w> + k <Ctrl + w> + ↑ |
光标上移一个窗口 |
<Ctrl + w> + q | 离开窗口 |
3.vim暂存文件
- 使用vim编辑时,会在同目录下建立名为.filename.swp的临时文件记录修改,正常退出后删除。
- 发现.swp文件表明原文件异常退出,可以执行6种操作:
- [O]pen Read-Only:以只读文件开打原文件。
- (E)dit anyway:正常方式打开原文件。
- (R)ecover:加载临时文件。注意之后正常离开后,要手动删除该临时文件。
- (D)elete:删除临时文件。
- (Q)uit:离开vim
- (A)bort:放弃编辑行为。
4. vim配置文件
vim配置文件包括~/.vimrc,~/.viminfo
- ~/.vimrc为vim参数设置
- ~/.viminfo为用户在vim中的操作记录
- 可以在一般模式种进行设置
命令 | 说明 |
---|---|
:set all | 显示所有环境参数设定值 |
:set | 显示所有与系统默认值不同的环境参数设定值 |
:set nu :set nonu |
显示行号 取消显示行号 |
:set hlsearch :set nohlsearch |
高亮显示查询结果 取消高亮显示查询结果 |
:set autoindent :set noautoindent |
自动缩进 取消自动缩进 |
:set backup :set nobackup |
自动保存备份文件 取消自动保存备份文件 自动保存的话,源文件会被另存为filename~ |
:set ruler :set noruler |
显示状态栏说明 取消显示状态栏说明 |
:set showmode :set noshowmode |
显示所处模式 取消显示所处模式 |
:sytax on :syntax off |
是否根相关语法显示不同的颜色 |
:set bg=dark :set bg=light |
设置主题颜色 |