2.7 vim #
2.7.1 vim 三种模式 #
- 一般指令模式(Command mode):vim 的默认模式,可以用于移动游标查看内容;
- 编辑模式(Insert mode):按下
i
等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下
:
按键之后进入,用于保存退出等操作。
在指令列模式下,有以下命令用于离开或者保存文件。
命令 | 作用 |
---|---|
:w | 写入磁盘,也可以加上保存路径,如 :w /tmp/test.txt |
:w! | 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关 |
:q | 离开 |
:q! | 强制离开不保存 |
:wq | 写入磁盘后离开 |
:wq! | 强制写入磁盘后离开 |
2.7.2 正常模式 #
按键 | 作用 |
---|---|
I |
进入插入模式,光标会移到当前行的开头位置 |
a | 进入插入模式,光标会移动到下一个字符位置 |
A | 进入插入模式,光标会移动到当前行末尾位置 |
o | 进入插入模式,会向下新开一行,光标会移动到新行开头位置 |
O | 进入插入模式,会向上新开一行,光标会移动到新行开头位置 |
h | 前移 |
l | 后移 |
j | 下移 |
k | 上移 |
u | 撤销操作,可以多次撤销 |
x | 单个字符删除 |
r | 替换字符 |
^ | 回到当前行首 |
$ | 回到当前行尾 |
ctrl+r | 重做,恢复撤销 |
yy 和 p | yy 复制一行,p 粘贴 |
复制多行 #
比如复制 3 行,光标移到要复制的开头位置,先按 3,再按 yy,就复制了 3 行。
复制光标到行结尾 #
在光标位置,先按 y 再按 $。
跳到指定行 #
先输入行号,比如 11,再按 ctrl+g 或是 G。
按 2 下 g(小写的 g),gg 会直接跳到第一行。GG 会跳到文本最后一行。
2.7.3 命令模式 #
临时执行命令 #
:! 命令
可以在命令模式临时执行命令。比如临时执行ifconfig
命令。
查找替换 #
:/要查找的字符串
,按 n 往下继续查找。shift+n 定位到上一个查找到的结果。
:s/old/new
只在光标所在行进行替换。
:3,5s/old/new
对 3-5 行指定行进行替换。
:%s/old/new
全文替换。可以加上 g,:%s/old/new/g
进行全局替换。
2.7.4 可视模式 #
按键 | 作用 |
---|---|
v | 字符可视模式 |
V(shift+v) | 行可视模式 |
ctrl+v | 块可视模式,配合 d 和I 命令可以进行块的便利操作 |
2.7.5 常见问题 #
1. E388: Couldn’t find definition #
这个问题会导致 vim 的上下左右方向键不能使用。解决方法如下:
vim ~/.vimrc
如果家目录没有 .vimrc 文件可以 touch 新建一个。在 .vimrc 文件中添加
:set term=builtin_ansi
2. WARNING: terminal is not fully functional #
修改环境变量 TERM
export TERM=xterm
3. vim 乱码问题 #
#方式一:
vim /etc/vim/vimr
#方式二:
vim ~/.vimrc
在打开的文件末尾添加如下内容:
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc