什么是Vi/Vim?
vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x window 、 mac os 、 windows 。
Vi/Vim键盘图:
1. vim的基本概念
博客中我们主要讲解 vim 的三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是命令模式( command mode )、插 入模式( Insert mode )和底行模式(last line mode)
各模式的功能区分如下 :
正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
插入模式(Insert mode)
只有在 Insert mode 下,才可以做文字输入,按 「ESC」 键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift+;( :) 即可进入该模式。要查看你的所有模式:打开 vim ,底行模式直接输入(退出查看所有模式可以在底行模式下输入 :exit )
:help vim-modes
注意:
1 我这里是使用了配置过的vim,所以用起来比较方便舒适,文章后面我会给出具体的配置方法,这里有需要的老铁可以直接跳转到文章末尾。
2 当我们打开vim时默认是在命令模式下,命令模式是插入模式和底行模式的中转站,插入模式与底行模式的转换都必须先转换为命令模式。
3 这些命令必须使用英文字符。
2. vim的基本操作
- 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
我这里配置后是这个样子:
不过有一点要特别注意,就是你进入 vim 之后,是处于 [ 正常模式 ] ,你要切换到 [ 插入模式 ] 才能够输入文字.
[正常模式]切换至[插入模式]
输入a (跳转到光标的下一个位置)
输入i (跳转到光标当前位置)
输入o(跳转到下一行)
[插入模式]切换至[正常模式]
目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。这里再补充一下,最开始的电脑是没有配备上下左右键的,而是用h(左),j(下),k(上),l(右)来代替的,后续有关其他vim相关操作有些会搭配着这些键使用
[正常模式]切换至[末行模式]
「 shift + ; 」 , 其实就是输入「: 」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」
例如:
: w (保存当前文件)
: wq ( 输入「 wq 」 , 存盘并退出 vim)
: q! ( 输入 q!, 不存盘强制退出 vim)
3. vim正常模式命令集
注意:以下命令都是在命令模式下执行的。
- 插入模式
- 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
- 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
- 从插入模式切换为命令模式
- 按「ESC」键。
- 移动光标
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」「j」「k」、「l」,分别控制光标左、下、上、右移一格;
按[ gg]:进入到文本开始;(可以与n结合使用,n+gg跳转到第n行)
按「shift+g (G)」:移动到文章的最后;(可以与n结合使用,n+G跳转到第n行)
按「shift+4 ($) 」:移动到光标所在行的“行尾”;
按「shift+6 (^)」:移动到光标所在行的“行首“;
按「w」:光标跳到下个字的开头;
按「e 」:光标跳到下个字的字尾;
按「b 」:光标跳到上个字的开头;
按「 nl 」:光标移到该行的第n 个位置;
按「 ctrl + b 」:屏幕往 “ 后 ” 移动一页;
按「 ctrl + f 」:屏幕往 “ 前 ” 移动一页;
按「 ctrl +u 」:屏幕往 “ 后 ” 移动半页;
按「 ctrl + d 」:屏幕往 “ 前 ” 移动半页.
删除文字
按「x」:每按一次,删除光标所在位置的一个字符;(可以与n搭配,「nx」表示删除光标所在位置的后面(包含自己在内n个字符 )
按「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符;(可以与n搭配,「nX」表示删除光标所在位置的前面(不包含自己在内n个字符)
按「dd」:删除光标所在行;(可以与n搭配,从光标所在行开始删除n行)
复制
按「yw」:将光标所在之处到字尾的字符复制到缓冲区中;(可以与n搭配,「nyw」表示复制n个字符到缓冲区中)
按「yy」:复制光标所在行到缓冲区;(可以与n搭配,「nyy」表示拷贝从光标所在的该行“往下数”n行文字。
按「p」:将缓冲区内的字符贴到光标所在位置;注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
按「dd+p」:等同于剪切功能。
替换
按「r」:替换光标所在处的字符;(支持nr)
按「R」:替换光标所到之处的字符,直到按下「ESC」键为止;
撤销上一次操作
按「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复;
「ctrl + r」: 撤销的恢复 。
更改
按「cw」:更改光标所在处的字到字尾处
按「cnw」:例如,「cnw」表示更改3n个字
跳至指定的行
按「ctrl+g」列出光标所在行的行号;
按「nG」:例如,「15G」,表示移动光标至文章的第15行行首.
大小写切换
按「shift+~」:大小写转换(一直按住shift可以一直转换)
4. vim底行模式命令集
注意:以下命令均是在底行模式下进行。
在使用底行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入底行模式。
列出行号
「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
「n」:「n」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行.
查找字符
「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。「?关键字」与「/关键字」的区别是「/关键字」会让光标定位到首行,而「?关键字」则不是。
保存文件
「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
多文件操作
「vs+文件名」:按「ctrl+w+w」在文件中互相切换,打开后就像这样:
另外如果输入一个新的文件名时与使用vim打开文件一样,没有就会重新建立一个,就像这样:
退出的话光标定位到哪里就用对应的命令退出该文件即可。
5. 简单vim配置
配置文件的位置
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行 vim .vimrc。
常用配置选项,用来测试
- 设置语法高亮: syntax on
- 显示行号: set nu
- 设置缩进的空格数为4: set shiftwidth=4
使用插件
要配置好看的 vim ,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户。这里大家可以自行在网上查询资料。
这里我们如果要配置的话不用那么麻烦,已经有了大佬给我们配置好了的(非常感谢汤神老师),大家可以在自己的用户上输入下面这段指令系统就会自动给我们当前用户配置,具体命令为:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
6 总结
今天我们重点介绍了Linux下编辑神器vim的使用,总的来说vim的使用成本还是蛮高的,但是这个确是我们不得不掌握的一项基本技能,只要多花些时间去练习我相信这对我们来说应该不是太大的问题。如果今天的文章对你有收获的话能不能3连支持一下博主呢?