Vimrc在cmap中使用变量

时间:2012-11-10 17:53:11

标签: vim

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

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

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

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

这很有效,用户可以点击TAB循环查看会话文件。但是,我想在cmap中使用g:sessions_dir变量。

3 个答案:

答案 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后,结果将与上面相同。