目录
- 1.vim的基本概念
- 2.vim基本操作
- 3.vim命令模式命令集
- 4.vim末行模式命令集
- 5.简单vim配置
- 6.使用sudo提权
为什么要学习vim?
“在 Linux 系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。 而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。
vim是Linux上的文本编辑器(写代码的工具),有时候在我们的生产环境下我们的软件可能会出现各种各样的问题,这些问题都需要我们通过vim来解决,如果我们不会vim,这时就要我们在Windows下的VS code进行本地和远端的联合开发,查看问题,没办法直接在Linux上进行修改,这太慢了。
我们的目标是先使用vim用熟了之后在windows黑屏下可以直接编程,这样我们开发软件在Linux下运行时出现问题,我们可以使用vim来面对这些极端环境(如:对源代码进行修改),也满足了我们的常规开发。
了解:
vi和vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。
这里是一张vi/vim的指令的键盘图,可以结合这篇博客学习
1.vim的基本概念
不同与VS 2019、idea这些集成开发环境(ide),vim就是一个单纯的编辑器。
在我们使用的Linux操作系统上一般都会默认安装vim,不需要我们再次安装。我们可以直接输入vim回车查看是否安装,若显示效果如下则表示以安装。(使用ctrl + z返回)
若没有vim可使用下面的指令安装
yum install -y vim //root下
sudo yum install -y vim //普通用户下,使用sudo安装
vim是一款多模式的编辑器,每种模式的用法和差别不同,每种模式可以互相切换,这里我们主要掌握三种,分别是命令模式、插入模式和底行模式,各模式的功能区分如下:
-
正常/普通/命令模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode
-
插入模式
只有在Insert mode下,才可以做文字输入,按 [ESC] 键可回到命令行模式。该模式是我们后面用到的最频繁的编辑模式。
-
末行模式
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接插入。
:help vim-modes
2.vim基本操作
vim编辑器中的这三种模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作的效率,而且用户在习惯后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方式。
-
进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
- vim 文件名(我们可以直接使用vim 文件名打开文件编译,该文件不存在默认创建文件,该文件存在打开该文件)
- 进入vim之后,是处于[命令模式],你要切换到[插入模式]才能够输入文字。
-
【命令模式】切换至【插入模式】
-
输入a
-
输入i
-
输入o
-
-
【插入模式】切换至【命令模式】
- 目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
-
【命令模式】切换至【末行模式】
- [shift + ;] ,其实就是输入 [:]冒号
-
退出vim及保存文件,在【命令模式】下,按一下【:】冒号键进入[Last line mode],例如:
- :w (保存当前文件)
- :wq (输入[wq],存盘并退出vim)
- :q! (输入q!,不存盘强制退出vim)
- :q (退出,若文件经过修改没办法直接退出)
- :set nu (显示行号)
- :set nonu (不显示行号)
- :命令 (执行该命令)
- :整数 (跳转到该行)
下图为从插入模式到退出vim
总结:
在每次运行 Vim 编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在 Vim 中,无法直接从输入模式切换到末行模式。
- 若我们不知道目前处在什么模式,无脑【ESC】,按过之后一定在命令模式
- 退出的时候一定要先保存在退出。
- 打开vim后就不要用鼠标和鼠标滑轮。
3.vim命令模式命令集
以下命令在命令模式下实现
-
插入模式
- 按【i】切换进入插入模式【insert mode】,按”i“进入插入模式后是从光标当前位置开始输入文件;
- 按【a】进入插入模式后,是从目前光标所在位置的下一个位置开始插入文字;
- 按【o】进入插入模式后,是插入新的一行,从行首开始输入文字。
按【ESC】键从插入模式退回命令模式
-
移动光标
-
vim可以直接用光标来上下左右移动,但规定的vim是用小写英文字母 【h】、【j】、【k】、【l】,分别控制光标左、下、上、右移一格。
-
按 【G】:移动到文章的最后
-
按 【$】:移动到光标所在行的”行尾“
-
按 【^】:移动到光标所在行的”行首“
-
按 【w】:光标跳到下个字的开头
-
按 【n + w】:光标跳到往后第n个字的开头
-
按 【e】:光标跳到下个字的字尾
-
按 【b】:光标回到上个字的开头
-
按 【n + b】:光标跳到往前第n个字的开头
-
按 【#】:光标移动到该行的第#个位置,如:51,561
-
按 【gg】:进入到文本开始
-
按 【shift + g】:进入文本末端
-
按 【n + shift + g】:首先输入需要定位的行数n,在按shift + g贯标移至该行
-
按 【ctrl】+【b】:屏幕往”后“移动一页
-
按 【ctrl】+ 【f】:屏幕往”前“移动一页
-
按 【ctrl】+【u】:屏幕往”后“移动半页
-
按 【ctrl】+【d】:屏幕往”前“移动半页
-
-
删除文字
- 【x】:每按一次,删除光标所在位置的一个字符
- 【#x】:例如,【6x】表示删除光标所在位置的”后面(包括自己在内)“6个字符
- 【X】:大写的X,每按一次,删除光标所在位置的”前面“一个字符
- 【#X】:例如,【20X】表示删除光标所在位置的”前面“20个字符
- 【dd】:剪切所在行(在使用p进行粘贴,不使用p操作即为删除)
- 【#dd】:从光标所在行开始剪切#行
-
复制
- 【yw】:将光标所在之处到字尾的字符复制到缓冲区中。
- 【#yw】:复制#个字到缓冲区
- 【yy】:复制光标所在行到缓冲区
- 【#yy】:例如,【6yy】表示拷贝从光标所在行“往下数”6行文字
- 【p】:将缓冲区内的字符贴到光标所位置。注意:所有与”y“有关的复制命令都必须与”p“配合才能完成复制与粘贴功能。
在vim中一旦保存退出,之前的拷贝操作就不会再保存,下面很多操作同理。
如图为复制一行和多行:
-
替换
- 【r】:替换光标所在处的字符
- 【R】:替换光标所到之处的字符,直到按下【ESC】键为止
-
撤销上一次操作
- 【u】:如果您误执行一个命令,可以马上按下【u】,回到上一个操作。按多次”u“可以执行多次回复
- 【ctrl + r】:撤销的恢复
如下图为进行撤销和撤销的恢复指令:
-
更改
- 【cw】:更改光标所在处的字到字尾处
- 【c#w】:例如,【c3w】表示更改3个字
- 【shift + ~】:进行大小写切换
- 【r】+【替换的字符】:先按r后在按需要替换的字符,光标所指字符就替换为要替换的字符了
- 【n+r】+【替换的字符】:增加n表示替换光标所在位置后的n个字符。
- 【shift + r】:进入替换模式(使用【ESC】退出该模式)
如下图,进行大小写切换
如下图进入替换模式
-
跳至指定的行
- 【ctrl】+【g】列出光标所在行的行号。
- 【#G】:例如,【15G】,表示移动光标至文章的第15行行首。
4.vim末行模式命令集
在使用末行模式之前,请记住先按【ESC】键确定已经处在命令模式,再按【:】冒号即可进入末行模式。
-
列出行号
- 【set nu】:输入set nu后,会在文件中的每一行前面列出行号。
- 【set nonu】:输入set nonu后,不显示行号。
-
跳到文件中的某一行
- 【#】:【#】号表示一个数字,在冒号后输入一个数字,在按回车键就会跳到该行了,如:输入数字15,在回车,就会跳到文章的第15行。
-
查找字符
-
【/关键字】:先按【/】键,在输入想要寻找的字符,如果第一次找的关键字不是想要的,可以一直按【n】会往后寻找到需要的关键字为止。
-
【?关键字】:先按【?】键,再输入想要寻找的字符,如果第一次找的关键字不是想要的,可以一直按【n】会往后寻找到需要的关键字为止。
-
问题:/ 和 ?查找右什么区别?
区别:
?查找按【n】向上查找
/ 查找按【n】向下查找
-
-
保存文件
- 【w】:再冒号输入字母【w】就可以将文件保存起来。
-
离开vim
- 【q】:按【q】就是退出,如果无法离开vim,可以再【q】后跟一个【!】强制离开vim。
- 【wq】:一般建议离开时,搭配【w】一起使用,这样在退出的时候还可以保存文件。
-
对文件进行操作
-
【! + 命令】:使用!后跟命令表示执行该命令。
如:
! gcc test.c表示对该文件生成可执行文件。
! ls -la 显示该文件所在目录下的文件信息
-
-
替换操作
- 【s/替换目标/替换的数据】:如:s/ZS/MAN,将当前光标所在行的第一个ZS替换成MAN
- 【s/替换目标/被替换数据/g】:如:s/ZS/MAN/g,将当前光标所在行的所有ZS都替换成MAN(g—global,全局的)
- 【%s/替换目标/被替换数据/g】:如:%s/ZS/MAN/g,将全文中的所有ZS替换成MAN
-
分屏操作
- 【vs 文件名】:分屏创建新的文件。
- 注意:
- 光标只有一个,光标在哪里,编写那个文件。
- 使用ctrl + w + w(ctrl按着不动,w快速按两下,切换光标到不同文件)
- 可以使用vs产生多个分屏,不过一般最多三个,再多影响实际操作。
- 新创建的文件可以是以创建的,也可以是未创建的,vs后默认创建
- 使用wq或q退出
5.简单vim配置
在我们的学习和工作中,Linux系统最开始的vim或我们自己下载的vim在最开始,用起来不是很方便,这就需要我们自己配置或者下载某个大佬的vim配置文件,来修改自己的vim。
我们自己配置vim时,配置文件名为.vimrc,vim在启动时,会自动在当前用户目录下,寻找该配置文件,如果没有找到,使用的依然时最初的vim。
我们可以自己创建.vimrc文件,在其中进行配置,添加自己需要的功能即可。
cd ~ //进入家目录
touch .vimrc //创建vim配置文件
自己创建的.vimrc配置文件,每个Linux用户都是独立互不影响的,我们在一个用户下配置一个vim配置文件,所做的配置不会影响到该Linux系统下的其他用户,只是修改了该用户下的vim。
我们一般将.vimrc配置文件放在用户的家目录下(以下是我下载别人的配置文件)
大家想要配置一下自己的配置文件,可以在网上搜索一下。
找一些自己喜欢的设置,写在自己的配置文件中。
上面的图片都是我为配置v之前的vim,下图是我下载大佬配置好的vim
如果大家的版本是centos7的,可以将以下命令复制到命令行中,下载该vim,重启后,即可使用。
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
大家还可以点击下面的链接学习更多的vim知识。
vim从入门到精通
6.使用sudo提权
在Linux下,root用户可以无视权限做任何事情,而其他的普通用户却做不到,但在学习和工作中,我们同样需要在普通用户下使用root权限做一些事情,这里我们就需要使用sudo来为我们的指令提权,使其有root的权限。
我们要想使用sudo,就需要我们自己去配置后方能使用,下面是配置方法。
-
切换到root用户
-
打开/etc/sudoers文件
-
找到下面的一行,添加需要使用sudo的用户
使用以下格式添加用户使其可以使用sudo
用户 ALL=(ALL) ALL
-
退出root用户
//方法1 ctrl+d //方法2 su 用户名