终端文本编辑神器--Vim命令详解。如何配置Vim以及Vim插件?

6,245 阅读11分钟

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」。

作者:Mintimate

博客:www.mintimate.cn

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以后的版本。

# 查看当前vim版本
vim --version

我使用的Vim版本是8.2嗷

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还高很多。**有机会,再出一篇文章嗷。

视频教程

为了方便观看,配套视频教程已经发布在B站嗷。~B站视频地址:,www.bilibili.com/video/BV1kq…

嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连

Vim练手建议

个人建议,想学习如何使用Vim,最好还是有台Linux来学习;Linux设备可以是Windows子系统,也可以是Linux服务器。

Vim安装

想学Vim的使用,起码得先会安装吧╮( ̄▽ ̄"")╭。 前文说到,Vim跨平台,接下来就教大家在三大平台上怎么安装。

Vim其实是可以用GUI的,但是一般很少用GUI版本。主要讲命令行版本。

Linux

其实,一般的Linux发行版本和服务器厂商提供的镜像,是自带Vim的。比如:

服务器自带的Vim

如果你使用其他镜像,或者没安装Vim。使用软件包管理器即可:

# CentOS
yum install vim
# Ubuntu/Debian
apt-get install vim
# Archlinux
pacman -S vim

软件包安装Vim

当然,你也可以源码编译,官方源码下载Gitee源码镜像

编译参数参考:

# 依赖安装
sudo apt install build-essentials git make
sudo apt install libncurses-dev clang
# 当前在源码内
./configure --prefix=/usr/local/vim
make && make install

如果你使用的CentOS,那么需要使用yum安装:gccmakencurses-devel。 之后不要忘记配置vim,到环境变量内,最终效果: 编译安装

macOS

macOS一般自带Vim,但是如果你想自己安装。可以和上文一样手动编译,也可以使用Homebrew进行安装:

brew install vim

Homebrew版本vim优先级高于系统自带版本。如果不知道怎么安装Homebrew:一篇文章,多种方法安装Homebrew

Windwos

没错,Vim是垮系统的,Windows也可以安装。(这不比系统自带的文本编辑器好用?)

1. 下载Vim

首先我们进入Vim项目地址,下载Windows版本Vim:vim-win32-installer

我的Windows为x86_x64

2. 创建&解压

之后,我们在电脑的合适位置,创建一个目录,并解压Vim到其中:

效果

3. 环境变量

最好,我们设置环境变量即可:

设置环境变量

这个时候,我们使用CMDPowershellWindwos Terminal就可以使用Vim了:

Windows Terminal

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 (非常常用)
nn 为数字。光标向下移动 n 行(常用)
u撤销操作(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
n<空格>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 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 输出的档案信息!

举个例子:我们在当前目录下编辑文件,但是想看看外面目录具体有什么文件,进而方便编写文件

输入命令

回车执行,即可看到效果:

使用ls命令

最好,按任意按键即可回到vim内。

Vim分屏

这里简单说一下分屏。

分屏的方法很多,比较简单的是打开文件时候进行分屏:

vim -o/O[n] file1 [file2 ...]

其中:

  • o:垂直分屏
  • O:水平分屏
  • n:可以省略,省略后,由后面file参数决定分屏个数

如: 同时打开两个文件 结果

这个时候,如果想切换激活窗口。可以按Ctrl+w+w,即可顺时针切换。

Vim安装插件

没错,Vim是可以安装插件的,一般插件需要修改文件syntaxfiletype.vim等等,也正因如此,Vim的上手门槛可以说是相当大。但是,在Vim8之后,安装Vim插件变得十分简单。我们可以直接克隆插件到:~/.vim/pack/plugins/start目录内,之后Vim即可生效插件。当然,也很推荐使用一些Vim插件管理器:

每个插件用的人都很多,这边就介绍我平常使用的vim-plug

1. vim-plug

vim-plug的安装方法很简单,我们下载plug.vim,并放到用户下的autoload文件夹内

腾讯云轻量应用服务器Debian

Windwos操作

之后编辑~/.vimrc(也就是用户目录下的vimrc文件),添加内容:

call plug#begin('~/.vim/plugged')
call plug#end()

腾讯云轻量应用服务器

Windwos

记得保存文件嗷

1.1 Plug换源

因为vim-plug默认使用GitHub作为插件的抓去地址,但是因为一些原因,中国大陆连接GitHub有点困难大家可以根据自己网络环境,选择换源。 换源的方法很简单,编辑我们刚刚下载的plug.vim文件:

# 当前在autoload文件夹内
vim plug.vim

编辑plug.vim 搜索plug_url_formatgit::@github,更改:

let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
\ '^https://git::@github\.com', 'https://github.com', '')

let fmt = get(g:, 'plug_url_format', 'https://git::@hub.fastgit.org/%s.git')
\ '^https://git::@hub.fastgit\.org', 'https://hub.fastgit.org', '')

修改内容 修改后 之后,保存并推出即可。接下来,就可以安装插件了。

2. 安装插件

这里我演示安装nginx.vim这个插件,用来格式化(代码高亮)Nginx的Conf文件。在没安装插件前,查看Nginx配置:

查看Nginx配置

之后,我们到.vimrc内添加nginx.vim这个插件:

call plug#begin('~/.vim/plugged')
Plug 'chr4/nginx.vim'
call plug#end()

在刚刚的Plug内添加

之后,保存该文件并退出(:wq),重新进入后,输入:PlugInstall:

PlugInstall

回车即可自动开始安装:

安装成功

原理很简单,其实就是vim-plug插件,自动git clone插件到插件文件夹内

这个时候,我们输入:q退出,再看看Nginx的配置文件:

插件已经生效

其他实用插件,大家可以到网上自己获取嗷。(比如:自动格式化代码?)

3. 卸载插件

最后,如何卸载插件呢?其实很简单,在~/.vimrc内,删除插件,之后执行:PlugClean即可。具体可以参考官网文档

CommandDescription
PlugInstall name ...Install plugins
PlugUpdate name ...Install or update plugins
PlugClean!Remove unlisted plugins (bang version will clean without prompt)
PlugUpgradeUpgrade vim-plug itself
PlugStatusCheck the status of plugins
PlugDiffExamine 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

安装Markdown插件

之后,编辑.md结尾的Markdown文件,可以调用浏览器进行预览:

使用效果

END

其实,Vim最为一个强大的文本编辑器,又经过几十年的迭代,已经进入8.x版本,并且即将9.x版本。受限于篇幅,只能讲这么多,但是这些操作已经饱含入门和插件,总体来说够用了。

有机会,进一步给大家进行分享嗷。另外,“挖坑”Emacs,有机会填上~