Vim:检测我是否在 netrw 中

Nie*_*Bom 1 vim

我有一个 Vim 映射来开始从当前目录的目录中搜索(带有 ack.vim 插件的 ack-grep)模式(因此是 后的结果:pwd)。当我查看缓冲区时,此映射有效。

我想在 netrw 中使用相同的映射。但是,我想将当前目录 (:pwd) 更改为 netrw 显示的目录,因此将从我正在查看的目录开始搜索。我知道我可以使用 netrwc命令来执行此操作,但显然我只想在我实际上在netrw 中时才发出此命令。

问题 如何检测当前窗口是否处于 netrw“模式”?

kev*_*kev 6

您可以测试filetype

if &ft ==# "netrw"
    " your code here
endif
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!我在[这里](http://learnvimscriptthehardway.stevelosh.com/chapters/22.html)读到总是使用`==#`而不是`==`是一个好习惯。如果您同意,您可以更新您的答案。 (2认同)
  • @NielsBom更多,如果你认为可以接收数字而不是字符串,你应该使用`is#`,它就像javascript中的`===` (`type(a)==type(b) && a== #b`) 用于标量类型,Python 中的 `is` 用于列表和字典(检查两个对象是否相同(内部:指针相等比较))。我个人使用“is#”进行任何字符串相等比较,“is”当常量是数字时,但字符串也是一个选项(“a is 0”,就像Python中的“a is None”),“==#”用于复杂的结构(除非我需要 `is`),如果不需要字符串,则用 `==` 表示数字。 (2认同)