首页 > 解决方案 > 如何在所有缓冲区中获取 vimrc

问题描述

vimrc在我做的当前窗口中的所有缓冲区中获取源,在我所做的所有窗口中的活动缓冲区中:bufdo so~/.vimrc获取源。如何在所有窗口中的所有缓冲区中获取源?vimrc:windo so~/.vimrcvimrc

出于某种原因,如果我:bufdo so~/.vimrc | :windo so~/.vimrc在非活动窗口中更改活动缓冲区。

示例:如果我set number在我的 . vimrc,我希望所有窗口中的所有缓冲区都影响更改。

解决方案可能是这样的:

for window in windowlist
        execute 'bufdo so~/.vimrc'

我使用vim 8.2

请注意:我确实尝试了你们建议的所有命令,但似乎事情还不够清楚。所有包含:tabdo :windo :bufdo或组合它们的命令都不能正常工作。请注意,这与更改 vimrc 并使用这些命令链(如:tabdo bufdo so~/.vimrc. 例如,对活动窗口:windo bufdo set numberset number的所有缓冲区(活动或隐藏)执行,但在非活动窗口上仅对set number活动缓冲区(窗口中显示的缓冲区)执行或:tabdo windo set number仅在每个窗口set number中的活动缓冲区中执行,这意味着隐藏缓冲区获胜'没有得到行号。我什至在r/vim上发了一篇关于这个问题的reddit 帖子 并制作了一个关于它的视频,但我不知道为什么没有人明白我所说的。老实说,尽管它很简单,但我认为这个问题不会被其他人解决。

标签: vimneovim

解决方案


在所有缓冲区和所有窗口中应用: :windo bufdo set number

如果您有标签,来自:tabe:tabf:tab朋友。只需tabdo像这样添加: :tabdo windo bufdo set number

我建议不要vimrc像这样采购你。如果您想要快速设置,只需使用set命令和朋友。


虽然我同意大多数关于采购您的vimrc. 我确实相信 source 命令的用途。特别是批量修复。我从来没有尝试过使用 :windo这个,我主要使用:argdoand :cdo。因为我对需要应用的文件有更细粒度的控制。

批量修复在大型代码库上特别有用。例如,您使用:g,进行修复:v:s并将它们保存在一个名为fix.vim. 这非常有用,您甚至可以通过命令将宏与这些命令(:g:v)配对:norm

:args *.js然后通过或类似命令(如反引号表达式)更新您的 argslist ,最后执行:argdo source fix.vim


推荐阅读