![如何阻止 vim 编辑目录?](https://linux22.com/image/91094/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%20vim%20%E7%BC%96%E8%BE%91%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
有时我不小心告诉 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
。