如何从map和";中调用vim函数:“拆分”;
我希望使用vimrc文件中的“映射”映射密钥,如下所示:如何从map和";中调用vim函数:“拆分”;,vim,Vim,我希望使用vimrc文件中的“映射”映射密钥,如下所示: map <C-I> :split ~/some/file map:split~/some/file 这个命令实际上运行良好 我的问题是:如何从map/split行中调用该文件路径上的vim函数(在本例中为“resolve()”)。这是行不通的,但希望你能明白这一点: map <C-I> :split =resolve("~/some/file") map:split=resolve(“~/some/file”
map <C-I> :split ~/some/file
map:split~/some/file
这个命令实际上运行良好
我的问题是:如何从map/split行中调用该文件路径上的vim函数(在本例中为“resolve()”)。这是行不通的,但希望你能明白这一点:
map <C-I> :split =resolve("~/some/file")
map:split=resolve(“~/some/file”)
也许它使用call()?很明显,我对vim脚本的总体概念感到困惑。谢谢你的帮助 map:split^R=resolve(“~/some/file”)
map <C-I> :split ^R=resolve("~/some/file")<cr><cr>
如果您将其放入
.vimrc
,您可以键入C-v C-r
来键入^r
字符。还有两种方法可以在映射之外工作,并且比使用
更安全(POSIX允许使用任何字节的文件名,但\x00
,包括控制代码):
nnoremap:execute“split”fnameescape(resolve(“~/some/file”))
nnoremap:split`=resolve(“~/some/file”)`
在第二种情况下,不需要转义,但文件名不能包含换行符(这不会造成伤害,只会产生错误)
需要考虑的另一件事:
nnoremap
,例如,它将使您能够交换的含义
和:
无需更改地图,也可防止地图被插件破坏,除非插件重新定义
地图(
与
相同)。这里使用强制正常模式是因为在其他模式下,它会产生意外的结果fnameescape(resolve(“~/some/file”)
,它将防止带有空格的文件名出错
。我不喜欢把它们放在文件中,因为这样会使diff在终端中不可见谢谢我忘记了^R是命令模式的“插入”。
nnoremap <C-i> :execute "split" fnameescape(resolve("~/some/file"))<CR>
nnoremap <C-i> :split `=resolve("~/some/file")`<CR>