我正在写一段vimscript来管理会话。我想让用户配置他们希望保存会话的目录,即:
let g:sessions_dir = "~/.vim/sessions"
我有许多命令可以让用户创建和加载会话。但我还想提供一个cmap
,让用户选项卡通过该目录中的会话。
cmap GSo :wa<CR> :source ~/.vim/sessions
这很有效,用户可以点击TAB循环查看会话文件。但是,我想在cmap中使用g:sessions_dir
变量。
答案 0 :(得分:3)
您可以将cmap
置于execute
之内。例如,
exe "cmap Gso :wa<CR> :so ".g:sessions_dir
答案 1 :(得分:2)
您可以在此处使用<C-r>=
:
cnoremap GSo :wa<CR> :source <C-r>=g:sessions_dir<CR>
(最后<CR>
代表<C-r>=
,它不会启动命令。)
答案 2 :(得分: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
后,结果将与上面相同。