【Linux】Linux编辑器—vim使用
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
为什么要学习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这些集成开发环境(idevim就是一个单纯的编辑器。
在我们使用的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个字的开头
-
按 【#】:光标移动到该行的第#个位置如:51561
-
按 【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中一旦保存退出之前的拷贝操作就不会再保存下面很多操作同理。
如图为复制一行和多行(yy + p):
-
替换
- 【r】:替换光标所在处的字符
- 【R】:替换光标所到之处的字符直到按下【ESC】键为止
-
撤销上一次操作
- 【u】:如果您误执行一个命令可以马上按下【u】回到上一个操作。按多次”u“可以执行多次回复
- 【ctrl + r】:撤销的恢复
如下图为进行撤销和撤销的恢复指令(u / ctrl + r):
-
更改
- 【cw】:更改光标所在处的字到字尾处
- 【c#w】:例如【c3w】表示更改3个字
- 【shift + ~】:进行大小写切换
- 【r】+【替换的字符】:先按r后在按需要替换的字符光标所指字符就替换为要替换的字符了
- 【n+r】+【替换的字符】:增加n表示替换光标所在位置后的n个字符。
- 【shift + r】:进入替换模式(使用【ESC】退出该模式
如下图进行大小写切换(shift + ~)
如下图进入替换模式(shift + r)
-
跳至指定的行
- 【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时配置文件名为.vimrcvim在启动时会自动在当前用户目录下寻找该配置文件如果没有找到使用的依然时最初的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知识。
6.使用sudo提权
在Linux下root用户可以无视权限做任何事情而其他的普通用户却做不到但在学习和工作中我们同样需要在普通用户下使用root权限做一些事情这里我们就需要使用sudo来为我们的指令提权使其有root的权限。
我们要想使用sudo就需要我们自己去配置后方能使用下面是配置方法。
-
切换到root用户
-
打开/etc/sudoers文件
-
找到下面的一行添加需要使用sudo的用户
使用以下格式添加用户使其可以使用sudo
用户 ALL=(ALL) ALL
-
退出root用户
//方法1 ctrl+d //方法2 su 用户名