Vim脚本,用于浏览目录并检索目录名

时间:2015-12-01 11:52:01

标签: vim

我正在尝试编写一个插件来简化我的个人工作流程。我希望能够配置/重新配置插件以引用不同的目录(包含程序输出) - 但不需要更改vim工作目录。为了做到这一点,只要我需要将我的插件指向不同的目录,例如通过调用“重新配置”功能,弹出一个方便的界面,允许我浏览文件系统并使用一些快捷方式选择目录。

我的第一个想法是使用netrw,配置为隐藏非目录,但是一旦我进入目录,我怎样才能获得当前的netrw目录路径以供我的脚本使用?有没有更好的方法呢?

如果我想选择文件而不是目录怎么办?是否有一种简单的方法可以更改netrw中的Enter键,使其更改为目录,但是当所选项目是文件时,它将调用我的自定义回调函数(例如)。

是否有更好的方法提示用户输入文件目录?

2 个答案:

答案 0 :(得分:3)

在不知道确切背景的情况下,我建议通过自定义命令触发Vim脚本,并将文件/目录作为命令参数传递。如果您定义如下命令:

:command -nargs=1 -complete=file MyCommand call MyFunction(<q-args>)

您将在命令行中免费获得Vim的文件/目录(cp。:help :command-complete)。

内置:browse,但它仅适用于:edit:write等与文件相关的命令;你不能将值放入变量。

inputdialog(),它允许您查询任何字符串;不幸的是,没有(文件)完成。

可以挂钩像 netrw 这样的插件,覆盖插件的文件选择映射(例如:nnoremap <buffer> <CR> ...,但这会使你的插件深深陷入其中。

摘要

不要忘记,Vim是一个文本编辑器,因此不需要过多的文件名/目录传递。根据您的使用情况,可以通过外部工具(由Vim调用)更好地处理。

答案 1 :(得分:0)

当前的netrw目录路径位于变量

b:netrw_curdir

请注意,如果g:netrw_keepdir为零,它将跟踪vim的当前目录。