认识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
文件。
|
|