✨个人主页:****Yohifo
🎉所属专栏:****Linux学习之旅
🎊每篇一句:****图片来源
🎃操作环境:****CentOS 7.6 阿里云远程服务器
- Whatever is worth doing is worth doing well.- 任何值得去做的事情,都值得把它做好。
文章目录
📘前言
**
vim
是一款小而美的编辑器,是
vi
的升级版,完美支持了其所有指令,并且新增了许多特性,作为一款编辑器,我们可以在上面写各种语言的代码(主要是C/C++)。
vim
有多种模式,光是如何退出
vim
这个问题在
Stack overflow
上就有几百万的浏览量,由此可见
vim
还是有一定的使用门槛的。当然
vim
中还有许多指令和极大的自定义空间,需要不断练习以熟练使用
vim
,最后我们还可以根据个人喜好配置出一款属于自己的
vim
**
📘正文
📖vim 基本用法
**要想学会
vim
先要学会进入与退出它**
📃进入 vim
首先要保证自己的
Linux
中已经安装好了
vim
(云服务器大多数都是出厂就安装好了),如果没有安装,需要在
root
用户下通过指令
yum install -y vim
安装
安装好
vim
后,可以直接使用,不过现在的
vim
只是一个草坯房,比较简陋
如果已经创建好了文件,假设为
test.c
,那么我们可以直接通过
vim test.c
打开这个文件
$ vim test.c
打开后的
vim
长这个样子
其中一条条波浪线表示现在没有内容,**此时我们输入字符会发现并不会有字符被写入,因为现在处于命令模式,顾名思义,就是只能输入命令的模式,如果想输入内容,需要先进入插入模式,单按
i
即可进入插入模式**
现在可以愉快的编写内容了!
📃退出 vim
**当我们编辑好内容后,想退出
vim
会发现退出不了**
这是一个经典问题,官方解释如下:**插入模式无法直接退出
vim
,需要先进入命令模式,然后再切换为底行模式,输入
wq
才能保存内容并退出
vim
**
1、esc //从插入模式切换为命令模式2、://进入底行模式3、wq //保存并退出 vim
不难发现,退出
vim
是一件比较麻烦的事,这也难怪它会成为困扰几百万初学者的问题
上面是退出
vim
的一个完整过程
📖vim 常用模式
**
vim
有很多种模式,不过常用的就 3 ~ 5 种,下面来介绍
vim
的五种常用模式**
📃命令模式
**命令模式是进入
vim
后的模式模式,也是
vim
中最根本的模式** ,在
vim
中,如果不知道自己现在处于什么模式下,可以无脑按
esc
,这样会切换至最开始的命令模式
命令模式下主要是以命令输入为主,这也是
vim
中指令最多的模式,下文会介绍的
📃插入模式
插入模式即编辑模式,在插入模式中,键盘的功能就是输入内容,各种指令不在生效 ,我们编辑内容是在插入模式中进行的,
vim
模式支持语法高亮,前提是文件的后缀要与代码内容匹配
进入插入模式的方法:
- 通过
Ins
键切换 - 通过
i
切换,切换后光标停留在原位 - 通过
a
切换,切换后光标会回退一格 - 通过
o
切换,切换后会新起一行
进入方式有很多,一般是通过
i
直接切换
📃底行模式
底行模式比较特殊,**是否进入底行模式的标志为
vim
下方是否有
:
如果有,说明现在处于底行模式**,底行模式中也有很多指令,常见的如
set nu
为
vim
设置行号,
w
保存内容,
q
退出
vim
注意:**如果发现自己退不出
vim
,可以通过
!wq
强制保存并退出,再退不出说明权限不足**
📃替换模式
替换模式主要用于对文本内容的修改,**可以通过
R
进入替换模式,进入后
vim
左下角提示
REPLACE
说明进入成功**,进入替换模式后,从键盘输入的内容会实时替换光标处的内容
想退出替换模式可通过
esc
切换成命令模式
📃视图模式
视图模式就是用来看文档内容的,**可以通过
v
进入逐字符视图模式
VISUAL
此时默认选择当前光标处字符;也可以通过
V
进入逐行视图模式
VISUAL LINE
,此时就是默认选择光标处整行**
视图模式主要是用来快速浏览文本的
各种模式间的关系如下图所示:
📖vim 指令集
**
vim
中有各种各样的命令,下面就来介绍介绍比较常用的指令**
注意:**下面介绍的指令,大多数都是在命令模式下执行的,部分指令是在底行模式下进行,会有特别说明的,比如第一条指令
set nu
设置行号**
📃set nu 设置行号
底行模式下
这条指令比较重要,因为它可以帮我们把行号设置出来,这样可以让我们的编辑器更好看
注意:**如果是未配置过的
vim
,设置行号退出后,再次打开
vim
需要重新设置,比较麻烦**
//底行模式下:set nu //设置行号,set nonu是取消设置行号
📃yy 复制
在 VS 中,复制一行代码是
ctrl+c
,而在
vim
中可以直接通过
yy
复制一行
除了复制一行外,
yy
还可以配合数字,复制
n
行
- 比如
10yy
可以复制当前光标以下十行内容
//命令模式下
yy //复制当前光标处整行内容
nyy //复制当前光标往下 n 行内容
📃dd 剪切
除了可以复制内容,还可以剪切内容,VS 下是
ctrl+x
,比较麻烦,
vim
中只需要
dd
即可剪切当前光标处的整行内容
dd
也可以配合数字,剪切
n
行内容,比如
5dd
会剪切当前光标往下五行内容
小技巧
- 我们可以通过剪切,变相实现内容的删除,剪切完不拷贝就是删除了
//命令模式下
dd //剪切当前光标处整行内容
ndd //剪切当前光标往下 n 行内容
📃p 粘贴
关于之前复制和剪切的内容,可以通过
p
来进行粘贴,单按
p
粘贴一次,配合数字,可以将已复制或剪切的内容,粘贴
n
次
//命令模式下
p //粘贴一次已复制或剪切的内容
np //粘贴 n 次
📃u 撤销
vim
中也有后悔药,只要当前文件还没有离开过
vim
都可以进行撤销操作,具体实现为
u
//命令模式下
u //撤销操作
📃ctrl + r 重做
如果对已撤销的步骤不满意,还可以通过
ctrl+r
进行重做,回退至为撤销前的状态,其实
vim
中的
p
和
ctrl+r
相当于VS中的
ctrl+z
和
ctrl+y
,即撤销与重做
//命令模式下
ctrl+r //重做,撤销已撤销的步骤
📃G 移至文档尾
在命令模式下,我们是不能对文档进行插入操作的,假设文档很长,而我们想看看文档尾的内容,那么我们可以通过
G
直接跳转至文档尾进行查看
G
可以配合数字,具体功能为跳转至指定
n
行,假设该行不存在,那么就会跳转至最后一行
//命令模式下
G //跳转至文档尾
nG //跳转至第 n 行
📃gg 移至文档头
这个相当于
G
的亲兄弟,不过
gg
是跳转至文档头
gg
也可以配合数字进行随机行的跳转
//命令模式下
gg //跳转至文档头
ngg //进行随机行的跳转
📃$ 移至当前行尾
美元符号
$
可以使光标跳转至当前行尾
配合数字,往下跳转至第
n
行的行尾
//命令模式下
$ //跳转至行尾
n$ //向下跳转至第 n 行的行尾
📃^ 移至当前行头
它和
$
是一对,别人是跳转至行尾,
^
是跳转至行头,它不可以配合数字
注:
$
和
^
均在键盘上方的数字区,
$
为
shift+4
,
^
为
shift+6
,有点奇怪,明明
$
在左边,却是移动到左边(行尾),可能大佬的键盘跟我们的不一样?
//命令模式下^//跳转至行头
📃w / b 向后 / 前移动
前面的
$
和
^
是以行为单位,直接跳转至行尾或行头,而
w
或
b
是以单词为单位,进行前后移动,
w
是向前移动,
b
是向后移动,这个东西对英文比较友好,毕竟是别人设计的,实测如果是中文的话,会以符号为单位进行移动,如果中间掺杂单词,则会移动至单词处
当然,这个移动也支持配合数字进行移动
//命令模式下
w //以单词为单位向后移动
b //以单词为单位向前移动
nw / nb //移动 n 个单词位
📃~ 大小写切换
将光标处的字母进行大小写切换,如果一直按照不放,那么会一直往下进行大小写切换
配合数字,将光标后
n
个字母进行大小写切换
//命令模式下~//将光标处的字母进行大小写切换
📃r 替换字符
~
是进行大小写切换,
r
则是进行字符替换,先按
r
触发替换,然后输入待替换字符,输入完成后,光标处字符就会被替换
配合数字,将光标往后
n
个字符全部替换为待替换字符
//命令模式下
r //进行字符替换,默认替换当前光标处字符
nr //替换当前光标往后 n 个字符
📃R 替换模式
r
只能用于逐字符的替换,如果涉及修改的字符过多,且都为不同值时,需要进入替换模式,单按
R
进入替换模式,此时输入的字符会实时替换光标处的字符,换句话说,现在能够直接替换单词
如果想退出替换模式,按
esc
切换为命令模式就行了
//命令模式下
R //进入替换模式
📃x 从右至左删除
删除当前光标处字符,如果是
x
删除的就是光标右边的字符,即从右至左删除
配合数字,删除光标右边
n
个字符
//命令模式下
x //删除当光标右边的字符
nx //删除光标右边 n 个字符
📃X 从左至右删除
这个就是
x
的反面了,
X
删除的是光标左边的字符,即从左至右删除
也可以配合数字,删除左边的
n
个字符
//命令模式下
X //删除光标处左边的字符
nX //删除光标左边 n 个字符
📃h j k l 光标移动
在命令模式下,我们可以直接通过方向键进行移动,也可以通过
h j k l
这个四个键进行移动,不过位置对应比较奇怪
h
向左移动,巧计h
位于这四个键的最左边j
向下移动,巧计j
为jump
,站在悬崖边往下跳就是向下移动k
向上移动,巧计k
为king
,国王,至高无上,就是向上移动l
向右移动,巧计l
在最右边
键位比较奇怪,大佬的世界我们不懂,顺便提一下,之所以会有这四个键,是因为键盘一开始是没有方向键的(当然现在有些键盘也没有,比如 HHKB 的键盘),它长这个样子
像这种便携的键盘简直是资深程序员的梦中情物(很贵,几千一把)
//命令模式下
h //左移
j //下移
k //上移
l //右移
📃/ 单词 搜索单词
底行模式下
我们可以在底行模式下,搜索文本内的单词,假设我们想搜索
Hello
这个单词,只需要先进入底行模式,输入
/Hello
就可以在文本中查找单词了
//底行模式下:/单词 //查找指定单词
📃!常规命令 执行指令
这个指令就比较厉害了,它可以让我们在不退出
vim
的情况下,执行各种指令
比如我们在
vim
中编写了一个C程序
test.c
,保存后,通过指令
:!gcc test.c
可以直接将
test.c
文件编译并链接生成可执行文件,然后再通过
:!./a.out
执行这个程序,执行结束后,返回
vim
的界面
注意:**底行模式中的
!
还有强制的意思,当我们
wq
退不出文件时,可以通过
!wq
强制退出并保存文件**
//底行模式下:!内容 //在文档中搜索指定内容
📃%s/目标文本/替换后的文本/g 替换指定文本
既然有搜索,那就有替换,很简单
:%s/文本A/文本B/g
可以在文档中搜索出
文档A
并将其替换为
文档B
显然,如果目标文本不存在就会报错
//底行模式下:%s/文本A/文本B/g //搜索出文本A,然后将其替换为文本B
📃vs file 分屏操作
我们在写一个程序时,常常会有几个文件,比如数据结构中的二叉树,会有两个
.c
一个
.h
,显然此时一个窗口是不够我们用的,因此
vim
支持多开窗口,指令为
:vs file
新起一个窗口,打开文件
file
,如果文件不存在,会新建一个
注意:**窗口理论上来说可以开辟无数个,但如果开的多了,是非常不好操作的,如果你用的是一块横放的带鱼屏,因此我们一般只会打开2~3个窗口使用。窗口可以有很多个,但光标永远只有一个,当打开新窗口时,光标也会跟着过去,如果想实现光标在不同窗口间的切换,只需要使用
ctrl+ww
即按住
ctrl
的同时快速点击
w
两次**
//底行模式:vs file //打开新文件,呈分屏状态:ctrl+ww //实现光标在不同窗口间的移动
📖vim 配置
**前面说过,默认的
vim
就像一个草坯房,能用,但很不好用,连个基本的行号都需要自己手动开启,不过没事,
vim
可以让我们对其进行装修,即配置
vim
,配置好的
vim
,不仅有行号,还有焕然一新的界面,括号自动补全,语法提示等功能,总之用起来很爽就对了**
📃自己配置
**自己配置
vim
,需要在自己的
~
目录下创建
.vimrc
这个文件,然后进入文件输入配置选项进行配置,保存并退出即可,配置在保存后会立即生效**
下面是效果展示:
部分配置选项
set nu
设置行号set autoindent
自动缩进set cursorline
突出显示当前行- 还有很多很多选项,可以自己去网上搜索
注意:**是在自己的
~
路径下创建
.vimrc
文件,这个配置只对当前用户生效,推荐这样做,毕竟是属于自己的个性化设置**
📃自动化配置
**很多人可能不想折腾,想直接使用别人配置好的文件,当然可以,我们可以通过指令下载别人已经写好的脚本,然后等待脚本运行完成后,我们就得到了一个十分精美的
vim
**
关于自动安装的方法
- 首先需要复制这串指令
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
- 然后进入自己的账户,输入指令,此时提示输入
root
密码,因为安装需要借助root
权限 - 密码输入后慢慢等待安装就行了,时间有点长,慢慢等待即可
- 如果安装过程中卡住了,可以通过
ctrl+c
强制终止,然后重新安装 - 特别鸣谢汤神提供的安装脚本,原帖地址在这里
注意:**这个自动安装的方法,目前仅适用于
Centos 7.6
,其他平台可能会出现安装失败的情况**
📘总结
**以上就是关于
Linux
工具:
vim
的全部介绍了,
vim
是一款优秀的工具,目前世界上仍有许多程序员热爱并使用它,原因很简单,它的开发效率很高,熟练后可以直接起飞。当然其复杂的指令和别扭的使用方法也是劝退了很多人,我对
vim
的看法是我们不使用它,但得学会基本使用方法,后续的代码编写可以借助
Vs Code
这个强大工具,当没有
Vs Code
时,
vim
就派上用场了**
如果你觉得本文写的还不错的话,期待留下一个小小的赞👍,你的支持是我分享的最大动力!
如果本文有不足或错误的地方,随时欢迎指出,我会在第一时间改正
…
相关文章推荐
Linux 权限理解和学习 (热榜文章,推荐食用)
听说Linux基础指令很多?这里都帮你总结好了
版权归原作者 Yohifo 所有, 如有侵权,请联系我们删除。