当前位置:网站首页>vim的介绍
vim的介绍
2022-08-04 05:31:00 【小羊的预备程序员】
目录
⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件
vim被称为编辑器之神,其功能十分强大,并且在开发和写日志文件中十分重要,所以掌握vim的使用至关重要。
vim的重点是光标的移动、模式切换、删除、查找、替换、复制、粘贴、撤销命令的使用。
1、vim三种模式
vim中存在三种模式(大众的认知):命令模式、编辑模式(输入模式)、末行模式(尾行模式)
命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行、复制行、移动光标、粘贴等等)【打开文件之后默认进入的模式】;
编辑模式:在该模式下可以对文件的内容进行编辑;
末行模式:可以在末行输入命令对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等)。
vim的打开文件的方式:
#vim 文件路径 作用:打开指定的文件
#vim + 数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
#vim + /关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
#vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
重点:先复制出一个/etc/passwd文件,复制当前家目录下

后续一切vim命令都是基于/root/passwd文件进行
2、命令模式
注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)
光标的移动
①光标移动到行首 shift + 6 或^(T字母上面的6,不要按小键盘的6)
②光标移动到行尾 shift + 4 或$
③光标移动到首行 gg
④光标移动到末行 G
⑤翻屏
向上翻屏 ctrl + b(back) 或者 PgUp
向下翻屏 ctrl + f (forward)或者 PgDn
复制操作
①复制光标所在行
按键 yy 在想要粘贴的地方按下p键
②以光标所在行为为准,向下复制指定的行数
按下 数字 yy 粘贴也同时按下p键
③可视化复制
ctrl + v 然后方向键可以选中 配合yy来复制
剪切/删除
①剪切/删除光标所在行
按键 dd (删除之后下一行上移)
②剪切/删除光标所在行为准,向下删除/剪切指定行
按键: 数字 dd (包含当前行)
③剪切/删除光标所在的当前行,但是光标不上移
按键 D (删除之后当前行会变为空白行)
撤销/恢复
①撤销::u 直接按u也可以 (undo)
②恢复: ctrl + r (取消之前的撤销操作)
扩展1:光标的快速移动
①快速将光标移动到指定的行数
按键: 数字 G
②以当前光标为准,向上/向下移动n行
按键: 数字 ↑ 数字↓ 同理可以移动左右
③末行模式下的快速移动方式:移动到指定的行
按键 :数字(行数)
模式间切换

3、编辑模式

重点看前两个进入方式 i(insert)、a(after)
4、末行模式
进入方式:由命令模式进入,按下“:”即可进入
退出方式:
esc
esc esc
删除末行的全部命令
相关命令
①保存操作(write)
输入“:w” 保存文件
输入“:w 文件路径” 另存为
②退出 (quit)
输入“:q” 退出文件
③保存并退出
输入“:wq” 保存并退出
④强制 (!)
输入“:q!” 表示强制退出,刚才做的修改操作不做保存
⑤调用外部命令(了解)
输入“!外部命令”
例如:输入:! ls -lh

⑥搜索/查找
输入“/关键词”
在搜索中切换上/下一个结果 N/n (next)
如果需要取消高亮,则需要输入“:nohl” [no highlight]
⑦替换
:s/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
:s/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容 替换所有行的第一处符合条件的内容
:%s/搜索的关键词/新的内容/g 替换所有行的全部符合条件的内容
%表示整个文件 g表示全局global
⑧显示行号
:set nu

取消的话输入:set nonu
⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件
查看当前已经打开的文件名称“:files”

在%a的位置有两种显示的可能
%a:a = active,表示当前正在打开的文件;
#:表示上一个打开的文件
切换文件的方式:
①如果需要指定切换文件的名称,则可以输入“:open install,log”
②可以通过其他命令来切换上/下一个文件
切换到下一个 输入“:bn”(back next)
切换到上一个 输入“:bp”(back previous)
5、实用功能
代码着色
直接查看 /etc/passwd 的效果

