我在Vim中遇到问题,我认为它可能在我的vimrc
文件中(或被告知可能是我的vimrc
文件)。
我该如何验证?如果是我的vimrc
文件,我怎么知道究竟问题出?
我在Vim中遇到问题,我认为它可能在我的vimrc
文件中(或被告知可能是我的vimrc
文件)。
我该如何验证?如果是我的vimrc
文件,我怎么知道究竟问题出?
Answers:
您要做的第一件事是使用默认设置启动Vim:
vim -u NONE -U NONE -N
该-u NONE
阻止Vim的加载你的vimrc,-U NONE
防止Vim的加载你的gvimrc,并-N
告诉Vim使用不兼容模式(这不是必须的,但大多数的Vim用户不习惯“兼容”模式)。需要注意的是,NONE
被要求要在全部大写。
在Windows中,可以通过创建新的快捷方式1 添加这些标志。
如果问题保持,那么你知道这是不是东西在你的vimrc。
如果问题消失了,那是由于您的vimrc文件中的某些东西引起的。
欢呼!去问你的问题。请务必提及您尝试在没有vimrc文件的情况下启动Vim!
如果还没有的话,您可能想先保存vimrc文件的备份副本。
您可能想做的下一件事是首先禁用所有插件;插件可以在Vim中改变很多。如果这解决了问题,请尝试通过逐个重新启用它们来找出
哪个插件。在找到哪个插件导致问题的确切原因之后,您可以阅读此插件的文档和/或询问带有标记的问题,以尝试并修复它plugin-<name>
。
如果它不是一个插件,而你没有任何想法是什么导致你的问题,那么它是一个试错的过程。注释掉vimrc中的一行或多行,启动Vim,检查是否出现问题,然后重复此过程,直到问题不再发生为止。最快的方法是:
最后,您应该使用一个选项或几个选项的组合来引起问题。您可以使用以下方法在Vim中找到有关任何选项的更多信息:
:help 'option_name'
引号在这里很重要,通常在没有引号的情况下也可以使用,但是有时如果省略引号,则会导致输入错误的页面。
如果您在阅读帮助页面后仍然感到困惑,则知道在哪里提出问题;-)
如果您想隔离单个插件,也许要问一个问题,则希望尽可能少地加载,但仍然加载该插件。您可以使用Vim的软件包功能轻松地做到这一点。这需要Vim 8或Neovim的较新版本。
创建一个新的空目录;~/plugin
在本示例中,我们将使用路径。现在,将插件放在常规pack/plugins/start/$name
目录中。例如:
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
创建一个test-vimrc
具有以下内容的文件;这将确保Vim会从加载的插件~/plugin
目录,没有的~/.vim
目录:
set nocompatible
set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
packloadall!
syntax on
filetype plugin indent on
用以下命令启动Vim:
vim -U NONE -u ~/test-vimrc
现在,只有一个插件,您有了最小的vimrc。
脚注
1例如:在64位Windows上,快捷方式如下所示:"C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N
。要创建它,请在想要快捷方式的文件资源管理器中右键单击,然后选择“新建”->“快捷方式”并粘贴快捷方式文本。如果您的Vim安装在其他位置,则可能需要更改Vim路径。
-U NONE
则不需要-u NONE
。
有一个-D
专门用于调试的Vim参数,它将在执行脚本中的第一个命令后进入调试模式。
例如在没有任何插件的情况下以调试模式运行Vim,运行方式为:
vim --noplugin -D
键入n
/ next
解析下一行,并按住Enter。
和cont
或q
返回vim
界面。
如果您使用的是GUI版本,请gui
在vimrc中放置一个命令以在该命令之后立即开始调试。
按Ctrl+ d获取可用命令列表
阅读更多:
:help debug-scripts
另一个提示:就像穴居人一样,我确实喜欢在.vimrc中添加:echom“ message”来查看正在执行的内容和未执行的内容。
例如
if executable('ag')
:echom "AG FOUND"
...
endif
这可以帮助我快速查看if块是否正在执行,等等。下次启动vim时,该消息将打印在控制台上。
echom
另一个有趣的命令,则是:messages
获取回显的消息的完整日志。在启动后查看它们有时会很有用。
我发现有帮助的一件事是保留了一组变量,这些变量可以切换您的部分内容,.vimrc
因此您可以禁用或启用部分内容,而不必注释掉内容。它还具有迫使您考虑自己组织的令人愉快的副作用.vimrc
。
" feature toggles in vimrc
let g:vimrc_feat_pathogen = 1
let g:vimrc_feat_core_minimal = 1
let g:vimrc_feat_matchit = 1
let g:vimrc_feat_options = 1
let g:vimrc_feat_colors_and_highlight = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding = 1
let g:vimrc_feat_autocommand_group = 1
let g:vimrc_feat_custom_definitions = 1
let g:vimrc_feat_load_opam = 1
这是一个由保护的部分的示例if
:
if g:vimrc_feat_core_minimal
set nocompatible
filetype plugin indent on
syntax on
endif
这是一个非常简单的过程,可以帮助您入门。
:source %
或重新加载.vimrc:so $MYVIMRC