认识vim
vi和vim
vi和vim都是Linux系统中的编辑器。
vim是vi的升级版本,兼容vi的所有指令,并具有一些新的特性,如多级撤消、易用性、语法加亮、可视化操作以及对vi的完全兼容等。
总的来说,vim是vi的高级版本,具有更多的特性和更好的性能。
vim有命令模式,编辑模式末行模式,接下来我们将学习vim的常用用法。
最小化安装系统,默认没有安装vim,需要执行以下命令,手动安装。
|
|

命令模式
在该模式下不能对文件直接进行编辑,但可以使用一些快捷键对文件进行操作(删除行、复制行、移动光标、粘贴等)。这是打开vim时默认进入的模式。
光标跳转
| 选项 | 解释 |
|---|---|
| G | 光标条至文件末端。 |
| gg | 光标跳转至文件顶端。 |
| 5gg | 光标跳转至当前文件的第5行,5可以是任意数字。 |
| $ | 光标跳转至当前光标所在行的尾部。 |
| ^ | 光标跳转至当前光标所在行的首部。 |
复制与粘贴
| 选项 | 解释 |
|---|---|
| yy | 复制当前光标所在的行。 |
| 5yy | 复制当前光标以及光标向下4行。5可是任意数字。 |
| p | 粘贴至当前光标下一行。 |
删除与剪贴
| 选项 | 解释 |
|---|---|
| dd | 删除当前光标所在的行。 |
| 5dd | 删除当前光标以及光标向下4行。5可是任意数字。 |
| dG | 删除当前光标以后的所有行。 |
| D | 删除当前光标及光标以后的内容。 |
替换与撤销
| 选项 | 解释 |
|---|---|
| u | 撤销上一次的操作。 |
| r | 替换光标所在字符。 |
编辑模式
此模式也叫输入模式,在该模式下可以对文件内容进行编辑,和使用普通的文本编辑器一样。
| 选项 | 解释 |
|---|---|
| i | 进入编辑模式,光标不做任何操作。 |
| a | 进入编辑模式,将当前光标往后一位。 |
| o | 进入编辑模式,并在当前光标下添加一行空白内容。 |
末行模式
此模式也叫尾行模式,可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等)。
文件保存与退出
| 选项 | 解释 |
|---|---|
| :w | 保存当前状态。 |
| :q | 退出当前文档(文档必须保存才能退出)。 |
| :wq | 先保存,在退出。 |
| ! | 强制执行,可配合w、q、wq使用。 |
文件内容另存
将文件另存为/root/123.txt。
文件内容查找与替换
| 选项 | 解释 |
|---|---|
| /string | 需要搜索的内容(查找)。 |
| n | 按搜索到的内容依次往下进行查找。 |
| N | 按搜索到的内容依次往上进行查找。 |
查找root相关内容。
文件内容替换
替换2-5行中包含bin的内容为snoopy。
替换整个文本文件中包含bin的替换为ops。
vim视图模式
块视图模式
ctrl+v可进入视图块模式,可通过移动光标进行选择。
按shift+i可进行编辑。
按esc,刚刚选中的块都会快速填充。
在视图块模式下,选中要删除的内容,按d可快速删。
选中需要替换的内容, 按下r键,然后输入替换后的内容。如图,我们可以将选中的字符替换为@。
行视图模式
shift+v可进入视图行模式,可通过移动光标进行选择。
复制: 选中行内容后按y键及可复制。
粘贴:按p可粘贴。
删除:选中行内容后按d键删除。
vim扩展知识
个性化配置
我们可以通过以下指令对文件进行个性化设置,但是只针对当前打开的vim实例有效,关闭了vim之后再次打开,之前的设置就无效了。
| 选项 | 解释 |
|---|---|
| :set nu | 显示行号。 |
| :set ic | 忽略大小写, 在搜索的时候有用。 |
vimrc是vim的配置文件,vim在启动时会加载vimrc文件。几乎所有的配置,包括主题、快捷键、插件设置等等,都可以配置在vimrc中。若要永久生效配置,需要将指令添加到vimrc配置文件中。
~/.vimrc 个人vim配置优先级高。编辑此配置。文本最后直接添加以下内容即可。
|
|
/etc/vimrc 全局vim配置,优先级低于个人配置。
文件对比
diff用于文件对比。如
|
|
diff显示不直观。我们可以通过vimdiff 以vim方式打开两个文件对比,高亮显示不同的内容。
|
|

异常退出处理
如果vim非正常退出(ctrl+z)挂起或强制退出终端没关闭vim后。再次通过vim编辑文件时,会有如下提示:
|
|
仔细阅读以上内容,我们发现提示.swp文件已经存在。使用vim编辑文件实际是先copy一份临时文件并映射到内存给你编辑,编辑的是临时文件, 当执行:w后才保存临时文件到原文件,执行:q后才删除临时文件。
遇到上述情况,可以先按R,将原来正在写入的内容保存。然后删除.swp文件。
|
|