案例:首先创建简单的c语言小程序

①#touch hello.cpp
②#vim hello.cpp
③编写代码,并保存
④#g++ hello.cpp -o hello1.out
⑤#./hello1.out
如何控制着色显示呢?
显示 :":syntax on"
关闭显示:":syntax off"
vim中计算器的使用
①进入编辑模式
②按下 ctrl + r ,,然后输入 “=”,此时光标会变到最后一行
③输入需要计算的内容,按下回车
6、扩展内容
①vim的配置
vim是一款编辑器,编辑器也是有配置文件的
vim配置有三种情况:
a:在文件打开的时候在末行模式下输入的配置(临时的)
b:个人配置文件(~/.vimrc,如果没有可以自行新建同名文件)
c:全局配置文件(vim自带,/etc/vimrc)
①新建好个人配置文件之后进入编辑
②在配置文件中进行配置
比如显示行号:set nu
③保存退出

下次进入就会显示行号了

问题:如果个人配置文件与全局配置文件冲突时应该以谁为准?
如果针对同一配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在,则以全局变量为准
②异常退出
什么是异常退出:在编辑文件之后并没有正常的去保存退出,而是遇到突然关闭终端或断电的情况,会显示下面的效果,这个情况称之为异常退出

解决办法:将交换文件(在编辑过程中产生的临时文件)删除即可
![]()
③别名机制
作用:相当于创建一些属于自己的自定义命令
例如:在windows下有cls命令,在linux下可能因为没有这个命令而不习惯清屏,现在可以通过别名机制来解决这个问题。可以自己创造出cls命令
别名机制依靠一个别名映射文件:~/.bashrc
注意:想要新创建的命令生效,需要重新登陆当前用户。
④退出方式
回顾:之前vim中退出编辑的文件可以使用":q"或者":wq"。
除了上面的这个语法外,vim还支持另外一个保存退出方法":x"。
说明:
①":x"在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新,但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的,主要是会混淆用户对文件修改时间的认定。
因此建议以后使用":x"来进行文件的保存退出。
但是不要使用X,不要使用X,不要使用X。(X对文件进行加密)
边栏推荐
猜你喜欢

深度学习理论——过拟合、欠拟合、正则化、优化器

MNIST手写数字识别 —— Lenet-5首个商用级别卷积神经网络

安装pyspider后运行pyspider all后遇到的问题

使用JS在浏览器中打印菱形

2020-03-27

Amazon Cloud Technology Build On-Amazon Neptune's Knowledge Graph-Based Recommendation Model Building Experience

LeetCode_Nov_5th_Week

Amazon Cloud Technology Build On 2022 - AIot Season 2 IoT Special Experiment Experience

基于语音识别的QT设计的csgo互动类视频游戏

Tencent and NetEase have taken action one after another. What is the metaverse that is so popular that it is out of the circle?
随机推荐
MNIST手写数字识别 —— 基于Mindspore快速构建感知机实现十分类
Deep Learning Theory - Overfitting, Underfitting, Regularization, Optimizers
tmux概念和使用
指针的运算【C语言】
EL表达式
[English learning][sentence] good sentence
FAREWARE ADDRESS
Miscellaneous [development] [VS Code] remote - SSD retry failed
LeetCode_Nov_3rd_Week
Cut the hit pro subtitles export of essays
[Deep Learning Diary] Day 1: Hello world, Hello CNN MNIST
Pipe redirection
[Daily Office][Miscellaneous][vscode]tab space
Machine Learning - Processing of Text Labels for Classification Problems (Feature Engineering)
Introduction to Convolutional Neural Networks
MNIST手写数字识别 —— 从零构建感知机实现二分类
"A minute" Copy siege lion log 】 【 run MindSpore LeNet model
LeetCode_Nov_2nd_Week
理想的生活
在AWS-EC2中安装Minikube集群