我正在尝试调试 bash 在 Linux 登录初始化时所做的事情。我读过“bash -x”将使 bash 打印出它在做什么,但它不会像“set -x”那样打印源文件中的命令。我不能使用“set -x”,因为初始化在我调用它之前运行。“bash -x”似乎在 OS X 上递归得很好,但这可能是因为 bash 版本。
Linux:3.2.25
OS X:3.2.48
以下是 Linux 上非递归行为的摘录:
bash -l -x -c 'echo 1'
# ... snip ...
+ for i in '/etc/profile.d/*.sh'
+ '[' -r /etc/profile.d/vim.sh ']'
+ '[' '' ']'
+ . /etc/profile.d/vim.sh
+ for i in '/etc/profile.d/*.sh'
+ '[' -r /etc/profile.d/which-2.sh ']'
+ '[' '' ']'
+ . /etc/profile.d/which-2.sh
# ... snip ...
Run Code Online (Sandbox Code Playgroud)
注意 /etc/profile.d/vim.sh 的来源,但它的命令没有打印出来。有没有不升级的解决方法?这是版本差异导致的吗?
我通常有 4 个窗口,分成 2x2 网格。当我运行一个填充 quickfix 的命令时,第一个匹配的位置会在当前窗口中打开。但是如果我选择一个尚未加载的 QF 位置,它似乎总是在右下角的窗口中打开。
有没有办法让它在不同的窗口加载?具体来说,有没有办法让它在我所在的最后一个窗口中加载 - 即“CTRL-w p”会带我去的窗口?
当我在 vim 中加载某些文件类型时,相应的 ftplugin 会添加“co”(以及其他选项)。我不要这个。
一个例子是捆绑的 ruby.vim。我可以通过将文件复制到 ~/.vim/ftplugin/ 并set formatoptions
手动更改行来一次完成一个 ftplugin ,但这真的很不方便。另外,如果我升级 vim,我将没有最新的 ftplugin 文件。
有没有办法只忽略所有 ftplugins 的“co”部分?或者也许有某种方法可以在每次 ftplugin 加载后自动运行“set formatoptions-=co”?
更新:
这是我对已接受答案的改进:
augroup myft
au!
au FileType * setlocal formatoptions-=c formatoptions-=o
augroup END
Run Code Online (Sandbox Code Playgroud)
这定义了一个组中的 autocmd,因此可以在 .vimrc 多次获得的情况下清除该组。否则,相同的 autocmd 将不断被附加。