我想绑定一个密钥以在我们的在线回购托管中的当前文件上打开浏览器(例如实际上是 codebasehq,但想象它就像 github。)
假设我正在 Vim 中编辑一个文件,名为:
/ROOT/repository/subdir/filename
我的当前目录位于“存储库”中,因此我的状态行将文件名显示为:
subdir/filename
我在 OSX 上,所以我用来在浏览器中打开它的系统命令行是:
open https://<REPOHOST>/projects/<USER>/repositories/<REPOSITORY>/blob/master/<SUBDIR>/<FILENAME>#L<LINE>
在哪里:
- REPOHOST 和 USER 是固定的,我很乐意对它们进行硬编码。
- REPOSITORY 是我当前工作目录的父目录的基本名称,即目录'repository',没有'ROOT' 前缀。
- SUBDIR 和 FILENAME 是我正在编辑的“子目录/文件名”。
- LINE 是当前行号
我已经做到了:
noremap <leader>o :silent !open URL<cr>
当我使用所有HOSTNAME 等的硬编码值替换 URL 时,它会在硬编码文件名上打开浏览器,并突出显示指定的行号。我的问题是如何将我的实际存储库和文件名等动态替换为这一行中的 URL。
我对 Python 非常熟悉,因此涉及调用 Vim 的内置 Python API 的解决方案是完全可以接受的。
编辑
我快到了,但仍然需要一个 vim 命令,它将我当前目录的基本名称附加到 vimscript 变量 'url' 上。有了这个,来自 romain1 的答案(连同我自己的答案中的改进)将完美地做到这一点。
结束编辑