这就是我如何从 35 个 Vim 插件降到只有 6 个的原因。
当你用 —clean
规则是这样的:尽可能少的配置语句,并且只使用 Fedora 35+ 中的插件。顺便说一下,如果你不是 Fedora 用户,也请继续阅读。你可以随时从你的操作系统软件包管理器手动安装或者使用 Vim 插件管理器安装这些插件。
在我开始之前,有一个大问题需要解决:用 Vim 还是 Neovim(Vim 的一个复刻)。好吧,这由你决定。这篇文章中的所有内容应该对两者都适用。然而,我只用 Vim 测试过。当你登录到一个只有 vi
闲话少说,下面是我提炼出来的使用 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
EDITOR
vim
git
EDITOR
概览
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。输入模式:正常的文本录入。末行模式:保存或退出文档,以及设置编辑环境。在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档。
简单介绍一下我认为好的、干净的插件集:
CtrlP:尽可能小的模糊查找插件(纯 vimscript)
vim通常在Linux和Unix上使用,打开Linux系统,输入vim就可以进入vim编辑器。在编辑器中,可以看到一些vim的基本信息,包括版本号等。三、使用vim编辑文本 使用 vim a.txt。回车即可创建。
Fugitive:一个 git 的必备工具
Trailing-whitespace:显示并修复(删除)尾部的空格
Airline:一个改进的状态行(纯 vimscript)
Ale:在你打字时高亮显示错别字或语法错误
Ctags:不是 Vim 插件,但却是一个非常需要的工具
还有其他的模糊查找插件,如 command-t 或我最喜欢的 fzf.vim
fzf.vim
如果让我选择一个绝对最小的配置,那就是:
# cat ~/.vimrclet mapleader=","let maplocalleader="_"filetype plugin indent onlet g:ctrlp_map = '
但这可能太极端了,所以这里是一个稍大的配置,下面是我的详细解释:
" vim: nowrap sw=2 sts=2 ts=2 et:" leaderslet mapleader=","let maplocalleader="_"" filetype and intentfiletype plugin indent on" incompatible pluginsif has('syntax') && has('eval')packadd! matchitend" be SSD friendly (can be dangerous!)"set directory=/tmp" move backups away from projectsset backupdir=~/.vimbackup" fuzzy searchinglet g:ctrlp_map = '
使用逗号作为引导键
我喜欢把我的 引导键
,而不是默认的反斜杠\
\
本地引导键
_
延伸阅读:
参见 Vim Tips Wiki中的 Vim 中未使用的键。
文件类型和关闭语法高亮
接下来是非常重要的 filetype
ftplugins
一个简单的技巧:如果你正在编辑一个非常大的文件,并且 Vim 感觉很慢,你可能想禁用语法高亮来加快速度。只要输入 :syn off
延伸阅读:
Matchit 插件
Vim 甚至额外带有使得一些功能不兼容的插件,其中一个相当有用。它就是 matchit
%
延伸阅读:
交换文件
我想从我的旧配置中保留的许多设置之一是使用 tmp
mkdir ~/.vimbackup
tmpfs
var/tmp
延伸阅读;
模糊寻找插件
现在,模糊查找是一个我不能没有的插件。在服务器上当你每天需要打开 20 个文件时,使用 :Ex
:e
:tabe
Ctrl + P
引导键 + 引导键
ctrlp_user_command
git ls-files
.gitignore
node_modules
使用 引导键
B
T
F
Q
M
ctags
引导键 + B
B
Control
Shift
延伸阅读:
参见 ctrlp.vim GitHub。
缓冲区管理
虽然现在 Vim 支持标签,但缓冲区管理是掌握 Vim 的一个重要技能。我通常会有很多缓冲区,我需要经常做 :bdelete
引导键 + D
引导键 + W
延伸阅读:
Ggrep 和 fugitive 插件
说到搜索,它和打开文件一样重要。我希望能够对代码库进行检索。为此,有一个来自 fugitive 插件的很棒的 :Ggrep
git grep
Shift + K
引导键 + G
延伸阅读:
参见 vim-fugitive GitHub。
用 fugitive 进行搜索、检索
顺便说一下,用 键搜索是智能和大小写敏感的,这意味着如果所有的搜索字符都是小写的,Vim 的搜索会忽略大小写。默认情况下,它会高亮显示结果,我觉得我已经敲了无数次的:noh
引导键 + S
接下来是搜索、检索。fugitive 插件已经为你提供了。使用命令 :Ggrep pattern
git grep
:cn
:cp
:CtrlPQuickfix
引导键 + Q
延伸阅读:
参见 vim-fugitive GitHub。
Ctags
引导键 + C
引导键 + T
延伸阅读:
参见 Universal Ctags 网站。
按键映射
能够通过在项目目录下创建一个 .vimrc
.gitignore
.gitignore
.vimrc
正如你所看到的,我通常将 F2
F10
F9
make
如前所述,在全局范围内忽略 .vimrc
ctags
tags
.gitignore
cat ~/.gitignore/.vimrc/tags/TAGS
在我的个人配置中还有几条只与那些非美国键盘布局的人有关(我用捷克语)。我需要用“死键”来输入许多字符(LCTT 译注:“死键”是一种通过将变音符号与后面的字母结合起来打出重音字符的方法。这种方法在历史上被用于机械打字机),这根本不可能,我宁愿输入命令而不是按那些难以按下的组合键。这里有一个解决问题的办法:
" CTRL-] is hard on my keyboard layoutmap
延伸阅读:
功能键在 Vim 中都是自由的,除了 F1
:help
F1
Esc
:b#
F2
F3
Ctrl + ^
:visual
现在,熟悉 ctags
# cat ~/.ctags.d/local.ctags--recurse=yes--exclude=.git--exclude=build/--exclude=.svn--exclude=vendor/*--exclude=node_modules/*--exclude=public/webpack/*--exclude=db/*--exclude=log/*--exclude=test/*--exclude=tests/*--exclude=\*.min.\*--exclude=\*.swp--exclude=\*.bak--exclude=\*.pyc--exclude=\*.class--exclude=\*.cache
Airline 插件
我一定不能忘记 Vim 的 Airline 插件。在 Fedora 的两个插件中,这个插件很轻量级,不需要外部依赖,而且可以开箱即用我所有的字体。你可以定制它,而且还有主题之类的东西。我只是碰巧喜欢它的默认设置。
我必须提到,有两个主要的 Ctags 项目:Exuberant Ctags 和 Universal Ctags。后者是一个更现代的复刻。如果你的发行版有,就用它。如果你在 Fedora 35+ 上,你应该知道你现在用的是 Universal Ctags。
总结
:command Wq wq:command WQ wq
一般模式英文键盘模式下输入i进入编辑模式;编辑模式下按下esc回到一般模式;一般模式下输入:或者/进入命令模式 命令模式下按下esc或者按下enter键命令执行完成后也会回到一般模式 进入vim编辑器: vim 文件名.后缀 退出vim编辑。
alias vim-vimrc='vim ~/.vimrc'
这个模式主要功能,可以使用移动命令,扩大高亮的文本区域。输入命令将直接作用于选中文本区域。这就相当于你用鼠标选中一段文本区域,可以使用可以使用命令进行,复制、剪切、修改操作,但是vim并不需要鼠标。这个模式要在可视模式。
要尝试你刚刚读到的内容,请安装软件包并检出这些配置:
特别感谢 Marc Deop 和 Melanie Corr对本文的审阅。
更新
我已经在这种配置下生存下来了!我唯一的纠结是 CtrlP 插件的结果顺序不同。文件的模糊算法与 fzf.vim
FZF
第一步:按住Ctrl+V进入VISUAL BLOCK模式 第二步:用【键盘上下键】选中要注释的行 第三步:Shift+i进入INSERT模式 第四步:在选中位置第一行输入#号 第五步:连续按两下Esc 第一步:按住Ctrl+V进入VISUAL。
这篇文章最初发表在 作者的网站上,经许可后重新发表。
via: