Questions tagged «vimrc»

Vim在启动时从名为vimrc的文件读取初始化命令。这可用于设置设置,定义功能,执行自动命令等。

2
您如何找到最后分配变量的位置?
我正在尝试设置g:netrw_list_hide,但似乎不起作用。无论我将其设置为什么,.vimrc它始终具有价值,^\.\.\=/\=$。仅当我vimrc再次获取文件时,它才具有正确的值。 我该如何调试?我猜有一些插件正在设置该变量?可能在vimrc加载后,所以我想看看它的设置位置。

1
如何记录我的键盘输入以进行统计?
我想找出我在编码过程中最常用的模式是什么。因此,我正在寻找一种在vim中记录所有键盘输入的方法,最好使用时间戳记。然后,我可以对最近使用的模式/动作进行一些分析,以了解动作将花费什么时间,并找出要优化的内容。 在Vim中有惯用的方法吗?我可以尝试为此编写一个插件吗?这样做会对性能产生什么影响? 谢谢
12 vimrc 

3
Vim正则表达式中的'\ zs'和'\ @ <='原子有什么区别?
这是我从文档中得到的结果:\zs匹配前面的正则表达式后\@&lt;=“启动突出显示的部分”,而匹配前面的原子后“启动突出显示的部分” 。但是我不完全理解这一点的微妙之处,所以谁能解释他们在深度上有何不同? 这就是让我感到好奇的原因:如果我跑步 /\_s\zsnnoremap 即选择nnoremap由空格或一个开始的行之前(即,从前述线路换行,因此\_之前的s),然后运行gn到进入的视觉模式和直观地选择下一个匹配,由于某种原因,仅在第一列(即第一n中nnoremap)选择-尽管事实上,整个nnoremap字凸显与:hlsearch开启。 但是,如果我改为运行搜索 /\_s\@&lt;=nnoremap 然后尝试gn,nnoremap正确选择了整个。这可能是怎么回事?我(敢说)发现了一些晦涩的错误吗?



2
是否可以使用vim的clientserver功能保持设置同步?
我通常在同一台计算机上运行多个vim实例。当我对vimrc进行更改时,我可以:source ~/.vimrc(使用简单的映射或autocmd)。但是为了使所有正在运行的实例反映出更改,我必须分别在每个实例中运行该更改。我可以使用该clientserver功能告诉所有实例重新加载我的vimrc吗? 我也会对不使用的解决方案感兴趣clientserver。

1
如何在本地vimrc中添加其他语法突出显示规则?
我在Fedora和Win7上都安装了gvim。我发现Fedora上的vim和gvim都没有突出显示c代码中的函数名称,而win7上的gvim突出了它。 我发现在win7上,vim73/syntax/c.vim末尾有其他行: syn match cFunction "\&lt;[a-zA-Z_][a-zA-Z_0-9]*\&gt;[^()]*)("me=e-2 syn match cFunction "\&lt;[a-zA-Z_][a-zA-Z_0-9]*\&gt;\s*("me=e-1 hi cFunction gui=NONE guifg=#B5A1FF 如果我将这些行添加到c.vimFedora上,gvim也可以突出显示函数名称。 为了保持可移植性,我只想修改.vimrc即可突出显示函数名称。但是,将这些行添加到中后.vimrc,它不起作用。 那么,有人可以帮助我吗?我进行了搜索,找到了许多解决方案来突出显示vim中的函数名称。但是我很好奇如何使这些线在.vimrc。非常感谢!

1
在没有文件,不存在的文件或空白文件的情况下启动Vim时如何运行autocmd(但从现有文件开始时则不能)?
当我启动Vim时,我想在以下情况下运行一个autocmd: 没有指定文件名。 文件为新文件时。 文件存在但完全空白时。 在以上三种情况下,我都想运行一个autocmd;具体而言,我想自动启动插入模式为只在上述情况(而不是当我打开一个已经存在和不为空的文件)。 更新: 我试过将以下内容放入我的_vimrc,但是运气不好(另外,我不确定在vim中是否有一个函数在打开文件之前先计算文件中字符的数量(看是否为零): if @% == "" || filereadable(@%) autocmd BufRead,BufNewFile * startinsert endif

1
为什么:set bg = dark和:set bg = light的顺序很重要?
在尝试匹配终端的调色板和GVim的调色板时,我注意到了这一点: 当我打开GVim和Vim时,我看到:( 这是同一个文件,我的vimrc。) 如果我这样做:set t_Co=256,则GVim中什么都不会发生(除了闪烁),而终端中的颜色现在看起来有所不同。如果我:set bg=dark现在这样做,则没有任何区别(再次GVim闪烁)。如果再这样做:set bg=light,然后:set bg=dark又得到: 双方:set bg=dark并:set t_Co=256出现在我的vimrc。为什么我:set bg和:set t_Co坚持,以及为什么设置:set bg=dark后再次:set bg=light有所作为它最初没有? 我使用的是Arch Linux,终端是GNOME终端,但没有.gvimrc。 $ vim --version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 4 2015 08:03:11) Included patches: 1-617 Compiled by Arch Linux Huge version with GTK2 GUI. Features included (+) or not …

