一.环境配置
1.Centos
通过下面的命令来查看已经安装的 Vim 版本
yum list installed | grep vim
如果输出只有下面这样的内容的话,就说明安装的 Vim 版本只有基本功能:
vim-minimal.x86_64 2:8.0.1763-13.el8 @System
安装图形界面的 Vim
sudo yum install vim-X11
如果不在这台机器上进行图形界面登录的话,安装增强版本的 Vim
sudo yum install vim-enhanced
2.Debian和Ubuntu系
如果使用标准的 GNOME
桌面环境的话,安装 vim-gtk3
或 vimgnome
。
如果使用 KDE
桌面的话,安装 vim-gtk
。
如果只使用文本
界面的话,安装 vim-nox
。
查看已经安装的vim版本
apt list --installed | grep vim
在 Ubuntu 上,vim 和 gvim 都是指向同一个应用程序的符号链接,且 gvim
的执行效果和 vim -g
相同.
3.Mac安装vim
装了 Homebrew
之后,一般情况下,你需要修改你的 .bash_profile
(如果使用 Bash
的话)、.zprofile
(如果使用 Zsh 的话)或是相应的 shell 的配置文件,调整 PATH,把
/usr/local/bin
放到 /usr/bin
前面。在 .bash_profile
里这样配置的:
if [[ $PATH != "$HOME/bin"* ]]; then
PATH=~/bin:/usr/local/bin:/usr/local/sbin:`echo $PATH|sed -e "s!:$HOME/bin!!
fi
brew安装
brew install macvim
4.Windows安装
官网下载后,安装配置选项,勾选“安装批处理文件”Create .bat files
,去掉“创建默认配置文件”Create Default Config
,点击安装。
完成安装后,Vim 会缺省打开一个 README 文件。在这个窗口中,我们应当键入“:e ~_vimrc”
按回车键,然后把下面的内容粘贴进去
set enc=utf-8
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
键入“ZZ”(大写)存盘退出
5.Unix 和 Windows下的 Vim 配置的区别:
-
点打头的 Vim 文件都成了“_”打头,如
.viminfo
也成了_viminfo
-
点打头的 Vim 配置目录
.vim
在 Windows 下则成了vimfiles
-
由于 Vim 的生态主要在 Unix 上,某些 Vim 的插件在 Windows 上安装配置需要花费更大的力气。但就一般的文本和程序编辑而言,Vim 在Windows 下和 Linux 下没有本质的不同。甚至 Windows 下还有一个小小的优势:Unix下虽然 Vim 可以编译成支持 Python 2 和 Python 3,但在 Vim 里一旦执行了 Python 2的代码,就不能再执行 Python 3 的代码了;反之亦然。Windows 下则没有这个限制。
5.远程使用vim
要特别注意的,是远程终端软件的远程字符
集(如 PuTTY 中的“Windows > Translation > Remote character set”)应当设置成UTF-8
。
6.帮助文件
如果是windows环境,需要改.vim
为vimfiles
cd ~/.vim
mkdir -p pack/my/start
git clone https://github.com/yianwillis/vimcdoc.git pack/my/start/vimcdoc
二.基本概念和基础命令
1.vim命令速查表
2.vim的四种模式
- 正常(normal)模式(也称为普通模式),缺省的编辑模式;
如果不加特殊说明,一般提到的命令都直接在正常模式下输入;在任何其他模式中,都可以通过键盘上的 Esc 键回到正常模式
- 插入(insert)模式,输入文本时使用;
比如在正常模式下键入 i
(insert)或a
(append)即可进入插入模式
- 可视(visual)模式,用于选定文本块;
可以用键 v
(小写)来按字符选定,Vim 里也提供其他不同的选定方法,包括按行和按列块
- 命令行(command-line)模式,用于执行较长、较复杂的命令;
在正常模式下键入冒号:
即可进入该模式;使用斜杠/
和问号?
开始搜索也算作命令行模式。命令行模式下的命令要输入回车键Enter
才算完成
Vim 里的大部分操作会在正常模式下完成。如果你做编辑工作时有超过几秒的停顿,就应当考虑按下 Esc 键,回到正常模式。记住,正常模式就是正常情况下你应当处于的模式
查看当前编辑文件的文件类型
:set ft?
3.基本编辑任务
最基本的配置文件
set enc=utf-8
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
一些配置说明
# 设置编辑文件的内码
set enc=utf-8
# 保留撤销编辑的能力
set nobackup
# 把撤销文件放在用户特定目录下
set undodir=~/.vim/undodir
github的示例配置:https://github.com/adah1972/geek_time_vim
4.文本修改
d
加动作来进行删除(dd 删除整行
);D
则相当于 d$,删除到行尾。
c
加动作来进行修改(cc 修改整行
);
C
则相当于 c$,删除到行尾然后进入插入模式。
s
相当于 cl,删除一个字符然后进入插入模式;
S
相当于 cc,替换整行的内容。
i
在当前字符前面进入插入模式;
I
则相当于 ^i,把光标移到行首非空白字符上然后进入插入模式。
a
在当前字符后面进入插入模式;
A
相当于 $a,把光标移到行尾然后进入插入模式。
o
在当前行下方插入一个新行,然后在这行进入插入模式;
O
在当前行上方插入一个新行,然后在这行进入插入模式。
r
替换光标下的字符;
R
则进入替换模式,每次按键(直到
u
撤销最近的一个修改动作;
U
撤销当前行上的所有修改。
5.文本对象选择
dw
(理解为delete word),删除光标后面的部分(包括空格),结果是:
diw
(理解为delete inside word),删除当前单词,结果是:
daw
(理解为 delete a word),删除当前单词以及前面的空格
diW
daW
6.更快的移动
我们可以使用 PageUp
和 PageDown
来翻页,但 Vim 更传统的用法是 C-B
和 C-F
,C
指的是Ctrl,B、F分别代表 Backward 和 Forward。
除了翻页,Vim 里还能翻半页,有时也许这种方式更方便,需要的键是 C-U
和 C-D
,Up
和 Down
。
只关心当前屏幕的话,可以快速移动光标到屏幕的顶部、中间和底部:用 H
(High)、 M
(Middle)和 L
(Low)就可以做到。
7.Vim 安装目录写的运行支持文件
Vim 的工作环境是由运行支持文件来设定的,在不同的平台上有着相似的目录结构。
在大部分的Unix系统的位置是/usr/share/vim/vim82
macOS Homebrew
下:/usr/local/opt/macvim/MacVim.app/Contents/Resources/vim/runtime
Windows 下:C:\Program Files (x86)\Vim\vim82
最常用的子目录应该是下面 这几个:
-
syntax
:Vim 的语法加亮文件 -
syntax
目录显示了,Vim 对各种不同的文件类型提供了语法加亮支持,比如python.vim
对python文件的支持。
-
doc
:Vim 的帮助文件 -
colors
:Vim 的配色方案 -
plugin
:Vim 的“插件”,即用来增强 Vim 功能的工具 -
- plugin中有很多系统内置的插件,具体功能见下图。
除了
rrhelper
和spellfile
属于功能支持插件,没有自己的帮助页面,其他功能都可以使 用:help
命令来查看帮助。比如查看zip的功能,使用:help zip
查看
- plugin中有很多系统内置的插件,具体功能见下图。
除了
注意:
Vim 的安装目录是不应该去修改的,首先,你可能没有权限去修改这个目录;其次,即使你有修改权限,这个目录会在 Vim 升级时被覆盖,你做的修改也会丢失。用户自己的配置应当放在自己的目录下(Unix 下的 .vim,Windows 下的 vimfiles),这个目录应和 Vim 安装目录下的运行支持文件目录有 相同的结构。如果一个同名文件出现用户自己的 Vim 配置目录里和 Vim 的安装目录里,用户的文件优先。
换句话说,修改 Vim 行为最简单的一种方式,就是把一个系统的运行支持文件复制到自己 的 Vim 配置目录下的相同位置,然后修改其内容。
8.Vim 软件包
1.为什么使用包管理器
Vim 的目录结构有点传统 Unix 式:一个功能用到的文件可能会分散在多个目录下。就像 传统 Unix 上 Vim 的文件可能分散在 /usr/bin、/usr/share/man、/usr/share/vim 等目录下一样,一个 Vim 的插件(严格来讲,应该叫包)通常也会分散在多个目录下:
-
插件的主体通常在 plugin 目录下
-
插件的帮助文件在 doc 目录下
-
有些插件只对某些文件类型有效,会有文件放在 ftplugin 目录下
-
有些插件有自己的文件类型检测规则,会有文件放在 ftdetect 目录下
-
有些插件有特殊的语法加亮,会有文件放在 syntax 目录下
但是按文件类型老组织目录呢,而不是按相关性,没办法用git管理。后来vim出现一些包管理器,基本模式是相通的:每个包有自己的目录,然后这些目录会被加入Vim的运行时路径(runtimepath)选项里。从 Vim 8 开始,Vim 官方也采用了类似的体系。Vim 会在用户的配置目录(Unix 下是 $HOME/.vim ,Windows 下 是 $HOME/vimfiles )下识别名字叫 pack
的目录,并在这个目录的子目录的 start
和 opt
目录下寻找包的目录。
有了这样的目录结构,用户要自己安装、管理包就方便多了。不过,我们还是推荐使用一个包管理器。包管理器可以带来下面的好处:
-
根据文本的配置(一般写在 vimrc 配置文件里)决定要安装哪些包
-
自动化安装、升级和卸载,包括帮助文件的索引生成