vim personalizado com comandos do emacs (somente modo de inserção)

10

Eu era um usuário emacs e tenho que mudar para vim . Mas sinto falta de alguns comandos básicos do emacs no modo de inserção vim :

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... e algum outro

Eu sei que posso pressionar Escape e depois pressionar algumas das seguintes teclas e finalmente pressionar a tecla i :

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

No entanto, gostaria de permanecer no modo de inserção vim e evitar pressionar as teclas Escape / i .

Na Web, encontrei personalizações para emacs ( vi-mode , vip , viper , vimpulse , vim-mode , evil ). Mas ainda não encontrou o contrário: personalize vim para usar os comandos emacs ...

Estou interessado apenas nos comandos emacs em vim modo de inserção . Apenas alguns comandos básicos, como bash comandos: C-A , C-E , C-K , C-Y , C-U ... (yep C-U não é um comando emacs padrão, mas eu gosto disso também).

    
por olibre 26.09.2012 / 16:34

3 respostas

7

Estou respondendo a essa questão quatro anos depois, porque a resposta é uma solução parcial que não aborda completamente a questão original.

Eu tenho exatamente o mesmo desejo que o olibre e queria propor uma solução completa. Eu venho de uma perspectiva diferente - estou acostumado com a edição de linha do Emacs no bash - mas o problema é o mesmo. Eu quero levar isso para o modo de inserção do Vim (somente).

O texto a seguir aborda todos os pedidos de atalhos de teclado na pergunta original colocada por olibre, além de alguns extras:

" 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

As únicas ligações que parecem não conseguir trabalhar neste momento são <Alt-B> e <Alt-F> , o que pularia palavras inteiras. Sempre que eu vinculo as combinações <Esc> , <Alt> ou <Meta> , o gVim (v7.4 no Windows) exibe caracteres acentuados. Sinta-se à vontade para editar esta resposta se tiver uma solução para esse problema.

Eu consegui combinações Alt para funcionar com base em outra postar sugestão para usar apenas os caracteres especiais. Eu os inseri acima.

Editar

- (editar não é pelo poster de resposta original) -

Eu usei o seguinte em Neovim e Windows 10. Você pode precisar alterar o "A" em "M" em outros sistemas operacionais, pois "alt" pode ser "meta" em outro lugar. Eu não brinquei com isso o suficiente.

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
    
por 05.08.2016 / 19:39
7

Você pode mapear qualquer comando no modo de inserção para qualquer coisa usando o comando :imap ou salvar a digitação usando :im . Para o seu primeiro mapeamento, você pode digitar (no modo normal):

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

Que vai para o modo normal (com escape), pressiona ^ para você e volta para o modo de inserção. Veja a ajuda para mais informações:

:help :imap ou menor: :h :im

Observe que você pode sobrescrever os mapeamentos de chave existentes. Coloque os comandos em seu arquivo de configuração .vimrc se quiser que eles estejam lá para cada documento.

    
por 26.09.2012 / 16:47
6

Não é uma resposta completa, mas você está ciente do chamado " modo fácil " do Vim. (%código%)? Ele está sempre no modo de edição, e faz muito do que você quer, e não precisa de você para instalar ou personalizar nada. Ele faz CTRL-A, C, V, X, Y etc. Na listagem de chaves :

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

Uma versão muito mais poderosa disso é Creme , que remapeia muitas outras chaves e torna os comandos básicos similares a outros editores com os quais você pode estar familiarizado.

Existe também o plugin Vimacs , que ativa todos os mapeamentos de teclas comuns do emacs. É fácil de instalar e pode fazer o que quiser (nunca tentei).

    
por 26.09.2012 / 21:33