VIM在运行宏时提示变量?

时间:2010-10-19 14:10:50

标签: session macros vim

我发现我浪费了大量时间关闭并重新打开文件集,所以我想改进我的VIM宏来加载和保存会话以支持多个会话。

我希望它提示输入一个字符串值,这样我就可以按下我的快捷方式,然后键入例如“foo”,并让我的宏将会话保存到.foo(所以我也需要这样做它的基本字符串连接)。然后我会为load宏做同样的事情并按主题管理会话(使用MVC框架,你往往会有很多文件可以使用)。

" Control-S to save and Shift F5 to load
set sessionoptions=tabpages,winpos
map <S-F5> :source ~/.vim/.session<cr>
map <c-s> :mksession! ~/.vim/.session<cr>\| :echo "Session saved."<CR>

我对VIM脚本的经验很少。是可以在一个衬里,或者可能是一个小功能吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

map <s-f5> :execute "source ".input("session name: ", "~/.vim/session.", "file")<cr>

输入“foo”加载“session.foo”。

相反,您也可以这样做:

map <s-f5> :source ~/.vim/session.

请注意不是 a&lt; cr&gt;,因此您自己完成命令并按Enter键 - 与上面相同的输入,甚至是文件名完成。

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

答案 1 :(得分:0)

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

我也喜欢确认回音,因为当您在保存会话后按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>

文件完成使这非常方便,谢谢!