使用emacs命令定制的vim(仅插入模式)


10

我曾经是emacs用户,所以必须切换到vim。但是我错过了一些在vim插入模式下的基本emacs命令:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ...和其他一些

我知道我可以先按Escape再按以下一些键,最后按键i

  1. ^
  2. $
  3. d$
  4. p
  5. :w [输入]
  6. ...

但是,我想保持vim插入模式,避免按Escape/ i键。

在网络上,我发现自定义设置emacsvi-modevipvipervimpulsevim-modeevil)。但尚未发现相反的情况:vim使用emacs命令进行自定义...

我只emacsvim 插入模式下的命令感兴趣。只是一些基本的命令,bash命令:C-AC-EC-KC-YC-U...(是C-U不是默认的emacs命令,但我也喜欢它)。

Answers:


7

四年后,我将回答这个问题,因为提供答案是部分解决方案,无法完全解决原始问题。

我和olibre有着完全相同的愿望,并想提出一个完整的解决方案。我从不同的角度来看它-我已经习惯了bash中的Emacs行编辑-但是问题是相同的。我想将其带入Vim插入模式(仅)。

以下内容解决了olibre提出的原始问题中的所有键绑定请求,以及一些其他功能:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

我目前似乎无法使用的唯一绑定是 <Alt-B><Alt-F>, and ,它将跳过整个单词。每当我绑定<Esc><Alt><Meta>组合时,gVim(在Windows上为v7.4)都会输出带重音符号的字符。如果您有解决此问题的方法,请随时编辑此答案。我已经根据另一篇文章的建议使用Alt组合来使用特殊字符。我在上面插入了它们。

编辑

-(并非原始答案张贴者编辑)-

我在Neovim和Windows 10下使用了以下内容。您可能需要在其他操作系统上将“ A”更改为“ M”,因为其他位置的“ alt”可能是“ meta”。我玩的还不够。

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi

只是一个小建议:我认为<Esc>pa这样会更好<C-Y>
Yamaneko '16

貌似<C-K>没有当光标在最左边的工作-它应该删除整行,但Esc>lDa会留下未删除的第一个字符。
英熊

7

您可以使用插入命令将插入模式下的任何命令映射到任何:imap命令,或使用来保存键入:im。对于您的第一个映射,您可以键入(在正常模式下):

:im <C-A> <esc>^i

进入普通模式(带有^退出键),为您按下并返回插入模式。请参阅帮助以获取更多信息:

:help :imap 或更短: :h :im

请注意,您可能会覆盖现有的键映射。.vimrc如果您希望每个文档都可以将命令放入配置文件中。


谢谢您的提示+1 :-)但是您知道这种映射是否已经配置吗?(例如,不覆盖现有的键映射)。在哪里可以找到这样的项目/配置?我宁愿重用已经完成的(并且健壮的)事情,而不是自己尝试(遗漏一些重要的事情)。干杯
olibre 2012年

我应该向超级用户询问/提出问题吗?
olibre 2012年

谢谢!您可以通过(logic)命令查看命令是否存在:im <c-a>。如果显示“未找到映射”,则不会覆盖任何内容。我认为它不会比它强大得多……
Joker 2012年

嗯...我必须编写代码,测试我的配置,然后修复我的错误,然后再次.....但是我不知道所有vim命令...请,你知道我在哪里可以找到:im最后一个参数列表吗?仅供参考,我也使用了下面bash的命令:M-backspaceM-FM-BM-D...这将是很好,如果有人已经这样做了和共享他的工作,是不是?(之类的evil)因此,我可以重用他的:im键映射,而不必自己做(容易出错)。你明白我的意思吗?
olibre 2012年

我可能不太清楚您的意思,但是您可以通过键入找到所有非标准键映射:im。提出更高层次的评论:如果您希望能够在多个平台/计算机上使用Vim而不必始终加载自己的插件,特殊模式或vimrc文件,我认为最好的方法是学习/使用尽量使用标准的Vim命令。我自己做了几个键映射,但是总是尝试找到标准的Vim替代方案。它可以很快。我要做的一件事是映射<esc>;j,使您的nr 1映射;jI和nr 2 一样容易;jA
小丑2012年

6

这不是一个完整的答案,但是您知道Vim所谓的“ 简单模式 ”(vim -y)吗?默认情况下,它始终处于defaut的编辑模式,并且可以完成您想要的很多事情,并且不需要安装或自定义任何内容。它执行CTRL-A,C,V,X,Y等。从按键列表中

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

Cream的功能更强大,它可以重新映射更多键,并使基本命令类似于您可能熟悉的其他编辑器。

还有一个插件Vimacs,它启用所有常见的emacs密钥映射。它易于安装,并且可以做您想做的事(我从未尝试过)。


+1非常有趣:-)我正在阅读/测试您的所有链接...稍后我会给您更多反馈。谢谢。干杯
olibre 2012年

1
“简易模式”的键与Emacs的键无关。但是《 vimacs》似乎很有趣。我刚刚安装,尽管很旧,它仍然可以工作。
Hi-Angel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.