我希望能够设置MacVim,以便在保存缓冲区后切换回正常模式。例如:假设我在插入模式下添加一些文本,然后点击" Command + S"要保存,我希望在保存操作完成后处于正常模式。
这可能吗?
注意:包含以上内容尚不清楚,我不想在插入模式下花费更多时间,但更少。我想在保存时自动退出插入模式。
答案 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。)