Linux 上如何写代码?如何编辑修改配置文件?如何为我们的代码文件做语法高亮?命令行不比图形化界面,这些操作均需要使用 Liunx 指令来操控 vim 来完成,这是什么呢?
vim 是一款强大的 文本编辑器 ,是开发过程中不可或缺的工具;其本质上就是记事本,但比记事本要更加强大
除了 vim ,还有 vi 也是文本编辑器
vi/vim 的区别简单点来说,它们都是 多模式文本编辑器 ,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面,例如语法加亮,可视化操作,也可以运行于 x window 、 mac os 、 windows
使用 vim 来编辑文本相当简单:
vim 文本名 进入之后恐怕你编辑不了任何东西,可能会误触一些按键,但你似乎也不知如何退出,这就是多模式的原因
在这里有 3 种常用的模式(不止这 3 种):命令模式,底行模式,插入模式
编辑不了任何东西,是因为你 vim + 文件名 回车后进入的是 命令模式 ,所以你现在不论做什么都会当 键入命令 来看待,而你输入的大多数按键也都被看作是无效命令,没有反应
要想编辑文本,咱可以切换到 插入模式 ,最简单的方法就是键入 i 即可,当 左下角 出现 INSERT 字样,就可以进行文本编辑了:

一旦编辑完成,可以按 Esc 退出 插入模式 ,回到 命令模式
此时你若迫不及待的想关闭文件,咱就需要从 命令模式 进入 底行模式 ,方法输入 : 即可,再输入 wq ( 底行的小命令 )按下回车即可退出,这里 w 表示保存,q 表示退出
如果按照上面的步骤完成,那么恭喜你现在已经完成了 vim 的入门级使用 ^ ^
是否觉得麻烦无比,没有办法,这是命令行,不是你的图形化界面,在图形化界面你可以自由点击,但如果是单纯的命令行下你觉得要完成输入,保存,退出,异常,是否正常关闭等等这么多操作,可能吗?
我们说到有三种模式: 命令模式,底行模式,插入模式,那么如何理解它们呢?
只有在 Insert mode 下,才可以做文字输入,按 ESC 键可回到 命令模式 ;该模式是我们后面用的最频繁
的编辑模式
根据上面的步骤,我们知道这肯定是用来 编辑 文本的模式,想怎么用就怎么用呗
允许使用者通过命令,来进行文本的编辑 控制
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
乍一听这不是和 插入模式 一样吗?实则不是,平时使用 记事本 时我们不是通过键盘输入我们需要的东西吗?
那鼠标选中,复制整行,删除整行和这里的 插入模式 还有关系吗?所以 命令模式 的重点是对文本进行 控制
插入模式
i 进入 插入模式 后,是从光标当前位置开始输入文件a 进入 插入模式 后,是从光标当前位置的下一个位置开始输入文字o 进入 插入模式 后,是光标当前位置的下一行插入新的一行,从行首开始输入文字从 插入模式 切换为 命令模式
ESC 键移动光标
vim 可以直接用键盘上的上下左右键完成上下左右移动,但正规的 vim 是用小写英文字母 h 、 j 、 k 、 l ,分别控制光标左、下、上、右移一格G :移动到文章的最后$ :移动到光标所在行的 “行尾”^ :移动到光标所在行的 “行首”w :光标跳到下个字(单词)的开头e :光标跳到下个字(单词)的字尾b :光标回到上个字(单词)的开头n + l :光标移到该行的第 n 个位置,如:5l,56lgg :进入到文本开始G :进入文本末端ctrl + b :屏幕往“后”移动一页ctrl + f :屏幕往“前”移动一页ctrl + u :屏幕往“后”移动半页ctrl + d :屏幕往“前”移动半页删除文字
x :每按一次,删除光标所在位置的一个字符n + x :例如:6x 表示删除光标所在位置的 “后面(包含自己在内)” 的 6 个字符X :大写的 X ,每按一次,删除光标所在位置的 “前面” 一个字符n + X :例如:20X 表示删除光标所在位置的 “前面” 20个字符dd :删除光标所在行n + dd :从光标所在行开始删除 n 行复制
yw :将光标所在之处到字尾的字符复制到缓冲区中n + yw :复制 n 个字到缓冲区yy :复制光标所在行到缓冲区n + yy :例如:6yy 表示拷贝从光标所在的该行 “往下数” 6 行文字n + p :将缓冲区内的字符贴到光标所在位置,若有 n 贴 n 次,没有默认为 1 次。注意:所有与 y 有关的复制命令都必须与 p 配合才能完成复制与粘贴功能替换
n + r :替换光标所在处的 n 个字符,不写 n 默认为 1R :进入替换模式,替换光标所到之处的字符,直到按下 ESC 键为止撤销上一次操作
u :如果误执行一个命令,可以马上按下 u ,回到上一个操作 进行撤销;按多次 u 可以执行多次撤销ctrl + r : 撤销的恢复更改
cw :更改光标所在处的字到字尾处c + w :例如: c3w 表示更改 3 个字跳至指定的行
ctrl + g 列出光标所在行的行号n + G 例如: 15G ,表示 移动光标至文章的第 15 行行首快速切换大小写
~ :快速切换大小写上面两种模式绝对是对文件的内容进行控制,但你编辑好一个文件,注定有文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作;
在命令模式下, : 即可进入该模式。要查看你的所有模式:打开 vim ,底行模式 直接输入
:help vim-modes 所以 底行模式 是让 vim 和包括但不限于 shell 进行交互的
列出行号
set nu :输入 set nu 后,会在文件中的每一行前面列出行号set nonu :输入 set nonu 后,取消文件中的每一行前面的行号跳到文件中的某一行
# : # 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15,再回车,就会跳到文章的第 15 行查找字符
/关键字 :先按 / 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往后寻找到您要的关键字为止,noh取消高亮?关键字 :先按 ? 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 会往前寻找到您要的关键字为止,noh取消高亮保存文件
w :在 : 后输入字母 w 就可以将文件保存起来离开 vim
q :按 q 就是退出,如果无法离开 vim,可以在 q 后跟一个 !强制离开vimwq :一般建议离开时,搭配 w 一起使用,这样在退出的时候还可以保存文件ZZ :保存并退出快捷键执行命令
!commend :不退出 vim ,可以进行 shell 命令的执行,常用函数查看分屏
vs filename :多文件分屏操作,ctrl + ww切换正在分屏的文件光标
在写代码的时候,我们总是要对代码上的调试,编写注释,所以注释代码的操作是必须要会的
ctrl + v 组合键来一套,这时可以看见左下角有 VISUAL BLOCK 字样(不难发现和 INSERT 字样十分相似,没错,此时正是在名为 可视化块模式(是可视化选择模式的一种) 的模式中):
hjkl 键来调整块区域,也可以利用 n + G 将光标跳至指定的第 n 行,例如:16GI ,不是 i// 注释(要输入和代码对应的注释语法格式)Esc 回到 命令模式 ,一次不行按两次非常麻烦 ^ ^
比加注释略微简单:
ctrl + v 组合键先来一套hjkl 键来调整块区域,也可以利用 n + G 将光标跳至指定的第 n 行,但此时要注意:我们选中的块要包含且仅包含用于注释的语法代码!!!(实际上是 选中 注释语法代码)d 完成(实际上是 删除 选中注释语法代码)在非 root 新用户进行 sudo 时,总是会出现相关权限问题,比如我执行以下指令:
sudo touch file.txt 此时会让你输入你的用户密码,接着就报出如下错误(我的用户名为 exercise ):

这里主要原因是为了 保护系统相关文件以及其他用户隐私,毕竟 sudo 提权是以普通用户的身份,却用 root 的权限执行后面的指令啊,更何况还是输入你自己的用户密码
讲白了,就是系统有充分的理由不信任你
那么如何让系统信任你,从而使用 sudo 提权?
首先报错信息就和你说了:
exercise(开头是你的非 root 用户名) is not in the sudoers file.
说你不在 sudoers 这个文件里,那么问题就在这个文件里,你需要在这个配置文件里添加自己的普通用户
云服务器的 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 提权的作用咯