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

2021-08-25 11:59:01 浏览数 (1)

作者:Mintimate

博客:https://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以后的版本。

代码语言:txt复制
# 查看当前vim版本
vim --version
我使用的Vim版本是8.2嗷我使用的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的。比如腾讯云轻量应用服务器的Debian系统,均自带Vim:

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

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

代码语言:txt复制
# CentOS
yum install vim
# Ubuntu/Debian
apt-get install vim
# Archlinux
pacman -S vim
软件包安装Vim软件包安装Vim

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

编译参数参考:

代码语言:txt复制
# 当前在源码内
./configure
make && make install
编译安装编译安装

macOS

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

代码语言:txt复制
brew install vim

Homebrew版本vim优先级高于系统自带版本。

Windwos

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

1. 下载Vim

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

我的Windows为x86_x64我的Windows为x86_x64

2. 创建&解压

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

效果效果

3. 环境变量

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

设置环境变量设置环境变量

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

Windows TerminalWindows 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 (非常常用)

n<Enter>

n 为数字。光标向下移动 n 行(常用)

u

撤销操作(常用)

nG

n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)

n<空格>

那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20<space> 则光标会向后面移动 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命令使用ls命令

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

Vim分屏

这里简单说一下分屏。

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

代码语言:txt复制
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: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文件夹内

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

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

代码语言:txt复制
call plug#begin('~/.vim/plugged')
call plug#end()
腾讯云轻量应用服务器腾讯云轻量应用服务器
WindwosWindwos

记得保存文件嗷

2. 安装插件

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

查看Nginx配置查看Nginx配置

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

代码语言:txt复制
call plug#begin('~/.vim/plugged')
Plug 'chr4/nginx.vim'
call plug#end()
在刚刚的Plug内添加在刚刚的Plug内添加

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

PlugInstallPlugInstall

回车即可自动开始安装:

安装成功安装成功

原理很简单,其实就是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

安装Markdown插件安装Markdown插件

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

使用效果使用效果

END

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

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

0 人点赞