Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vimrc使用cmap内的变量_Vim - Fatal编程技术网

Vimrc使用cmap内的变量

Vimrc使用cmap内的变量,vim,Vim,我正在写一段vimscript来管理会话。我想让用户配置他们希望会话保存在哪个目录中,即: let g:sessions_dir = "~/.vim/sessions" 我有许多命令可以让用户创建和加载会话。但我还想提供一个cmap,让我们通过该目录中的会话查看用户选项卡 cmap GSo :wa<CR> :source ~/.vim/sessions cmap GSo:wa:source~/.vim/sessions 这是可行的,用户可以点击TAB键循环浏览会话文件。但是,我

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

let g:sessions_dir = "~/.vim/sessions"
我有许多命令可以让用户创建和加载会话。但我还想提供一个
cmap
,让我们通过该目录中的会话查看用户选项卡

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

这是可行的,用户可以点击TAB键循环浏览会话文件。但是,我想在cmap中使用
g:sessions\u dir
变量。

您可以将
cmap
放在
执行中。比如说,

exe "cmap Gso :wa<CR> :so ".g:sessions_dir
exe“cmap Gso:wa:so”.g:sessions\u dir
您可以在此处使用
=

cnoremap GSo :wa<CR> :source <C-r>=g:sessions_dir<CR>
cnoremap GSo:wa:source=g:sessions\u dir
(最后一个
用于
=
,它不会启动命令)。

另一个示例:

let g:work_dir='C:\...\'  " define a new global variable work_dir
:cmap <F1> Explore <C-r>=g:work_dir<CR>
在命令行上键入
WK_DIR
后,结果与上面相同

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