如何阻止 vim 编辑目录?

如何阻止 vim 编辑目录?

有时我不小心告诉 vim 编辑目录而不是其中的文件

vim directory-name           # what I typed
vim directory-name/blah.txt  # what I meant to type

vim 不会立即给出错误消息,而是以我个人不喜欢的“文件编辑器”模式打开目录:

我不喜欢的文件浏览器

如何让 vim 拒绝打开目录?

一种可能的途径是更改我的 .vimrc 中的一些设置,但我不知道它们是什么。

另一种可能性是在 vim 周围创建一个包装器 shell 别名,它会检查类似的内容以test -d "$1"查看我是否正在尝试打开文件。但是,我不知道如何使这个别名变得健壮,以便它可以区分哪些命令行参数是标志,哪些是文件名。

答案1

如果任何参数是目录,您可以将以下行放入 vimrc 中以退出 vim:

for f in argv()
  if isdirectory(f)
    echomsg "vimrc: Cowardly refusing to edit directory " . f
    quit
  endif
endfor

或者,如果您只想退出全部参数是目录,你可以尝试这样的事情:

let ndirs = 0
for f in argv()
  if isdirectory(f)
    let ndirs += 1
  endif
endfor
if ndirs > 0 && ndirs == argc()
  echomsg "vimrc: Cowardly refusing to edit directories"
  quit
endif

答案2

这看起来像插件的输出netrw

可以通过输入您的~/.vimrc文件来禁用此功能。

let loaded_netrwPlugin = 1

现在,如果您尝试编辑目录,您将收到错误消息is a directory

相关内容