vim 9 的安装与基础设置
vim 9.0 的安装与基础设置
不知不觉鸽了这么久...不过都2024年了,谁还用 vim 啊。是 IDE 不够香还是 VScode 的插件不够倒腾?
哈哈哈,你问我为啥还在用?懒得换罢了。
下载 vim 并创建 ~/.vim
文件夹
现在所有与 vim
相关的文件都可以被移动到 ~/.vim
下了。(实际上很早以前就可以了)
虽然 .vimrc
依然可以用,但笔者建议将使用 ~/.vim/vimrc
。(home 文件夹已经有足够乱七八糟的 dot 文件了,少一个是一个)
# 下载 vim
sudo apt-get install vim-nox
# 创建 ~/.vim 文件夹及其附属内容
mkdir -p ~/.vim/{after, pack}
touch ~./vim/vimrc
touch ~/.vim/viminfo
笔者使用 WSL下的 Debian,因此使用 apt 管理包。
如果直接 sudo apt-get install vim
的话,安装下来的 vim 不支持脚本语言。笔者有插件需要 python3 功能。
如果读者希望下载其他版本的 vim,建议自行查阅资料,确认需求。
~/.vim
文件夹有啥用?
~/.vim
下有很多可以放置配置的地方,下面列举部分文件夹和文件。
~/.vim/colors
- 存放绘制颜色的文件(网上下载的 color scheme 放这里);~/.vim/plugin
- 每次启动 vim 时都会运行一次;~/.vim/ftdetect
- 放置与文件检测相关的文件;~/.vim/ftplugin
- 当 vim 检测到特定类型的文件后,会运行该文件夹下关联文件;~/.vim/indent
- 当 vim 检测到特定类型的文件后,会运行该文件夹下关联文件;~/.vim/syntax
- 当 vim 检测到特定类型的文件后,会运行该文件夹下的关联文件;~/.vim/after
- 内部文件在最后执行;~/.vim/autoload
- 内部文件只在特定条件下运行;~/.vim/doc
- 存放程序相关文档。笔者更喜欢在.vimrc
内留注释,毕竟没多少内容。~/.vim/pack
- vim 本地的 plugin 管理文件夹 (vim 8.0 feature);~./vim/filetype.vim
- 内部放置额外的文件类型 (功能与ftdetect
文件夹相似)。
进入 vim 后自动进入 REPLACE 模式的修复方法
在 CLI 中 输入 vim
打开 vim,如果发现自己在 -- REPLACE --
模式,则在 .vimrc
中加入这一行加入:
set ambw=double
" Solution from https://superuser.com/questions/
" 1284561/why-is-vim-starting-in-replace-mode
" by Zoran Bikicki
之后再次进入 vim 就正常了。
在 ~/.vim/vimrc
中加入基础常用设置
-
修复 vim 启动后进入
-- REPLACE --
模式" fix vim starting in -- REPLACE -- mode set ambw=double
首先,把这个小 fix 加入设置之中。如果读者没有这个问题,略过即可。
-
使用
.vim/viminfo
而不是~/.viminfo
" - Solution from https://vi.stackexchange.com/questions/ " 14357/moving-viminfo-file-to-vim-dir " by statox set viminfo+=n~/.vim/viminfo
-
加入兼容性选项
" Compatibility options set nocompatible " vim, not vi set laststatus=2 " always shows status lines set magic " common regex
nocompatible
使 vim 不再兼容 vi。大部分插件都需要打开这个选项。laststatus
有三个值:- 0,不显示状态栏
- 1,在窗口少的情况下显示状态栏
- 2,永远显示状态栏
部分插件需要永远显示状态栏才能正常运行(笔者没有这样的插件),但笔者自己配置了 vim 的状态栏,因此希望它一直显示。
magic
是与 vim 中的正则表达式挂钩的选项。如果不选择,那 vim 中的正则表达式很难用。 -
关闭声音提示
" Turn off alarm sound set visualbell " turn-off alarm sound set t_vb= " do nothing for bell
关闭魔性提示音,并关闭屏幕闪烁。
-
启用文件后缀检测与相关功能
" Set filetype options filetype on filetype plugin on filetype indent on syntax on
必要的选项,让 vim 根据文件类型启用插件、格式和语法文件。
-
设置
tab
键相关的选项" Tab options set shiftwidth=4 " tab is 4 whitespace wide set softtabstop=4 " tab alignment set expandtab " expand tabs into whitespace
这是个人习惯的设置,有些人喜欢 2 格的 tab 长度,笔者比较喜欢 4 格。
expandtab
会把 tab 键拓展成 空格。这对文件的格式很有帮助,有些地方 tab 键是 8格,这时候文件内的 tab 会使排版错乱。而转换成空格就没有关系了。如果不想把 tab 转换成空格,那么把 空格 转换成 tab 的方法是:
:set noexpandtab :retab!
-
vim 命令行设置
set wildmenu " enhance command-line auto-completion set wildignore=*.o " files matched will be ignored by wildmenu set wildmode=longest:list " Completion mode
wildmenu
将允许 vim 自动补全命令行的指令。
wildignore
在补全文件时忽略掉部分文件
wildmode
是命令行补全时的填充方式,笔者建议:h wildmode
查看文档并选择自己喜欢的模式。 -
性能配置
" Performance options set lazyredraw " Redraw only if needed
lazyredraw
减少刷新的次数。开不开都行,笔者喜欢开着。
ref:
Superuser: Why is vim starting in replace mode - visited on 2024-01-25
Linuxize: How to search in Vim / Vi
Vimcast: Tidying whitespace
Vi Stackex: How can I set up a ruler at a specific column?