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

Terminal上不知道怎么编辑文本?如何使用Vim命令后快速编辑文本?Vim只会基础操作,甚至基础操作都不会?
快来进来学学,可能有点难,但是绝对实用,助力你的Linux运维、开发!

作者:Mintimate

Mintimate’s Blog,只为与你分享
封面嗷

Vim

Vim是一款跨平台的文本编辑器,不但可以运行在Unix,还可以运行在GNU、Windows平台,并且还支持丰富的插件,助力开发和使用。

很多人喜欢用Nano,或者是Emacs、Vi,其实都是文本编辑器,看个人习惯。

我个人觉得,Nano过于简单,Emacs过于强大,Vim比较折中……

文章讲从:vim的历史、vim的安装与使用和vim插件的安装,三个角度解析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还高很多。有机会,再出一篇文章嗷。

Vim安装

想学Vim的使用,起码得先会安装吧╮( ̄▽ ̄””)╭。前文说到,Vim跨平台,接下来就教大家在三大平台上怎么安装。 Vim其实是可以用GUI的,但是一般很少用GUI版本。主要讲命令行版本。

Linux

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

均自带Vim:

腾讯云轻量应用服务器
腾讯云自带的Vim

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

# CentOS
yum install vim
# Ubuntu/Debian
apt-get install vim
# Archlinux
pacman -S vim
软件包安装Vim

当然,你也可以源码编译:vim项目地址

图标
Vim

编译参数参考:

# 依赖安装
sudo apt install git
sudo apt install make
sudo apt install clang
# 当前在源码内
./configure
make && sudo make install
编译安装成功

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. 环境变量

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

设置环境变量

这个时候,我们使用CMD、Powershell和Windwos Terminal就可以使用Vim了:

Windows Terminal

Vim基础使用

首先,Vim的具体使用,可以参考官方文档:Vim helpVim基本分为三个基础模式:

  • 命令模式(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是可以安装插件的,一般插件需要修改文件syntax、filetype.vim等等,也正因如此,Vim的上手门槛可以说是相当大。但是,在Vim8之后,安装Vim插件变得十分简单。我们可以直接克隆插件到:~/.vim/pack/plugins/start目录内,之后Vim即可生效插件。

当然,也很推荐使用一些Vim插件管理器:

vim-plug:https://github.com/junegunn/vim-plug

vim-plug
vim-plug

Dein.vim:https://github.com/Shougo/dein.vim​

VundleVim:https://github.com/VundleVim/Vundle.vim

图标

Pathogen.vim:https://github.com/tpope/vim-pathogen​

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

1. vim-plug

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

腾讯云轻量应用服务器Debian
Windwos操作

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

call plug#begin('~/.vim/plugged')
call plug#end()
Linux&amp;macOS
Windwos Powershell

记得保存文件嗷

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文件,可以调用浏览器进行预览:

使用vim,通过Terminal编辑Markdown并实时预览

END

其实,Vim最为一个强大的文本编辑器,又经过几十年的迭代,已经进入8.x版本,并且即将9.x版本。受限于篇幅,只能讲这么多,但是这些操作已经饱含入门和插件,总体来说够用了。有机会,进一步给大家进行分享嗷。另外,“挖坑”Emacs,有机会填上~

PS:觉得图文有用,前文记得点赞、收藏啊( ´▽`)

本文来自腾讯云计算社区,转载请注明出处:https://computeinit.com/archives/4757

发表评论

登录后才能评论
交流群