蚊章汇 - Lukáš Zapletal
type: channel
link: https://linuxcn.bwsl.wang/author/1629/
description: Lukáš Zapletal
items: 简简单单的 Vim 就很好

简简单单的 Vim 就很好
type: item
date: 2022-03-05T00:16:09+08:00
description: 这就是我如何从 35 个 Vim 插件降到只有 6 个的原因。当你用 —clean 选项启动 Vim 时，它以 “素” 模式展示 Vim。没有插件、没有配置，一切回到了最初。多年来，我收集了一堆配置语句，其中一些可以追溯到 MS-DOS 或 Windows 3.1 时期。我是这样打算的：从头开始，只用 Fedora 35 中可用的插件，找到一个好的配置起点。我可以在一周的编码生活中生存下来吗？我会找到答案的！规则是这样的：尽可能少的配置语句，并且只使用 Fedora 35+ 中的插件。顺便说一下，如果你不是 Fedora 用户，也请继续阅读。你可以随时从你的操作系统软件包管理器手动安装或者使用 Vim 插件管理器安装这些插件。在我开始之前，有一个大问题需要解决：用 Vim 还是 Neovim（Vim 的一个复刻）。好吧，这由你决定。这篇文章中的所有内容应该对两者都适用。然而，我只用 Vim 测试过。当你登录到一个只有 vi 可用的服务器时，所有的这些技能都会派上用场。它可以是一个旧的 UNIX 系统、一个安装了最少的软件以提高安全性的 Linux 服务器、一个容器中的交互式 shell，或者一个空间宝贵的嵌入式系统。闲话少说，下面是我提炼出来的使用 Vim 进行编码的绝对最低限度的东西：# dnf install --allowerasing vim-default-editor \ vim-enhanced \ vim-ctrlp \ vim-airline \ vim-trailing-whitespace \ vim-fugitive \ vim-ale \ ctags 不要担心 —allowerasing 选项。在确认之前，只需查看一下安装的东西。这个选项的作用是告诉软件包管理器把现有的 nano-default-editor 包替换为 vim-default-editor。这是一个小软件包，它在 shell 配置文件中将 EDITOR 环境变量设置为 vim，如果你想默认使用 Vim（例如，与 git 一起使用），这是必须的。这是专门针对 Fedora 的。你不需要在其他发行版或操作系统上这样做，只要确保你的 EDITOR shell 变量被正确设置就行。概览简单介绍一下我认为好的、干净的插件集：CtrlP：尽可能小的模糊查找插件（纯 vimscript）Fugitive：一个 git 的必备工具Trailing-whitespace：显示并修复（删除）尾部的空格Airline：一个改进的状态行（纯 vimscript）Ale：在你打字时高亮显示错别字或语法错误Ctags：不是 Vim 插件，但却是一个非常需要的工具还有其他的模糊查找插件，如 command-t 或我最喜欢的 fzf.vim（非常快）。问题是，fzf.vim 不在 Fedora 中，而我想要尽可能少的配置。CtrlP 就可以了，而且配置它更容易，因为它不需要什么依赖。如果让我选择一个绝对最小的配置，那就是：# cat ~/.vimrc let mapleader="," let maplocalleader="_" filetype plugin indent on let g:ctrlp_map = '<leader><leader>' let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard'] set exrc set secure 但这可能太极端了，所以这里是一个稍大的配置，下面是我的详细解释：" vim: nowrap sw=2 sts=2 ts=2 et: " leaders let mapleader="," let maplocalleader="_" " filetype and intent filetype plugin indent on " incompatible plugins if has('syntax') && has('eval') packadd! matchit end " be SSD friendly (can be dangerous!) "set directory=/tmp " move backups away from projects set backupdir=~/.vimbackup " fuzzy searching let g:ctrlp_map = '<leader><leader>' let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-stand…