Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Session VIM在运行宏时提示输入变量?_Session_Macros_Vim - Fatal编程技术网

Session VIM在运行宏时提示输入变量?

Session VIM在运行宏时提示输入变量?,session,macros,vim,Session,Macros,Vim,我发现我在关闭和重新打开文件集上浪费了很多时间,因此我想改进我的VIM宏,以便加载和保存会话以支持多个会话 我想让它提示输入一个字符串值,这样我就可以按我的快捷键,然后输入例如“foo”,并让我的宏将会话保存到.foo(因此我还需要对它执行基本的字符串concat)。然后,我会对load宏执行同样的操作,并按主题管理会话(使用MVC框架,您可能需要处理大量文件) “控件-S保存并将F5移动到加载 设置sessionoptions=tabpages,winpos 映射:source~/.vim/.

我发现我在关闭和重新打开文件集上浪费了很多时间,因此我想改进我的VIM宏,以便加载和保存会话以支持多个会话

我想让它提示输入一个字符串值,这样我就可以按我的快捷键,然后输入例如“foo”,并让我的宏将会话保存到.foo(因此我还需要对它执行基本的字符串concat)。然后,我会对load宏执行同样的操作,并按主题管理会话(使用MVC框架,您可能需要处理大量文件)

“控件-S保存并将F5移动到加载
设置sessionoptions=tabpages,winpos
映射:source~/.vim/.session
映射:mksession!~/.vim/.session\|:echo“会话已保存”
我对VIM脚本编写的经验很少。是否可以用一行程序或一个小函数来实现这一点

谢谢。

映射:执行“source”.input(“会话名称:”,“~/.vim/session.”,文件”)
map <s-f5> :execute "source ".input("session name: ", "~/.vim/session.", "file")<cr>
输入“foo”以加载“session.foo”

相反,您还可以执行以下操作:

map <s-f5> :source ~/.vim/session.
map:source~/.vim/session。
注意,没有文件名,所以您可以自己完成命令,然后按enter键,输入与上面相同的内容,甚至可以完成文件名


不过,在这一点上,我会考虑完全调用函数或其他东西。

这是我现在的代码片段,以防有人需要类似的东西(无需投票)。它将会话保存在
.session.xyz
下,这些会话也从我的Git项目中排除。我喜欢将它们存储在Git项目文件夹中,以便与备份一起保存

我也喜欢confirmation echo,因为保存会话后按enter键时,你看不到发生了什么。这只是为了反馈

 map <S-F5> :execute "source ".input("Load session: ", "~/Some/Project/.session.", "file")<cr>
 map <c-s> :execute "mksession! ".input("Save session: ", "~/Some/Project/.session.", "file")\| :echo "Session saved."<CR>
map:执行“source.input”(“加载会话:”、“~/Some/Project/.session.”、“文件”)
映射:执行“mksession!”!.input(“保存会话:”、“~/Some/Project/.session.”、“文件”)\\\\:echo“会话已保存”
文件完成使这非常方便,谢谢!

@faB我建议在第一个映射中添加
“file”
作为
输入的第三个参数,以获得文件名完成。
 map <S-F5> :execute "source ".input("Load session: ", "~/Some/Project/.session.", "file")<cr>
 map <c-s> :execute "mksession! ".input("Save session: ", "~/Some/Project/.session.", "file")\| :echo "Session saved."<CR>