终端文本编辑神器--Vim命令详解。如何配置Vim以及Vim插件?
本文最后更新于 2023年9月17日 上午
作者:Mintimate
Mintimate’s Blog,只为与你分享
Vim
Vim是一款跨平台的文本编辑器,不但可以运行在Unix,还可以运行在GNU、Windows平台,并且还支持丰富的插件,助力开发和使用。
很多人喜欢用Nano,或者是Emacs、Vi,其实都是文本编辑器,看个人习惯。
我个人觉得,Nano过于简单,Emacs过于强大,Vim比较折中……
发展历史
Vim是从vi发展出来的一个文本编辑器,相对于增强版本的vi。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。
2008年8月发布的Vim 7.2,算是一个“里程碑式”的版本,合并了Vim 7.1以来的所有修正补丁,并且加入了脚本的浮点数支持。
我们这篇文章,最好使用Vim 7.2以后的版本。
1 |
|
Vi&Vim
Vi是“Visual”的不正规的缩写,Vi于1976年以BSD协议授权发布。Vi拥有众多的衍生项目,Vim就是其中一个;主要区别:
- Vim完全继承Vi的原有操作。
- Vi仅支持单次撤回,Vim支持多次撤回。
- Vim用于丰富的插件系统。
- Vim支持更多操作系统平台(如:Windows)
Nano&Emacs
前文也说过这两个文本编辑器,这里也简单提一下:
Nano是非常轻便的文本编辑工具,很容易上手。如果您只想简单地编辑一些文本文件,Nano就足够了。(Vim对新手十分不友好,_我在B站做一些简单视频教程,用Vim,有些小白用户就无法理解,但是Nano就好很多_)。
Emacs相比Vim,更加强大,和上次介绍的screen工具一样,是“元老级”的GNU计划软件;使用Emacs还可以上网嗷。不过,个人认为使用难度,比Vim还高很多。有机会,再出一篇文章嗷。
文章同步
为了更方便大家阅读文章,本文同步发布在:
- 知乎:https://zhuanlan.zhihu.com/p/403291838
- CSDN:https://blog.csdn.net/weixin_43890033/article/details/119904589
- 腾讯云社区:https://cloud.tencent.com/developer/article/1867262
- 腾讯云计算社区:https://computeinit.com/archives/4757
另外,如果你喜欢Unix技术教程,或者是想了解代码实践,欢迎关注本站微信公众号:
最后,如果你觉得这篇文章写的不错的话,欢迎打赏支持嗷:爱发电
视频教程
嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷~B站视频地址:,https://www.bilibili.com/video/BV1kq4y197t4
如果你觉得这视频的不错的话,欢迎打赏支持嗷:爱发电
Vim练手建议
个人建议,想学习如何使用Vim,最好还是有台Linux来学习;Linux设备可以是Windows子系统,也可以是Linux服务器。
考虑到Linux服务器,价格便宜,而且快照功能方便,这里推荐:
另外,为非学生群体争取到优惠*(੭ˊᵕˋ)੭ଘ:
内部消息:Lighthouse经常动不动给用户免费升级配置嗷,所以建议一次买一年(*≧ω≦)。
如果你事先购买的Lighthouse是Windwos Server或者是CentOS,想切换至Debian,可以在Lighthouse后台进行重置:
Vim安装
想学Vim的使用,起码得先会安装吧╮( ̄▽ ̄””)╭。
前文说到,Vim跨平台,接下来就教大家在三大平台上怎么安装。
Vim其实是可以用GUI的,但是一般很少用GUI版本。主要讲命令行版本。
Linux
其实,一般的Linux发行版本和服务器厂商提供的镜像,是自带Vim的。比如腾讯云轻量应用服务器的Debian系统,均自带Vim:
如果你使用其他镜像,或者没安装Vim。使用软件包管理器即可:
1 |
|
编译参数参考:
1 |
|
如果你使用的CentOS,那么需要使用yum安装:gcc
、make
和ncurses-devel
。
之后不要忘记配置vim,到环境变量内,最终效果:
macOS
macOS一般自带Vim,但是如果你想自己安装。可以和上文一样手动编译,也可以使用Homebrew进行安装:
1 |
|
Homebrew版本vim优先级高于系统自带版本。如果不知道怎么安装Homebrew:一篇文章,多种方法安装Homebrew
Windwos
没错,Vim是垮系统的,Windows也可以安装。(这不比系统自带的文本编辑器好用?)
1. 下载Vim
首先我们进入Vim项目地址,下载Windows版本Vim:vim-win32-installer
2. 创建&解压
之后,我们在电脑的合适位置,创建一个目录,并解压Vim到其中:
3. 环境变量
最好,我们设置环境变量即可:
这个时候,我们使用CMD
、Powershell
和Windwos Terminal
就可以使用Vim了:
Vim基础使用
首先,Vim的具体使用,可以参考官方文档:Vim help
Vim基本分为三个基础模式:
- 命令模式(Command mode)
- 输入模式(Insert mode)
- 底线命令模式(Last line mode)
1. 命令模式
在使用vim打开或创建文件时,就是命令模式模式,比如:
这个时候,使用方向键,就是基础的上下行移动。其他的按键:
键盘上的组合按键 | 说明 |
---|---|
h 或方向键盘(←) | 光标向左移动一个字符 |
j 或方向键盘(↓) | 光标向下移动一个字符 |
k 或方向键盘(↑) | 光标向上移动一个字符 |
l 或方向键盘(→) | 光标向右移动一个字符 |
【Ctrl + f】 或 【Page Down】 | 屏幕『向下』移动一页 (常用) |
【Ctrl + b】或 【Page Up】 | 屏幕『向上』移动一页 (常用) |
G | 直达文件末尾(非常常用) |
gg | 移动到这个档案的第一行,相当于 1G (非常常用) |
n |
n 为数字。光标向下移动 n 行(常用) |
u | 撤销操作(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
n<空格> | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 |
0 或功能键【Home】 | 这是数字『 0 』:移动到这一行的最前面字符处 |
$ 或功能键【End】 | 移动到这一行的最后面字符处 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
Ctrl + d | 屏幕『向下』移动半页 |
Ctrl + u | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
同时,如果你想格式化代码,可以按:gg=G
,即可格式化代码。
2. 输入模式
在命令模式基础下,按规定按键即可。规定的按键(默认):
输入按键 | 描述 |
---|---|
i, I | 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) |
a, A | 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。 |
o, O | 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行! |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。 |
举个例子,在在命令模式基础下:
按I
即可进入输入模式(编辑模式):
如果你使用的是i
,那么按完后,再右移一个字符即可和图片效果一致。
我日常使用,为一般都是按i后,再右移一字符……主要是,按要按一个Shift切换大小写,有点麻烦……
在编辑好内容后,我们按ESC
键盘,即可回到命令模式:
3. 指令行模式
在命令模式下,输入:
即可进入指令行模式:
一些指令:
指令行指令 | 描述 |
---|---|
:w | 将编辑的数据写入硬盘档案中(不得不用系列) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vim (不得不用系列) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
:wq | 储存后离开,若为 :wq! 则为强制储存后离开 (不得不用系列) |
ZZ | 这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出) |
ZQ | 不保存,强制退出。效果等同于 **:q!**。 |
:w 【filename】 | 将编辑的数据储存成另一个档案(类似另存新档) |
:r 【filename】 | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w 【filename】 | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls ~/Downloads』即可在临时察看 Download底下以 ls 输出的档案信息! |
举个例子:我们在当前目录下编辑文件,但是想看看外面目录具体有什么文件,进而方便编写文件
回车执行,即可看到效果:
最好,按任意按键即可回到vim内。
Vim分屏
这里简单说一下分屏。
分屏的方法很多,比较简单的是打开文件时候进行分屏:
1 |
|
其中:
- o:垂直分屏
- O:水平分屏
- n:可以省略,省略后,由后面file参数决定分屏个数
如:
这个时候,如果想切换激活窗口。可以按Ctrl+w
+w
,即可顺时针切换。
Vim安装插件
没错,Vim是可以安装插件的,一般插件需要修改文件syntax
、filetype.vim
等等,也正因如此,Vim的上手门槛可以说是相当大。但是,在Vim8之后,安装Vim插件变得十分简单。我们可以直接克隆插件到:~/.vim/pack/plugins/start
目录内,之后Vim即可生效插件。当然,也很推荐使用一些Vim插件管理器:
- vim-plug:https://github.com/junegunn/vim-plug
- Dein.vim:https://github.com/Shougo/dein.vim
- Vundle.vim:https://github.com/VundleVim/Vundle.vim
- Pathogen.vim:https://github.com/tpope/vim-pathogen
每个插件用的人都很多,这边就介绍我平常使用的vim-plug
。
1. vim-plug
vim-plug的安装方法很简单,我们下载plug.vim,并放到用户下的autoload文件夹内。
之后编辑~/.vimrc
(也就是用户目录下的vimrc文件),添加内容:
1 |
|
记得保存文件嗷
1.1 Plug换源
因为vim-plug默认使用GitHub作为插件的抓去地址,但是因为一些原因,中国大陆连接GitHub有点困难大家可以根据自己网络环境,选择换源。
换源的方法很简单,编辑我们刚刚下载的plug.vim
文件:
1 |
|
搜索plug_url_format
和git::@github
,更改:
1 |
|
为
1 |
|
之后,保存并推出即可。接下来,就可以安装插件了。
2. 安装插件
这里我演示安装nginx.vim这个插件,用来格式化(代码高亮)Nginx的Conf文件。在没安装插件前,查看Nginx配置:
之后,我们到.vimrc
内添加nginx.vim这个插件:
1 |
|
之后,保存该文件并退出(:wq
),重新进入后,输入:PlugInstall
:
回车即可自动开始安装:
原理很简单,其实就是vim-plug插件,自动git clone插件到插件文件夹内
这个时候,我们输入:q
退出,再看看Nginx的配置文件:
其他实用插件,大家可以到网上自己获取嗷。(比如:自动格式化代码?)
3. 卸载插件
最后,如何卸载插件呢?其实很简单,在~/.vimrc
内,删除插件,之后执行:PlugClean
即可。具体可以参考官网文档:
Command | Description |
---|---|
PlugInstall name … | Install plugins |
PlugUpdate name … | Install or update plugins |
PlugClean! | Remove unlisted plugins (bang version will clean without prompt) |
PlugUpgrade | Upgrade vim-plug itself |
PlugStatus | Check the status of plugins |
PlugDiff | Examine changes from the previous update and the pending changes |
PlugSnapshot! | Generate script for restoring the current snapshot of the plugins |
Vim番外
其实,Vim也可以愉快地写Markdown,使用项目:Markdown-preview.nvim
之后,编辑.md
结尾的Markdown文件,可以调用浏览器进行预览:
END
其实,Vim最为一个强大的文本编辑器,又经过几十年的迭代,已经进入8.x版本,并且即将9.x版本。受限于篇幅,只能讲这么多,但是这些操作已经饱含入门和插件,总体来说够用了。
有机会,进一步给大家进行分享嗷。另外,“挖坑”Emacs,有机会填上~