【问题标题】:Prevent "modifiable is off" in vim在vim中防止“可修改已关闭”
【发布时间】:2013-09-17 21:18:30
【问题描述】:

如何防止 VIM 将 modifiable 设置为关闭?

我在 VIM 中打开了许多文件,当我想导航到一个目录时,我使用 :E。有时(我无法重现)VIM 将modifiable 设置为关闭。当我返回到我的文件时,在运行 :set modifiable 之前我无法进行更改。

我希望 modifiable 始终处于启用状态。我该怎么做?

看来this question 并没有解决我的问题……

【问题讨论】:

  • 我建议不要“自动将其设置为始终打开”,相反,您可以创建一个快捷方式(映射),例如<leader>m:set ma。这样,您就知道要强制修改哪个缓冲区。在某些情况下它可以避免一些危险的变化。
  • @Kent 但是...总是运行:set ma 然后:w! 太烦人了(因为只读也会打开)...难道没有任何安全的解决方案吗?
  • 我正在使用 nerdtree 面临同样的问题。
  • @laike9m 我也使用 nertree,但我认为这不是问题所在。我的问题在this change in .vimrc file 之后得到解决。
  • 所以现在您可以使用 nerdtree 添加文件而无需输入 :set ma?我在.vimrc 中看不到您是如何做到的。

标签: vim


【解决方案1】:

我发现在将我的 Mac 升级到 Leopard 后,MacVim 总是会打开带有可修改功能的新文件。就我而言,更新版本的 NERDTree 为我修复了它。我用病原体安装了 NERDTree,所以来自~/.vim/bundle/NERDTreegit pull 成功了。

【讨论】:

  • 以防万一它对其他人有所帮助,我发现我可以通过将 ~/.vim/bundle/nerdtree/lib/nerdtree/ui.vim 中的 setlocal nonmodifiable 更改为 setlocal modifiable 来关闭 non modifiable 通知
【解决方案2】:

问题出在有时(我无法重现何时)。 Vim 不会自行设置它,它可能是一个插件或配置的其他部分运行错误。下次发生这种情况时,找出它是通过什么设置的

:verbose setlocal modifiable?

一旦知道了根本原因,您就可以采取一些措施。

如果一切都失败了,并且您也不能/不想(暂时,为了测试)关闭插件和配置,“大锤”方法将是这样的 autocmd,它会尝试始终关闭该选项:

:autocmd BufWinEnter * setlocal modifiable

【讨论】:

  • 是的.. 我已经安装了一些插件。我怎么知道是哪一个产生了问题? This is my .vimrc
  • @Johnツ :verbose 可能已经告诉你你是否幸运。否则,二分搜索是另一种选择:禁用一半插件,看看问题是否消失。
  • 我不认为二进制搜索是一个好的解决方案。也许它是唯一的,但考虑到问题是随机发生的,你需要花几天时间在没有一半插件的情况下工作。
猜你喜欢
  • 2011-08-10
  • 2023-03-06
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多