我正在尝试编写一个插件来简化我的个人工作流程。我希望能够配置/重新配置插件以引用不同的目录(包含程序输出) - 但不需要更改vim工作目录。为了做到这一点,只要我需要将我的插件指向不同的目录,例如通过调用“重新配置”功能,弹出一个方便的界面,允许我浏览文件系统并使用一些快捷方式选择目录。
我的第一个想法是使用netrw,配置为隐藏非目录,但是一旦我进入目录,我怎样才能获得当前的netrw目录路径以供我的脚本使用?有没有更好的方法呢?
如果我想选择文件而不是目录怎么办?是否有一种简单的方法可以更改netrw中的Enter键,使其更改为目录,但是当所选项目是文件时,它将调用我的自定义回调函数(例如)。
是否有更好的方法提示用户输入文件目录?
答案 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的当前目录。