添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Linux 的超级记事本(代码编辑器) —— vim

阅读量:0

Linux 的超级记事本(代码编辑器) —— vim

Linux 上如何写代码?如何编辑修改配置文件?如何为我们的代码文件做语法高亮?命令行不比图形化界面,这些操作均需要使用 Liunx 指令来操控 vim 来完成,这是什么呢?

关于 vim

vim 是一款强大的 文本编辑器 ,是开发过程中不可或缺的工具;其本质上就是记事本,但比记事本要更加强大

除了 vim ,还有 vi 也是文本编辑器

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

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

乍一听这不是和 插入模式 一样吗?实则不是,平时使用 记事本 时我们不是通过键盘输入我们需要的东西吗?

那鼠标选中,复制整行,删除整行和这里的 插入模式 还有关系吗?所以 命令模式 的重点是对文本进行 控制

命令集

底行模式(last line mode)

理解

上面两种模式绝对是对文件的内容进行控制,但你编辑好一个文件,注定有文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作;

在命令模式下, : 即可进入该模式。要查看你的所有模式:打开 vim 底行模式 直接输入

:help vim-modes 

所以 底行模式 是让 vim 和包括但不限于 shell 进行交互的

命令集

小操作 —— 加/去 注释代码

在写代码的时候,我们总是要对代码上的调试,编写注释,所以注释代码的操作是必须要会的

加注释

  1. 首先 ctrl + v 组合键来一套,这时可以看见左下角有 VISUAL BLOCK 字样(不难发现和 INSERT 字样十分相似,没错,此时正是在名为 可视化块模式(是可视化选择模式的一种) 的模式中):

在这里插入图片描述

  1. 利用 hjkl 键来调整块区域,也可以利用 n + G 将光标跳至指定的第 n 行,例如: 16G
  2. 选择好需要注释掉的区域后,需要进入 插入模式 ,此时千万注意键入的是 I ,不是 i
  3. 这里以 C/C++ 为例,进入之后请直接键入 // 注释(要输入和代码对应的注释语法格式)
  4. 最后键入 Esc 回到 命令模式 ,一次不行按两次

非常麻烦 ^ ^

去注释

比加注释略微简单:

  1. 还是 ctrl + v 组合键先来一套
  2. 利用 hjkl 键来调整块区域,也可以利用 n + G 将光标跳至指定的第 n 行,但此时要注意: 我们选中的块要包含且仅包含用于注释的语法代码!!! (实际上是 选中 注释语法代码)
  3. 直接键入 d 完成(实际上是 删除 选中注释语法代码)

入门实践:利用 vim 为普通用户添加 sudo 提权功能

问题描述

在非 root 新用户进行 sudo 时,总是会出现相关权限问题,比如我执行以下指令:

sudo touch file.txt 

此时会让你输入你的用户密码,接着就报出如下错误(我的用户名为 exercise ):

在这里插入图片描述

这里主要原因是为了 保护系统相关文件以及其他用户隐私 ,毕竟 sudo 提权是以普通用户的身份,却用 root 的权限执行后面的指令啊,更何况还是输入你自己的用户密码

讲白了,就是系统有充分的理由不信任你

那么如何让系统信任你,从而使用 sudo 提权?

解决

首先报错信息就和你说了:

exercise(开头是你的非 root 用户名) is not in the sudoers file.

说你不在 sudoers 这个文件里,那么问题就在这个文件里,你需要在这个配置文件里添加自己的普通用户

云服务器的 sudoers 文件在下面这个路径下:

/etc/sudoers 

在这里插入图片描述

查看发现只有 root (超管)才有修改权限,所以需要 root 账号密码哦

接下来按着步骤执行:

  1. 执行 su 指令,正确输入 root 密码后,你就是 root
  2. 执行 vim /etc/sudoers 指令,进入配置文件
  3. 首先输入 : 进入 底行模式 ,再输入 set nu 后回车调出行号
  4. 下图可以看见允许 sudo 提权的用户,在下图所示的 100 行 root 的下一行添加你自己的用户名(像 101 行这样,我这里是 exercise ),自己操作哦 ^ ^( 命令模式 下先 yy 复制下图的第 100 行,再 p 粘在下面,按 i 进入 插入模式 并修改为你自己的普通用户名)
    在这里插入图片描述
  5. 添加完成后须 强制退出 ,因为此文件是只读的;即使现在你是 root ,也需要添加 ! 表达强制的决心( :wq!
  6. 回到你普通用户的身份 ,再次执行 sudo touch file.txt 指令并输入 对应的普通用户密码 后是成功的,查看文件会发现,虽然你是普通用户 ,但文件的 拥有者 所属组 却是 root ,这就是 sudo 提权的作用咯
    在这里插入图片描述

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!