【Linux系统编程】Linux编辑器——vim

这篇具有很好参考价值的文章主要介绍了【Linux系统编程】Linux编辑器——vim。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


从这篇文章开始,我们要来学习一些Linux中的开发工具。

这篇文章,我们先来学习一下Linux中的文本编辑器——vim。

1. 什么是vim

首先我们来认识一下什么是vim

Vim(Vi IMproved)是一款文本编辑器,它是从 Vi 编辑器发展而来的。Vim 在功能上比 Vi 更加强大,并提供了更多的扩展性和定制选项。
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。我们这里统一按照vim来进行讲解。
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

2. vim的常用模式

上面提到,vim是一款多模式编辑器

注意它就是一个单纯的编辑器,跟我们平时写代码用的比如vs、DEVC++等不同,vs这些是集成开发环境(IDE),集成开发环境就是一系列开发工具的组合套装,包含编辑器,编译器,链接器,调式器等。
另外,既然是多模式的话,就涉及到每种模式的用法和差别,以及不同模式之间的切换。
虽然是多模式,但是我们在日常开发中最常用的也就3~5中模式。

那常用的模式都有哪些呢?

我们这里主要讲解vim的3种模式:
正常/普通/命令模式(Normal mode)
插入模式(Insert mode)
末行/底行模式(last line mode)

除此之外还有一个替换模式和视图模式我们讲的时候也会提一下。

3. vim的基本操作

那要使用vim进行编辑,首先第一个问题我们怎么打开vim呢?

如果我们要使用vim对某个文件进行编辑,直接vim +空格 +文件名即可
vim 文件名
当然如果后面跟的文件名是不存在的,vim也会自动帮你创建,你也可以选择先创建,再用vim编辑
比如,我现在创建一个文件test.c,然后用vim打开它
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后敲回车
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
🆗,打开之后就是这样子

那上面说vim有好几种模式,那我们打开vim之后它是处于那种模式呢?

我们进入vim之后,它默认是处于命令(正常)模式的。
命令模式主要用于控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或者末行模式下。
那在命令模式下如果你去按一些按键会发现是没有反应的,也输不进去东西(除非你按到切换模式的命令切换到其他模式下了可能会有反应)。

那么如果你进入vim之后想对文件进编辑,那么需要进入到插入模式下:

那怎么进入呢?
🆗,从命令模式切换到插入模式的方法不止一种,现在我们先记住一种:
就是按键盘上的i这个键就可以从命令模式切换到插入模式
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
这是我们打开之后默认的样子,现在在命令模式下。
我现在敲i这个键
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我们会看到左下角就会出现-- INSERT -- 的字样,此时我们就进入插入模式了
那现在我们就可以向文件里面插入内容了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
此时它就像一个记事本一样,我们可以随意写入和删除内容。

那然后我编辑好了,想退出vim,怎么退出?

