在MacVim中保存时,我可以自动退出插入模式吗?

时间:2016-03-07 16:03:03

标签: vim save buffer macvim

我希望能够设置MacVim,以便在保存缓冲区后切换回正常模式。例如:假设我在插入模式下添加一些文本,然后点击" Command + S"要保存,我希望在保存操作完成后处于正常模式。

这可能吗?

注意:包含以上内容尚不清楚,我不想在插入模式下花费更多时间,但更少。我想在保存时自动退出插入模式。

2 个答案:

答案 0 :(得分:2)

将以下行添加到.gvimrc将禁用MacVim的[Cmd + S]快捷方式,并在保存之前将模式切换回“正常”。

当按下[Cmd] + [S]键时,它也会阻止Vim进入插入模式(因为这会激活替换命令)。注意:您仍然可以像往常一样替换[S]键。

" Disable MacVim save shortcut
macmenu File.Save key=<nop>

" Exit to Normal mode upon [Cmd+S]
inoremap <D-s> <Esc>:w<CR><Right>
vnoremap <D-s> <Esc>:w<CR>

" Save in Normal mode (block Substitute)
nnoremap <D-s> :w<CR>

感谢@Amadan将我指向了正确的方向。

答案 1 :(得分:0)

想要通常处于插入模式是使用Vim错误。如果它适合你,那很好;但是在坚持这种习惯的同时,你永远不会发现Vim的潜力;不妨使用Notepad ++ / SublimeText3 /...

如果你真的想要它,可以使用using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class SMTHG { public void DoSomethingLikeSetValue(string input) { Console.WriteLine("HEYYYYY!!! DYNAMIC OBJECTS FTW!...\n" + input); } } class Program { private static void QueueCheckNAdd<T>(ref T param, string input) { dynamic dynamicObject = (dynamic)param; dynamicObject.DoSomethingLikeSetValue(input); } static void Main(string[] args) { SMTHG smthg = new SMTHG(); QueueCheckNAdd(ref smthg, "yoyuyoyo"); } } } 保存并保持插入模式,或:inoremap <C-s> <C-o>:w<CR>保存并移动到正常模式。 (它只适用于图形Vim,因为终端Vim通常不会收到Ctrl-S。)