要论Linux纯命令行下什么编辑器最得心应手?当属vim。要论Linux下哪个编辑器对新手极度不友好?当属vim。
为了更方便大家学习vim,我觉得有空可以去看看B站的一个视频:LINK
1.vim是什么?及其背景
有关vim的作者经历可以参考:LINK
vim是一款Linux下文本编辑神器,类似于我们Windows下的记事本,不过vim具有强大的可定制扩展功能,当然还有他那比较复杂的操作方式。
不同于我们平常用的office办公软件,虽然用起来有点冗余,但是全部是图形化界面什么功能只需要鼠标点击的方式进行,可谓是基本没什么使用学习成本却也提供了客观的功能。
vim是上世纪的产物,大概上世纪七八十年代,由Bram Moolenaar程序员写的。那个年代电脑初步发展,当时的电脑基本都是以命令行的形式进行控制的,没有现在这么方便的图形化界面。而且在当时操作系统、软件的发展也都处于萌芽状态,微软尝试做图形化界面也都是vim诞生十年后的事情了,我们的vim作者正值买回来了一台电脑,因为市面上没有或者说难以找到心仪的文本编辑器,Bram Moolenaar就自己动手写了一款文本编辑器,最开始是给自己用的,但是后来在一些程序员交流会上(当时一般程序员交流会都是线下)作者看到大多数程序员都有一些文本编辑的烦恼——没有趁手的文本编辑器…所以Bram Moolenaar也就把自己开发的软件贡献了出来。但当时来说vim还处于最初的版本,后来因为vim确实是比较好用(在当时来说),vim就靠着类似于U盘拷贝的方式在程序员界大受欢迎,用的人多了自然也就有人会对其进行改进为Bram Moolenaar提供改进建议,提供改进代码…还有人甚至把vim移植到了不同的操作系统上(当时没有Windows系统,都是一些比较古老的操作系统,彼此相对分割)。如此以来,在当初Unix系统的年代,为后来诞生的Linux系统提供了一个很好的文本编辑器,这也就是后来Linux诞生,大都预装了vim…当然这也解释了为什么vim的操作为什么那么复杂和复古,毕竟是半个世纪前的产物…
虽然说vim的年龄比较大(大概五十岁???),但是由于Bram Moolenaar等人的坚持维护和更新,在当今vim依然具有强大的功能和高度可拓展性,唯一的槽点就是学习成本比较高…
Vim的作者Bram Moolenaar直到2023年六月份都在维持对vim的更新,之后停更,原因是作者去世了。我认为不用太过担心,因为这个软件十分‘’畅销‘’,所以说肯定会有人继续去完成vim的更新工作,就当前的功能来说,vim功能已经十分强大了,肯定够用…
因为vim的操作比较复杂,下面仅仅介绍一些基本的常用命令。
2.vim操作与命令
一开始,vim默认进入的是命令模式,想要编辑内容,需要按i
键进入插入模式进行编辑,按esc
键回退到命令模式,按:
键进入底行模式,输入wq!
才可以进行保存退出。
- 插入模式:编辑模式
- 命令模式:允许使用者通过命令,来进行文本的编辑控制
- n + yy 复制当前行
- n + p 粘贴到下一行
- u 撤销 ctrl + r 恢复
- n + dd 剪切/删除指定行、连续的多行
- 光标移动
- shift + 4 = $ 光标定位到当前行的行尾
- shift + 6 = ^ 光标定位到当前行的开始
- gg 光标定位到整个文本的最开头
- n + shift + g = G 光标定位到整个文本的最后一行
- n + h 左 j 下 k 上 l 右
- w 光标以单词为单位后移
- b 光标以单词为单位前移
- shift + ` = ~ 大小写快速切换
- n + x 删除光标后续的字符
- n + shift + x 删除光标之前的字符
- n + r 对光标指定位置的字符进行替换
- shift + r = R 进入替换模式
- 底行模式:用来进行vim进行但不限于shell进行交互
- w 保存
- q 退出
- wq 保存并退出
- ! 强制
- set nu\nonu 打开\去掉行号
- / 关键字搜索
- !command 不退出vim,可以进行shell命令的执行,常用函数查看
- vs filename 分屏、多屏操作
- ctrl + w + w 屏幕间切换
3.vim异常退出问题
当vim因为强制停止和掉网等原因异常退出时,vim默认会在当前目录下形成临时文件比如:xxx.swp
- ctrl + z + z 强制暂停 --> kill 进程
a. ps ajx | grep vim 查看进程
b. jobs 查看后端任务
c. kill -9 对应进程 杀掉进程 - 直接关闭xshell 掉网
a. 在当前目录下删除临时文件
b. 在提示下删除临时文件
4.批量化注释和去注释
- 批量化注释
a. ctrl v 进入视图模式
b. hjkl 区域选择,常用j进行下翻
c. shift + i = I 进入插入模式
d. // 写上注释
e. ESC 退出插入模式 - 批量化去注释
a. ctrl v 进入视图模式
b. hjkl 区域选择
c. d 删除
5.vim配置
vim默认是比较难用的,写代码跟Windows上的记事本差不多,甚至不如Windows上的记事本好用…但是经过定制化的vim用习惯的情况下是十分好用的。
下面介绍一条一键配置vim的命令:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
EOF