那在插入模式我们一般是不能退出的,那怎么做呢?
我们先回退到命令模式,按键盘上的Esc键就可以从其它模式回退到命令模式
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
进入命令模式后,如果要退出,还需要我们进行到另一个模式——末行模式。
在命令模式下,输入shift + ;, 其实就是输入:,就可以进入末行模式
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
如果成功进入,我们就会看到最底行有一个
然后我们输入q(quit)回车就可以退出。
但是呢?
由于我们对文件进行了修改,直接q退出可能会退不了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
所以我们要wq,wq就代表保存写入的内容并退出(保存退出
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
末行模式下输入wq,然后回车
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就退出来了,并且我们刚才写入的内容也成功保存了。

再给大家补充一点注意事项:

如果你不知道自己当前处在什么模式下了,那你就无脑的去按Esc,就会回到命令模式下,然后再根据自己的需要切换到其它模式下。
另外我们退出的时候一般都是wq保存退出,如果带上!表示强制退出(有些文件退出的时候可能会报提示,不会直接退出,当然你要是没权限强制也没用)

4. vim命令集

首先为了后面方便演示和讲解,先给大家说一个在末行模式下,列出行号和取消行号的操作

现在再次用vim打开上面我们创建的文件test.c
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
打开之后默认处在命令模式下,然后我们shift + ;进入末行模式
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
那现在我们想让里面的文本显示行号,怎么做呢?
输入set nu,然后回车即可
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

如果想取消行号,set nonu
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

上面说这个命令是在末行模式下的。

但是我们要学的大部分命令其实都是在命令模式下用的指令

4.1 命令模式命令集

那下面,我就边演示边给大家讲解命令模式下命令集

首先来一个

复制粘贴

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在我的光标在第5行。
那我现在向复制光标所在的这一行:
yy,就可以复制光标所在行的内容
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
按完yy,并没有什么反应,但是此时已经复制好了。
那我想把复制的内容,粘贴到当前光标位置的下一行。
对应的指令是p

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
按一次,就粘贴一次,一直按,就一直粘贴
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
当然,你如果按100p,就直接粘100行
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
npp,直接粘n行到光标所在行之后
那刚才yy是复制一行的内容,如果想一次复制n行可以吗?
当然,nyy就可以一次复制n行(从当前行开始向下,带上当前行一共n行)
比如我现在想复制文本前3行
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
那我把光标放到第一行,然后敲3yy,就可以把前3行复制
是否成功复制前3行,我们可以粘贴出来看一下
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在我已经敲了3yy了,然后我把光标移到第3行,把它粘到第3行下面,我再敲p去粘贴
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就可以了。
同样的np就可以粘n次。

依次撤销上一次操作

刚才复制的3行,我再敲个20p,粘贴20次,然后

我后悔了,我想把刚才粘贴的操作撤销掉,可以吗?
当然:
u,就可以撤销你上一次的操作,u可以连续执行多次
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
这是敲了20p之后的样子,我按u
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我们看到下面会显示变化的信息
再按u
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
再按u
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
可以连续撤销

对撤销进行撤销(恢复)

那如果我现在对刚才的撤销操作反悔了,我想撤销刚才的撤销操作(注意理解这句话的意思),能做到吗?

可以的。
ctrl + r,对之前的撤销进行恢复
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
这是之前连续撤销之后的样子
我敲ctrl + r
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
再敲ctrl + r
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就可以这样一直恢复,恢复到不能再恢复为止

剪切&删除

上面讲了复制粘贴,那剪切怎么做?

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
比如现在光标在第3行,我们把第3行的内容进行剪切
那我就在光标在第3行的情况下敲dd
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
此时原来第3行的内容就没了,如果此时不进行操作的话,就相当于删除
那如果我想把它剪切到现在的11行,那就把光标移到第10行,敲p,就粘到10行下面了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就剪切完成了
那如果想一次剪切多行,同样的,ndd,然后把光标移到你想要的位置敲p就可以了,不继续操作,就是删除掉对应的n行
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在3dd
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
3行就没了
再敲p
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就粘到光标所在行下面
当然照样可以np

然后给大家说一下:

如果我们进行了一些操作之后,进入末行模式对刚才的修改进行保存(w)了,保存之后依然可以用u 或者Ctrl+r 进行撤销和恢复保存之前的操作。
但是,如果你保存退出了,再次用vim打开,就无法进行撤销恢复的操作了

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
大家可以试一下,这里就不详细的演示了

移动光标(上下)

现在我把刚才的文本搞的行数多一点,然后来学一些移动光标的操作

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我先粘贴个1000行内容

然后,我现在想把光标移动到最后一行,怎么做?

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在在第1行
🆗,Shift+G(即输入大写g),就可以直接把光标移动到文本最末尾
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

然后我又想快速回到第1行:

gg:移动光标到文本开始
直接敲gg
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就回到第1行了

那现在我想把光标定位到第n行,比如第88行,第456行,怎么做呢?

n+Shift+G:将光标定位到指定的第n行
比如78+Shift+G
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

移动光标(左右)

刚才学的是光标的上下移动,那左右移动呢?

比如,如何快速定位到文本的最后一行:

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在有这样一行长文本,我想直接定位到最后一个字符
Shift+4:移动到光标所在行文本的“行尾”
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

直接定位到行首

Shift+6:移动到光标所在行文本的“行首“
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

另外还有:

w(小写):光标从当前位置跳到下个”单词“的开头
但是注意这里的单词不一定就是我们平时所熟悉的那种英文单词,大家可以多试一试,看一下它的一个效果,有些东西文字没办法很好地给大家说清楚
我来简单演示一下,比如
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在光标在p的位置,我现在敲w
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
再敲
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
相信大家能看出来它是怎么移动的。
当然它也支持加n
n+w:就相当于敲n次w
比如现在在开头
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
敲3w
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

那w是向后移动,向前呢?

b:光标回到上个”单词“的开头
nb:相当于敲n次b
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
敲b
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
敲3b
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

文本内容大小写切换

在vim中还可以快速的进行大小写的切换:

比如
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在想把圈出来的字符小写变成大写
Shift ~:快速大小写切换(原来大写变成小写,原来小写变大写)
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在光标在h的位置,此时我敲Shift ~
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
>它把h变成大写H,并且光标自动移到下一个位置
所以如果我们按着Shift ~不放,他就可以一直向后转换大小写

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
当然也可以快速把大写换成小写
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

替换

接下来学习一些替换操作:

r:替换光标所在处的字符

即先按r键,在按自己想替换的字符,就可以完成替换
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在先按r,再按m
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
如果你想再换成其它字符,就再按r,然后再按你想替换的字符。

nr:替换光标所在处向后的n个字符

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在想把从当前光标位置开始向后的10个字符替换成x
那就敲10r ,再敲x
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

4.2 替换模式

刚才我们学的是把1个或n个字符替换成另外一个字符,但这样即使替换多个它们被替换的是同一个字符。

那如果我们想按自己的想法替换成不同的任意字符呢?

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
比如我现在想把这一段改成abcdefg...不同的字母,怎么做呢?
我们敲Shift+R(其实就是大写R)
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
敲完之后我们会发现左下方出现-- REPLACE --
其实Shift+R是让我们进入了另一种模式——替换模式
然后,我们直接敲我们想替换的字符,它就会依次往后进行替换
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我们替换完一个,光标会自动往下一个移动。

那替换完毕呢?

Esc,就又回到命令模式了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
左下角就没有replace了

4.3 命令模式命令集(续)

我们再回到命令模式,继续学一些命令

删除

x:每按一次,删除光标所在位置的一个字符

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
比如,光标现在在a的位置,我按一次x
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
a就被删掉了,光标到b了
我继续按就继续删
按着x不放,就一直往后删
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

nx:一次删除n个

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在想把abcde这5个一次删掉
那么敲5x,就可以一次删掉5个
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

另外,刚才的删除都是从左往右删,如果从右往左呢?
Shift X(即大写X):删除光标所在位置前面位置的一个字符
n Shift X:删除光标所在位置前面的n个字符

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
现在光标在g的位置
我按一次Shift X
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
5 Shift X
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

4.4 上下左右移动光标

然后想给大家说一下:

我们上下左右移动光标的时候可以用键盘上面的上下左右的四个键去移动
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

但是我们一般不使用这个

而是使用h(左)、j(下)、k(上)、l(右)
那为什么呢?
首先这四个键离我们常用的这些键比较近,当然这是最不重要的理由。
最重要的原因是因为,以前的键盘上根本都没有带箭头的上下左右四个键
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
不过现在vim基本也都兼容上下左右四个键的使用
建议还是使用hjkl四个键

4.5 插入模式的切换

上面我们说了从命令模式进入插入模式的方式不止一种,上面只讲了一个i

但其实呢,有好多个,我们这里主要学习三个:

按「i」切换进入插入模式「insert mode」,光标位置不动
按「a」进入插入模式后,光标会移动到原来位置的下一个
按「o」进入插入模式后,会新起一行,并且光标移动到新的一行的起始位置

大家可以自己试一试看看效果

4.6 末行模式命令集

末行模式上面我们已经学过几个操作了:

set nu:显示行号
set nonu:取消显示行号
q:退出
wq:保存退出
wq!:强制保存退出

下面我们再来学几个,注意是在末行模式下

搜索匹配

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
/文本内容:匹配对应的文本内容并高亮显示
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后我按n可以依次定位到下一个匹配项
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
如果找不到会报错
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

不退出vim直接执行终端界面的命令

如果我们用vim写完一个test.c,想编译运行它,我们之前的方法就是保存退出vim,然后去编译执行它。

但其实,不退出vim,也可以搞:

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在已经写好了,想编译它
可以不用退出vim,在末行模式下
输入!,然后敲对应的命令就好了
比如,编译这个test.c
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
回车
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
他就会执行对应命令并跳转到这个页面显示对应的结果,我们按任意键回到vim中
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后我们可以查看一下有没有生成可执行程序
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
!ls -l回车
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
已经生成了
然后!./a.out执行
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就执行成功了

替换

末行模式下也可以进行一些替换操作

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
比如我现在想把所以hello替换成HELLO
那这样做:
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
回车
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
就替换好了

多文件分屏显示

我们平时写代码可能还会多文件分离编译或者头文件源文件分开,就像这样

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

那我们在vim上可以不可以这样搞呢?

可以的。
比如
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我现在把test.c修改成这样,然后我想在创建一个头文件test.h,把show函数的声明和头文件的包含放到test.h里面
怎么做呢?
我们还没创建test.h文件,不过我们直接用vim打开文件,如果文件不存在,最后我们选择保存的话他会自动帮我们创建
所以,在末行模式下,我直接输入vs test.h
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
它就自动帮我创建好并打开,且分屏显示出来
现在分屏了,你去看你的光标在那个文件,你当前编辑的就是哪个文件
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
那如何切换到另一个文件呢?
切换的话需要在命令模式下,按住Ctrl 不放,然后快速按两次w就可以切换
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后我把它编辑成这样
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
当然你还可以继续创建新文件去分屏,但我们一般不会分太多,那样体验也不好

那这种情况我们怎么退出呢?

比如我现在要退出test.c,那首先要确保光标在test.c里面
然后,进入末行模式
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
还是wq就可以保存退出了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
此时就只剩test.h了
继续保存退出
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
我们看到test.h也自动生成了

编译运行照样是可以的

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

然后,再给大家提一点:

我们进入vim之后,尽量就不要在使用鼠标操作了

5. vim的配置

Vim 的配置是用来自定义 Vim 的行为和外观的设置。通过修改 Vim 的配置,您可以根据自己的喜好和需求,定制编辑器的各种功能和界面元素。

vim在启动的时候,会自动在当前用户的目录下,寻找配置文件——.vimrc(自己配置的话可能需要我们自己创建这个文件,配置的内容就放在该文件里面),如果没有,就用默认的。
一个用户,一个vim配置,我们所做的配置,不会影响其他用户。

那关于vim的配置,网上也可以找到很多相关的内容,这里就不详细介绍了。

配置好大概就是这样的:

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

6. 解决普通用户不能sudo的问题

我们之前的文章里遗留了一个问题,就是我们想使用sudo去对一些指令进行提权的时候,可能用不了sudo:

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
另外大家看图,我们会发现一个奇怪的问题:
我们想用sudo提权,但是他让我们输入的却不是root的密码,而是当前的普通用户的密码。
但是我输了自己的密码还是用不了。

那这是怎么回事呢?

我当前这个用户之所以用不了sudo,是因为我并不在系统的信任列表里面。
如果一个新的普通用户无法使用 sudo,有可能是因为该用户还没有被添加到授权列表中,或者没有正确配置 sudo 权限。
在默认的配置下,普通用户是没有权限使用 sudo 命令的。这是因为 sudo 是用于以超级用户(root)权限执行命令的工具,而普通用户通常只被分配了较为有限的权限。
sudo 的目的是确保系统的安全性,避免普通用户在没有适当权限的情况下执行危险或敏感的操作。只有经过授权的用户才可以使用 sudo,并且需要提供自己的密码来进行身份验证。

那我们如何把一个普通用户添加到信任列表里面或者说如何对一个普通用户进行授权呢?

🆗,要允许特定的用户使用 sudo,需要 root 用户或具备相应权限的用户编辑 /etc/sudoers 文件。
我们可以看一下这个文件【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
它的拥有者和所属组都是root。
所以,要给普通用户授权的话,一般需要超级用户root进行操作,因为root一般不受权限约束。
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim

那具体怎么做呢?

我们用vim打开对应的/etc/sudoers这个文件:
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后怎么添加呢?
我们找到这一行:
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后直接把100行复制一下,拷贝到下面,再把root改成你当前的普通用户名就行了
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后保存退出,退出不了直接强制退出
【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim
然后我们再返回普通用户就可以使用sudo了。
如果你不想让它使用了,把它从对应的配置文件里面删掉就行。

【Linux系统编程】Linux编辑器——vim,Linux 系统编程,linux,编辑器,vim文章来源地址https://www.toymoban.com/news/detail-548682.html

到了这里,关于【Linux系统编程】Linux编辑器——vim的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【linux系统编程】编辑器gcc/g++

    目录 Linux下的编辑器 介绍: 1,编辑器gcc/g++ 1-1,系统的编译过程 1-2,预处理过程 1-3,编译过程 1-4,汇编过程 1-5,链接过程 介绍:         Linux系统下可支持很多高级语言的编辑,不同的编辑工具对应不同的语言。本章,我们重点介绍C语言的编辑器 gcc 和C++的编辑器 g++,

    2024年02月04日
    浏览(46)
  • Vim 是一款强大的文本编辑器,广泛用于 Linux 和其他 Unix 系统。以下是 Vim 的一些基本用法

    Vim 是一款强大的文本编辑器,广泛用于 Linux 和其他 Unix 系统。以下是 Vim 的一些基本用法: 打开文件: 基本移动: 使用箭头键或 h , j , k , l 分别向左、下、上、右移动。 Ctrl + f : 向前翻页。 Ctrl + b : 向后翻页。 gg : 移动到文件开头。 G : 移动到文件末尾。 编辑文本: i : 进

    2024年01月17日
    浏览(48)
  • 【Linux】| Linux编辑器-vim的使用

    前言: 在上期我们介绍了关于【Linux】的软件包管理器——yum的使用,今天给大家介绍的是【Linux】的一款编辑器,即【vim】的使用教程。接下来,跟随我的脚步,一起去看看吧!! 目录 (一)走进vim👋 1、vim的基本概念👇 2、简述IDE和编辑器的区别✍️ 3、vim常见工作模式

    2023年04月09日
    浏览(90)
  • 【Linux】Linux编辑器—vim的使用

    vim是Linux中的一款编辑器,拥有多种模式,功能强大。 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面: $ vim test.c 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文 字。 [命令模式]切换至[插入模式

    2024年02月06日
    浏览(78)
  • Linux编辑器——Vim详解

    目录 ⭐前言 ⭐vim的基本概念 ⭐vim的基本操作 ⭐vim命令模式命令集  ⭐vim末行模式命令集 ⭐简单vim配置 ⭐配置文件的位置 ⭐常用配置选项 vi/vim的区别 简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面

    2024年02月21日
    浏览(51)
  • 【Linux编辑器-vim使用】

    目前了解的vim有三种模式(其实有好多模式),分别是命令模式、插入模式和底行模式,各模式的功能区分如下: 命令模式(Normal mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 插入模式(Insert mode) 只有在Insert mode下

    2024年02月10日
    浏览(43)
  • linux代码编辑器——vim

    一款编辑器,只负责写代码 当我们 使用 vim +文件名 进入文件中时, 发现一些按键 按了没有反应 这是因为vim是一个多模式的编辑器, 默认在命令模式下,按键都被当做命令了 1.命令模式转换到插入模式 1. a 输入a后,光标会向后移一位 2. i 使用i从命令模式转换到插入模式,

    2024年01月20日
    浏览(67)
  • Linux编辑器-vim使用

            vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。  1. vim的基本概念         vim有三

    2024年02月06日
    浏览(45)
  • 【Linux】编辑器vim详解

        vim是 文件编辑器 ,是vi的升级版本,兼容vi的所有指令,同时做了优化和延伸。vim有多种模式,其中最常用的模式有命令模式、插入模式、底行模式以及替换模式和视图模式。(视图模式本文暂不提及)    在使用vim编辑器进行文件的编辑之前,需要确保自己的系统已经

    2024年02月06日
    浏览(48)
  • Linux编辑器 - vim使用

    Vim是一个广泛使用的文本编辑器,它是在Unix和Linux系统中常用的命令行文本编辑器之一。 vim的主要三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是 命令模式 ( command mode )、 插入模式 (Insert mode )和 底行模式 ( last line mode ),需要掌握每种模式的用法和差别

    2024年02月14日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包