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 中加入基础常用设置

  1. 修复 vim 启动后进入 -- REPLACE -- 模式

    " fix vim starting in -- REPLACE -- mode
    set ambw=double
    

    首先,把这个小 fix 加入设置之中。如果读者没有这个问题,略过即可。

  2. 使用 .vim/viminfo 而不是 ~/.viminfo

    " - Solution from https://vi.stackexchange.com/questions/
    " 14357/moving-viminfo-file-to-vim-dir
    " by statox
    set viminfo+=n~/.vim/viminfo
    
  3. 加入兼容性选项

    " 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 中的正则表达式很难用。

  4. 关闭声音提示

    " Turn off alarm sound
    set visualbell      " turn-off alarm sound
    set t_vb=           " do nothing for bell
    

    关闭魔性提示音,并关闭屏幕闪烁。

  5. 启用文件后缀检测与相关功能

    " Set filetype options
    filetype on
    filetype plugin on
    filetype indent on
    syntax on
    

    必要的选项,让 vim 根据文件类型启用插件、格式和语法文件。

  6. 设置 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!
    
  7. 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 查看文档并选择自己喜欢的模式。

  8. 性能配置

    " 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?

posted @ 2024-05-28 06:37  总之先找时光机!  阅读(151)  评论(0编辑  收藏  举报