vimrc
文件中(或者被告知可能是我的vimrc
文件)。如果这是我的vimrc
文件,我怎么知道问题出在哪里?#1 楼
首先,要使用默认设置启动Vim:vim -u NONE -U NONE -N
-u NONE
阻止Vim加载vimrc,-U NONE
阻止Vim从加载gvimrc,然后
-N
告诉Vim使用不兼容模式(不是必需的,但是大多数Vim用户不习惯于“兼容”模式)。 在Windows中,您可以通过创建一个新的快捷方式1添加这些标志。如果您的问题消失了,那是您的问题是由您的vimrc文件中的某物引起的。 !去问你的问题。请确保提到您尝试在没有vimrc文件的情况下启动Vim
!
所以这是我的vimrc,现在怎么办?
如果您还没有的话,您会可能要先保存vimrc文件的备份副本。插件可以
在Vim中改变很多。如果这解决了问题,请尝试通过逐个重新启用
来找出哪个插件。在确定哪个
插件完全导致了问题之后,可以通过阅读此插件的
文档和/或询问带有
NONE
标签的问题来尝试并修复它。 />如果它不是插件,并且您不知道是什么导致了您的问题,那么这是一个反复试验的过程。注释掉您的vimrc中的一行或多行,启动Vim,检查是否出现问题,然后重复此过程,直到问题不再发生为止。最快的方法是:
注释(或删除)大约一半的vimrc文件。
重新启动Vim或打开新的Vim(不重新加载vimrc足够好,因为
设置尚未设置)。
问题现在消失了吗?放回移除的零件(保留Vim
打开并在其中使用撤消非常有用),然后对添加的零件重复步骤1。
问题仍然存在吗?转到第1步。
最后,您应该只有一个选项或几个选项的组合
,这会引起问题。您可以通过以下方法在Vim中找到有关任何选项的更多信息: />如果忽略它们,您最终将进入错误的页面。
如果在阅读帮助页面后仍感到困惑,您知道在哪里提出问题
;-)
调试单个插件
如果您想隔离单个插件,也许要问一个问题,则希望尽可能少地加载,但仍然可以加载插件;您可以通过Vim的软件包
功能轻松地做到这一点。这需要Vim 8或Neovim的较新版本。在此示例中,我们将使用
plugin-<name>
路径。现在将插件放在常规
~/plugin
目录中。对于示例:
:help 'option_name'
创建具有以下内容的
pack/plugins/start/$name
文件;这将确保Vim将从
test-vimrc
目录而不是~/plugin
目录中加载插件: :
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
现在,只有一个插件就拥有最小的vimrc。
脚注
1例如:在64位Windows上,快捷方式如下所示:
~/.vim
。要创建它,请在想要快捷方式的文件资源管理器中右键单击,然后选择“新建”->“快捷方式”并粘贴快捷方式文本。如果您的Vim安装在其他位置,则可能需要更改Vim路径。#2 楼
有一个专门用于调试的-D
Vim参数,在执行脚本中的第一个命令后,它将进入调试模式。例如要在没有任何插件的调试模式下运行Vim,请运行:
vim --noplugin -D
键入
n
/ next
来解析下一行并继续按Enter。 />然后cont
或q
返回vim
界面。如果使用的是GUI版本,请在vimrc中放置
gui
命令以在该命令之后立即开始调试。按Ctrl + d获取可用命令列表
更多信息:
在Vim提示Wiki上调试意外的选项设置
/>
:help debug-scripts
评论
这对于在导致错误消息的.vimrc文件中查找一个简单错误最有帮助。值得一试,因为它很快就可以完成。
– RichVel
16年7月21日在17:09
@kenorb这个命令真是棒极了,让我不必再去其他编辑器了。
–TheLazyChap
16年11月22日在14:23
#3 楼
如前所述,首先尝试vim -u NONE -U NONE -N
以确保您的香草vim正常运行。然后正常启动vim并从内部检查
vim出现问题后,将显示所有警告和错误。
最后,使用以下命令启动vim:称为
logfile.log
,-V9
是日志记录级别,请尝试重现您的问题。#4 楼
另一个提示:作为一个穴居人,我确实喜欢在.vimrc中添加:echom“ message”以查看正在执行的内容和未执行的内容。 />if executable('ag')
:echom "AG FOUND"
...
endif
这可以帮助我快速查看是否正在执行if块等。下次启动vim时,该消息将打印在控制台上。
评论
而且,如果您使用echom,另一个有趣的命令是:messages,以获取回显的消息的完整日志。在启动后查看它们有时会很有用。
–statox♦
16 Mar 4 '16 at 8:43
这几乎是我所需要的,我想在我的vimrc中查看cpoptions的值是什么,如何回显“:set cpoptions”的输出? ?
–迈克·利珀特
18年6月15日在14:26
@MikeLippert,您可以使用echom&cpoptions。交互地,:verbose设置cpoptions?更好一点
– D. Ben Knoble♦
20-10-17在16:19
#5 楼
我发现有帮助的一件事是保留了一组变量,这些变量可以切换.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
#6 楼
我的vimrc加载时间非常慢,大约400毫秒,我仅通过删除以下行就将其缩短为20毫秒:这样的命令。评论
欢迎光临本站!这是一个有用的花絮,但比提出的一般性问题要具体得多。最好将其添加为例如这个问题,或者,如果您只是想分享知识,您也许可以问并回答自己的问题?
–丰富
18-10-3在10:22
#7 楼
这是一个非常简单的入门程序。注释掉整个.vimrc文件的内容
通过运行
:source %
或:so $MYVIMRC
< br取消注释文件的离散部分(通常从顶部开始)
重复步骤2和3,直到找到错误为止。
修复错误。
评论
如果正确使用大写和标点符号,此答案可能会好得多。
–user579
18年9月12日在6:31
强烈建议您执行二进制搜索。
– D. Ben Knoble♦
19年2月27日在18:03
评论
该技术称为二进制搜索故障定位。
–tommcdo
2015年2月19日在23:53
在弄清了自己的错误之后,这将是个绝佳的时机,开始将.vimrc保持在版本控制之下:)几乎总是您对它进行的最后更改之一,使内容的行为异常。
–escrafford
15年6月17日在21:02
如果您具有-u NONE,则不需要-U NONE。
– Antony
16年7月4日在7:59
谢谢@jpaugh;我认为该顺序更有意义。
–马丁·图尔诺伊(Martin Tournoij)
18-09-19在11:48
对于许多情况,我都更喜欢vim --clean。除了易于键入之外,它还等效于-u DEFAULTS -U NONE -i NONE以及其他一些内容,例如从$ RUNTIMEPATH中排除$ HOME。 -u DEFAULTS使用defaults.vim作为vimrc ...这意味着在调试时Vim实际上是可用的。
– B层
19年7月8日在11:39