1
如何在选择时突出显示matchit.vim定义的匹配“%”名称(例如if / end,for / end)?
目前,我的Vim用青色背景和白色前景突出显示匹配的括号,方括号,引号等-可以在之间移动光标%。多亏了matchit.vim,我也可以%在if / end,for / end等之间切换。但是,这些在选择时未突出显示。 如何在选择时自动突出显示这些匹配对,就像用括号自动完成一样? 此外,如何使用修改用于这些对的背景色:highlight? 提前致谢。 我已经通过下面的@Tommy A更新了答案,以说明指定的matchit.vim组不正确,以及其他情况下%操作员永远不会将光标返回到原始位置。检查“ while”循环中的差异。建议阅读此线程的任何人都使用此版本,以避免无限循环: function! s:get_match_lines(line) abort " Loop until `%` returns the original line number; abort if " (1) the % operator keeps us on the same line, or " (2) the % operator doesn't return us to the same line after …

1
为什么YouCompleteMe无法完成函数参数?
我想在C ++语义完成中使用YouCompleteMe,但是经过数小时的尝试,我找不到为什么它无法按预期工作。 一切似乎都正常,但是我无法完成函数参数。 我在Archlinux(Openbox上的Gnome Terminal)上运行Vim: Linux Arch-PC 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux 我按照说明(带有install.py脚本和clang支持)安装了YCM 。我还尝试了AUR YCM软件包,并遇到了同样的问题。 YcmDebugInfo: Printing YouCompleteMe debug information... -- Server has Clang support compiled in: True -- Clang version: clang version 3.7.0 (tags/RELEASE_370/final) -- Flags for /home/arthur/vimtest/main.cpp loaded from /home/arthur/vimtest/.ycm _extra_conf.py: …

1
是否可以在rc文件中创建自定义的“ set”命令并从modeline调用它们?
最近我问了一个问题,我知道除了:set在vim模式行中传递参数外,什么都不可能传递。我了解安全问题,但是我想知道是否还没有其他解决方法。关于SO的最近一个有关设置大批参数以符合编码标准的问题使我开始思考-是否可以在rc文件中定义可以通过modeline打开或关闭的一组事物? 请问伪代码,但是有没有办法创建从设置参数触发的函数? set_function! codestyle() if &amp;1 == 'psr-2' set ts=4 set sw=4 endfi if &amp;1 == 'drupal7' set ts=2 set sw=2 iab D8 Drupal 8 endif endset_function 然后,可以由诸如 # vim: codestyle=psr-2 在某些方面,这类似于文件类型匹配,但允许手动覆盖。它还将以其他预定义的方式设置环境,避免了使文件在vim中运行其他任意命令的安全问题,但允许使用更自定义的环境。有没有办法做到这一点?

2
我如何在vimrc中区分vim和vimdiff?
我在vim中有一个函数,它将打开所有缓冲区作为选项卡。但是,在添加此功能后,vimdiff也会将要比较的文件作为不同的选项卡打开,因此不会显示差异。有什么方法可以找出正在调用vimrc文件的vim还是vimdiff? function! OpenTabs() let bf=len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) if bf &gt; 1 exe "tab 5sball" endif endfunction
10 vimrc  vimdiff 

2
是否可以从撤消历史记录中删除条目?
我的.vimrc中有以下几行可以帮助缩进: autocmd BufReadPost * set noexpandtab | retab! 4 autocmd BufWritePre * set expandtab | retab! 4 autocmd BufWritePost * set noexpandtab | retab! 4 但是,它们会在撤消历史中产生大量噪音。由于从用户的角度来看,它们基本上什么也不做,因此我想从历史记录中删除它们,或者至少以某种方式挤压它们(如果一起挤压,它们可能会取消?)。有办法吗?
10 vimrc  undo-redo 

1
选项“ switchbuf”应如何工作?
我最近发现了该选项switchbuf并尝试使用它,但是我不能说我是否不知道它应该如何工作,或者在我的Vim上实际上不起作用。 关于不同的可能值,医生说: useopen(如果包含),跳到 包含指定缓冲区(如果有)的第一个打开的窗口。 usetab 类似于“ useopen”,但也可以考虑其他标签页中的窗口。 然后set switchbuf=useopen,usetab,我在新的vim实例中使用和以下命令: 打开第一个缓冲区 :e file1 分割萤幕 :split 打开第二个缓冲区 :e file2 返回第一个缓冲区:e file1(我也用过:bN) 转到第一个缓冲区的最后一条命令在第二个拆分中将其打开。据我从文档中了解到,命令应该将光标放置到缓冲区已经打开的第一个拆分处useopen。当我使用制表符而不是拆分尝试相同的命令时,行为也相同。 这是预期的行为吗? 如果可以的话,您能否解释一下该选项应该做什么? 如果不是,我知道我必须调试我的设备,.vimrc但是也许已知有一个共同的设置会干扰我switchbuf吗?
10 vimrc  buffers  split 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.