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

10

Eu era um emacsusuário e preciso mudar para vim. Mas sinto falta de alguns comandos básicos do emacs no vimmodo de inserção:

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

Eu sei que posso pressionar Escapee, em seguida, pressione algumas das seguintes teclas e, finalmente, pressione a tecla i:

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

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

Na web, eu encontrei personalizações para emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Mas ainda não encontrei o oposto: personalize vimpara usar emacscomandos ...

Estou interessado nos emacscomandos apenas no vim modo de inserção . Apenas alguns comandos básicos, como bashcomandos: C-A, C-E, C-K, C-Y, C-U... (sim C-Unão é um padrão emacsde comando, mas eu gosto muito).

olibre
fonte

Respostas:

7

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

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

A seguir, são abordadas todas as solicitações de vinculação de teclas na pergunta original feita 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 não consigo trabalhar neste momento são <Alt-B>e <Alt-F>, que pulariam palavras inteiras. Sempre que se ligam <Esc>, <Alt>ou <Meta>combinações, gVim (v7.4 no Windows) envia caracteres acentuados. Sinta-se à vontade para editar esta resposta se você tiver uma solução para esse problema. Eu consegui que as combinações Alt funcionem com base na sugestão de outro post para usar apenas os caracteres especiais. Eu os inseri acima.

Editar

- (a edição não é feita pelo cartaz de resposta original) -

Usei o seguinte no Neovim e no Windows 10. Talvez seja necessário alterar o "A" para "M" em outros sistemas operacionais, já que "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
treehead
fonte
Apenas uma pequena sugestão: Eu acho <Esc>paque seria melhor para<C-Y>
Yamaneko 15/11
Parece <C-K>que não funciona quando o cursor está mais à esquerda - ele deve excluir a linha inteira, mas Esc>lDadeixará o primeiro caractere não excluído .
Ying Xiong
7

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

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

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

:help :imap ou mais curto: :h :im

Observe que você pode substituir os mapeamentos de chaves existentes. Coloque os comandos no seu .vimrcarquivo de configuração, se quiser que eles estejam lá para todos os documentos.

Palhaço
fonte
obrigado pelas dicas +1 :-) Mas você sabe se esse tipo de mapeamento já foi configurado? (por exemplo, sem os mapeamentos de teclas existentes substituídos) Onde encontrar esse projeto / configuração? Eu preferiria reutilizar algo já feito (e robusto), do que tentar fazer sozinho (e perder algo importante). Cheers
olibre 26/09/12
Devo fazer / mover minha pergunta para superuser.com ?
precisa saber é
Obrigado! Você pode ver se existe um comando com o comando (lógico) :im <c-a>. Se aparecer "Nenhum mapeamento encontrado", você não substituirá nada. Eu não acho que ele vai ficar muito mais robusto do que isso ...
Joker
Humm ... tenho que codificar, testar minha configuração, corrigir meus erros e novamente ... Mas não conheço todos os vimcomandos ... Por favor, você sabe onde posso encontrar uma lista dos :imúltimos argumentos? FYI, eu também estou acostumado com os seguintes bashcomandos: M-backspace, M-F, M-B, M-D... Vai ser bom se alguém já fez isso e compartilha seu trabalho, não é? (algo como evil) Portanto, eu poderia reutilizar o :immapeamento de teclas sem fazer isso sozinho (propenso a erros). Você entende o que eu quero dizer?
olibre
Talvez eu não entenda exatamente o que você quer dizer, mas você pode encontrar todos os mapeamentos de chave não padrão digitando :im. Para fazer um comentário de nível superior: se você quiser usar o Vim em várias plataformas / computadores sem precisar carregar seus próprios plugins, modos especiais ou arquivo vimrc, acho que a melhor coisa a fazer é aprender / usar os comandos padrão do Vim, tanto quanto possível. Eu mesmo fiz vários mapeamentos importantes, mas sempre tente encontrar a alternativa padrão do Vim. E pode ser bem rápido. Uma coisa que eu fiz é o mapa <esc>para ;j, fazendo o mapeamento nr 1 tão fácil como ;jIe nr 2 ;jA.
Joker
6

Não é uma resposta completa, mas você conhece o chamado " modo fácil " do Vim ( vim -y)? Ele está sempre no modo de edição por padrão, e faz muito do que você deseja e não precisa instalar nem personalizar nada. Faz CTRL-A, C, V, X, Y etc. Na lista 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 é o Cream , que remapeia muito mais teclas e torna os comandos básicos semelhantes a outros editores com os quais você pode estar familiarizado.

Há também o plug-in Vimacs , que permite todos os mapeamentos de chaves comuns do emacs. É fácil de instalar e pode fazer o que você deseja (nunca tentei).

ire_and_curses
fonte
Muito interessante +1 :-) Estou lendo / testando todos os seus links ... Em breve, darei mais comentários. Obrigado. Cheers
olibre
1
As teclas do "modo fácil" não têm nada a ver com as do Emacs. Mas "vimacs" parece uma coisa interessante. Acabei de instalar e, apesar de ser antigo, ainda funciona.
Hi-Angel