1. vim的基本概念
Vim是一款功能强大的文本编辑器,它起源于Unix系统的vi编辑器,并在其基础上进行了许多改进和增强。
Vim以其高效的键盘操作、高度的可定制性和强大的文本处理能力而闻名,尤其受程序员和系统管理员的欢迎。
Vim支持多种模式,包括普通模式、插入模式、末行(底行/命令)模式、替换模式和可视模式等,每个模式都有其特定的功能和操作方式。
上面的5种比较常用,而其中最重要的就是普通,插入,末行三个模式。
下面,我们就逐个介绍这些模式的用处和使用方式。
2. vim的模式
2.1 普通模式
普通模式也称命令模式,是vim打开之后的默认模式,在该模式下我们不能直接通过键盘输入或删除,但可以通过命令来对文本进行快速的编辑。
光标移动:
「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移一格(上下左右键也可,但是hjkl更加正规)
「数字n」+「h」/「j」/「k」/「l」:分别控制光标左、下、上、右移n格
[gg]:移动到文本开始
「ctrl」+「g」:列出光标所在行的行号
[G]:移动到文本末端
「数字n」+「G」:移动到文本的第n行
「 $ 」:移动到光标所在行的“行尾”
「数字n」+「 $ 」:移动到光标所在行开始计算的第n行的“行尾”
「^ 」:移动到光标所在行的“行首”
「数字n」+「 ^ 」:移动到光标所在行的第n个字符
「w」:光标跳到下个字(单词或特殊字符)的开头
「e」:光标跳到下个字的字尾
「b」:光标回到上个字的开头
「ctrl」+「b」:屏幕往“后”移动一页「ctrl」+「f」:屏幕往“前”移动一页
「ctrl」+「u」:屏幕往“后”移动半页
「ctrl」+「d」:屏幕往“前”移动半页
删除/剪切/复制/粘贴:
「x」:删除光标所在位置的一个字符
「数字n」+「x」:删除光标所在位置及之后的共n个字符
「X」:大写的X,删除光标所在位置之前一个字符
「数字n」+「X」:删除光标所在位置之前n个字符
「dd」:剪切光标所在行
「数字n」+「dd」:从光标所在行开始剪切n行
「cw」:剪切光标所在处到所在字的字尾的内容
「c」+「数字n」+「w」:剪切n个字
「yw」:将光标所在之处到字尾的字符复制到缓冲区中
「数字n」+「yw」:复制n个字到缓冲区
「yy」:复制光标所在行到缓冲区
「数字n」+「yy」:复制从光标所在行开始向下数共n行。
「p」:将缓冲区内的字符贴到光标所在位置(粘贴)。
替换:
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止(进入替换模式)。
撤销:
「u」:撤销(相当于图形化界面编辑器的左旋箭头)
「ctrl + r」: 撤销的恢复(相当于图形化界面编辑器的右旋箭头)
2.2 插入模式
在普通模式下按 "a/i/o" 即可进入插入模式,在该模式下可以像记事本一样对文本进行编辑。
此模式下,左下角会显示"-- Insert --":
「i」:直接进入插入模式
「a」:进入插入模式并将光标跳转到下一个字符
「o」:进入插入模式并新开一行(相当于移动到行尾并回车)
2.3 末行模式
在普通模式下按 ":" ,即 "shift + ;" 即可进入末行模式。
此时左下角会显示 ":" ,并且光标会自动跳转到 ":" 之后,我们就可以在冒号后输入命令。
Vim的末行模式(Last Line Mode),也称为命令行模式,是Vim编辑器中的一种模式,允许用户输入一系列的命令来执行文件的保存、退出、搜索、替换等操作。
在末行模式下,用户可以执行比命令模式更多的复杂操作,这些操作通常涉及到对文件内容的全局修改或者对Vim本身的配置调整。
该模式下命令十分多,大多是对vim进行配置的,我们推荐使用自动配置的插件进行配置,所以这里不多介绍。
常用命令:
「w」: 保存文件
「q」:退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
「wq」:保存+退出「set nu」: 在文件中的每一行前面列出行号
「数字n」:跳转到目标行号
「/」+「关键字」: 从光标位置向后依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)
「?」+「关键字」:从光标位置向前依次查找关键字,输入并回车之后,每按一下「n」键会进行一次查找(光标移动到指定关键字的位置)
「s/要被替换的内容/替换后的内容/」替换光标所在行的文本
「%s/要被替换的内容/替换后的内容/」替换整个文件中的文本
「!」+「外部命令」:执行外部操作系统的命令,例如
分割窗口:
「sp」+「文件名」:水平分割窗口,在不关闭当前文件的情况下再打开一个文件,例如
「vsp」+「文件名」:垂直分割窗口,在不关闭当前文件的情况下再打开一个文件,例如
在多窗口中,光标在哪个窗口下,操作的就是哪个窗口,两个窗口是完全独立的,输入命令只会对当前所在的窗口生效。
窗口切换:
下面这些命令是在普通模式下使用的。
「Ctrl + w」+「h」:移动到左侧的窗口。
「Ctrl + w」+「j」:移动到下方的窗口。
「Ctrl + w」+「k」:移动到上方的窗口。
「Ctrl + w」+「l」:移动到右侧的窗口。
「Ctrl + w」+「w」:在所有分割的窗口中循环切换
「Ctrl + w」+「Ctrl + w」:效果与上一条相同,但是方便连续切换
2.4 可视模式
在普通模式下按「Shitf/Ctrl」+「v」,即可进入可视模式,该模式下可对文本进行批量选中。
其中「Shitf」+「v」进入行选中(visual line),「Ctrl」+「v」进入块选中(visual block)。
行选中:
以行为单位选中(默认选中当前行,上下键阔选),选中之后可执行「d」(删除)、「y」(复制)、「>」(增加缩进)、「<」(减少缩进)等命令。
块选中:
以字符块为单位选中(默认选中光标所在字符,上下左右键阔选),选中之后可执行「d」(删除)、「y」(复制)、「c」(更改)等命令。
可视模式常用于批量化注释。
对要加注释的地方进行块选中之后,按「Shitf」+「i」可直接进入插入模式,不要移动光标,直接在文本中添加"//"然后按「Esc」即可批量添加注释。
3. vim的配置
vim的配置其实就是对当前用户家目录下的".vimrc"(没有就自己建一个)文件进行更改,在其中放入末行模式的命令,即可在每次打开vim时自动执行这些指令。
如果想要配置一些更高级的功能,则需要下载对应的插件,配置的好甚至可以让vim变得和编译器一样。
当然,自己配置起来会十分麻烦,这里我推荐到gitee或github上找一找自动完成vim配置的插件。
推荐:
Centos 7 : vimforcpp
ubuntu : vimplus
vimplus:
vimforcpp比较强一些,有自动补全功能,vimplus没有。
但是可惜vimforcpp还不支持ubuntu。