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

5 vim macros session

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

我希望它提示输入字符串值,以便我可以按快捷键,然后输入例如“foo”,然后让我的宏将会话保存到 .foo (所以我还需要执行基本的字符串连接在上面)。然后,我会对加载宏执行相同的操作,并按主题管理会话(使用 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>
Run Code Online (Sandbox Code Playgroud)

我对 VIM 脚本编写经验很少。是否可以在一个衬里或一个小函数中完成此操作?

谢谢。

小智 3

map <s-f5> :execute "source ".input("session name: ", "~/.vim/session.", "file")<cr>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n
map <s-f5> :source ~/.vim/session.\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,没有<cr>,因此您自己完成命令,然后按 Enter \xe2\x80\x94 与上面相同的输入,甚至到文件名完成。

\n\n

然而,我会考虑在这一点上调用一个函数或其他东西。

\n

  • @faB我建议在第一个映射中添加“file”作为“input”的第三个参数以获得文件名补全。 (2认同)