我想在我的vimrc文件中使用"map"映射一个键,如下所示:
map <C-I> :split ~/some/file
Run Code Online (Sandbox Code Playgroud)
该命令实际上工作正常.
我的问题是:如何从地图/分割线内的文件路径上调用vim函数(在本例中为"resolve()").这不起作用,但希望你明白这一点:
map <C-I> :split =resolve("~/some/file")
Run Code Online (Sandbox Code Playgroud)
也许它使用call()?我显然对vim脚本一般感到困惑.谢谢你的帮助!
还有另外两种方法可以在映射之外工作,然后使用更安全<C-r>(POSIX允许文件名包含任何字节,但\x00包括控制代码):
nnoremap <C-i> :execute "split" fnameescape(resolve("~/some/file"))<CR>
nnoremap <C-i> :split `=resolve("~/some/file")`<CR>
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,不需要转义,但文件名不能包含换行符(它不会受到伤害,只会产生错误).
另外需要考虑的事情:
nnoremap,它将使您能够,例如,交换;和:不更改地图的含义,并防止您的地图被插件破坏,除非他们重新定义<Tab>映射(与之<C-i>相同<Tab>).此处强制正常模式是因为在其他模式下它会产生意外结果.fnameescape(resolve("~/some/file"))它将防止带空格的文件名出错.<C-r>@Austin Taylor建议编写原始控制代码的地方.我不喜欢在文件中包含任何文件,因为它会使终端中的差异无法查看.| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |