4

我正在编写一段 vimscript 来管理会话。我想让用户配置他们希望将会话保存在哪个目录中,即:

let g:sessions_dir = "~/.vim/sessions"

我有许多命令可以让用户创建和加载会话。但我还想提供一个cmap让用户通过该目录中的会话选项卡。

cmap GSo :wa<CR> :source ~/.vim/sessions

这很有效,用户可以点击 TAB 来循环浏览他们的会话文件。但是,我想g:sessions_dir在 cmap 中使用该变量。

4

3 回答 3

4

您可以cmapexecute. 例如,

exe "cmap Gso :wa<CR> :so ".g:sessions_dir
于 2012-11-10T19:06:54.400 回答
3

你可以<C-r>=在这里使用:

cnoremap GSo :wa<CR> :source <C-r>=g:sessions_dir<CR>

(最后<CR>是 for <C-r>=,它不会启动命令)。

于 2012-11-10T22:30:18.817 回答
0

另一个例子:

let g:work_dir='C:\...\'  " define a new global variable work_dir
:cmap <F1> Explore <C-r>=g:work_dir<CR>

当您在命令行上单击 F1 时,然后输出 :Ex C:\...\

或者

:cmap WK_DIR Explore <C-r>=g:work_dir<CR>

WK_DIR在命令行上键入后,结果与上面相同。

于 2020-10-20T06:53:11.583 回答