Linux 的超级记事本(代码编辑器) —— vim
Linux
上如何写代码?如何编辑修改配置文件?如何为我们的代码文件做语法高亮?命令行不比图形化界面,这些操作均需要使用
Liunx
指令来操控
vim
来完成,这是什么呢?
关于 vim
vim
是一款强大的
文本编辑器
,是开发过程中不可或缺的工具;其本质上就是记事本,但比记事本要更加强大
vim 的使用
vim 文本名
- 只写文件名会默认在当前文件夹寻找此文件;
- 如没找到,则会自动创建新的以此命名的文件;
- 若想编辑其他路径文件,请带上路径(相对或绝对)进行标识
进入之后恐怕你编辑不了任何东西,可能会误触一些按键,但你似乎也不知如何退出,这就是多模式的原因
入门级使用——多模式
在这里有 3 种常用的模式(不止这 3 种): 命令模式,底行模式,插入模式
编辑不了任何东西,是因为你
vim + 文件名
回车后进入的是
命令模式
,
所以你现在不论做什么都会当
键入命令
来看待
,而你输入的大多数按键也都被看作是无效命令,没有反应
要想编辑文本,咱可以切换到
插入模式
,最简单的方法就是键入
i
即可,当
左下角
出现
INSERT
字样,就可以进行文本编辑了:
一旦编辑完成,可以按
Esc
退出
插入模式
,回到
命令模式
此时你若迫不及待的想关闭文件,咱就需要从
命令模式
进入
底行模式
,方法输入
:
即可,再输入
wq
(
底行的小命令
)按下回车即可退出,这里
w
表示保存,
q
表示退出
如果按照上面的步骤完成,那么恭喜你现在已经完成了
vim
的入门级使用 ^ ^
是否觉得麻烦无比,没有办法,这是命令行,不是你的图形化界面,在图形化界面你可以自由点击,但如果是单纯的命令行下你觉得要完成输入,保存,退出,异常,是否正常关闭等等这么多操作,可能吗?
基础使用——多模式
我们说到有三种模式: 命令模式,底行模式,插入模式 ,那么如何理解它们呢?
插入模式(Insert mode)
理解
只有在 Insert mode 下,才可以做文字输入,按
ESC
键可回到
命令模式
;该模式是我们后面用的最频繁
的编辑模式
根据上面的步骤,我们知道这肯定是用来 编辑 文本的模式,想怎么用就怎么用呗
命令模式(command mode)
理解
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
乍一听这不是和 插入模式 一样吗?实则不是,平时使用 记事本 时我们不是通过键盘输入我们需要的东西吗?
那鼠标选中,复制整行,删除整行和这里的 插入模式 还有关系吗?所以 命令模式 的重点是对文本进行 控制
命令集
-
-
vim
可以直接用键盘上的上下左右键完成上下左右移动,但正规的vim
是用小写英文字母h
、j
、k
、l
,分别 控制光标左、下、上、右移一格 -
G
:移动到文章的最后 -
$
: 移动到光标所在行的 “行尾” -
^
: 移动到光标所在行的 “行首” -
w
: 光标跳到下个字(单词)的开头 -
e
:光标跳到下个字(单词)的字尾 -
b
: 光标回到上个字(单词)的开头 -
n + l
:光标移到该行的第 n 个位置,如:5l
,56l
-
gg
: 进入到文本开始 -
G
: 进入文本末端 -
ctrl + b
:屏幕往“后”移动一页 -
ctrl + f
:屏幕往“前”移动一页 -
ctrl + u
:屏幕往“后”移动半页 -
ctrl + d
:屏幕往“前”移动半页
-
底行模式(last line mode)
理解
上面两种模式绝对是对文件的内容进行控制,但你编辑好一个文件,注定有文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作;
在命令模式下,
:
即可进入该模式。要查看你的所有模式:打开
vim
,
底行模式
直接输入
:help vim-modes
所以
底行模式
是让
vim
和包括但不限于
shell
进行交互的
命令集
小操作 —— 加/去 注释代码
在写代码的时候,我们总是要对代码上的调试,编写注释,所以注释代码的操作是必须要会的
加注释
-
利用
hjkl
键来调整块区域,也可以利用n + G
将光标跳至指定的第 n 行,例如:16G
-
选择好需要注释掉的区域后,需要进入
插入模式
,此时千万注意键入的是
I
,不是i
-
这里以 C/C++ 为例,进入之后请直接键入
//
注释(要输入和代码对应的注释语法格式) -
最后键入
Esc
回到 命令模式 ,一次不行按两次
去注释
-
还是
ctrl + v
组合键先来一套 -
利用
hjkl
键来调整块区域,也可以利用n + G
将光标跳至指定的第 n 行,但此时要注意: 我们选中的块要包含且仅包含用于注释的语法代码!!! (实际上是 选中 注释语法代码) -
直接键入
d
完成(实际上是 删除 选中注释语法代码)
入门实践:利用 vim 为普通用户添加 sudo 提权功能
问题描述
在非
root
新用户进行
sudo
时,总是会出现相关权限问题,比如我执行以下指令:
sudo touch file.txt
此时会让你输入你的用户密码,接着就报出如下错误(我的用户名为
exercise
):
这里主要原因是为了
保护系统相关文件以及其他用户隐私
,毕竟
sudo
提权是以普通用户的身份,却用
root
的权限执行后面的指令啊,更何况还是输入你自己的用户密码
讲白了,就是系统有充分的理由不信任你
那么如何让系统信任你,从而使用
sudo
提权?
解决
说你不在
sudoers
这个文件里,那么问题就在这个文件里,你需要在这个配置文件里添加自己的普通用户
/etc/sudoers
查看发现只有
root
(超管)才有修改权限,所以需要
root
账号密码哦
接下来按着步骤执行:
-
执行
su
指令,正确输入root
密码后,你就是root
了 -
执行
vim /etc/sudoers
指令,进入配置文件 -
首先输入
:
进入 底行模式 ,再输入set nu
后回车调出行号 -
下图可以看见允许
sudo
提权的用户,在下图所示的 100 行root
的下一行添加你自己的用户名(像 101 行这样,我这里是exercise
),自己操作哦 ^ ^( 命令模式 下先yy
复制下图的第 100 行,再p
粘在下面,按i
进入 插入模式 并修改为你自己的普通用户名)
-
添加完成后须
强制退出
,因为此文件是只读的;即使现在你是
root
,也需要添加!
表达强制的决心(:wq!
) -
回到你普通用户的身份
,再次执行
sudo touch file.txt
指令并输入 对应的普通用户密码 后是成功的,查看文件会发现,虽然你是普通用户 ,但文件的 拥有者 和 所属组 却是root
,这就是sudo
提权的作用咯