vim personalizzato con i comandi emacs (solo modalità di inserimento)


10

Ero un emacsutente e devo passare a vim. Ma mi mancano alcuni comandi di base di emacs in vimmodalità insert:

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

So che posso premere Escapee quindi premere alcuni dei seguenti tasti e infine premere il tasto i:

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

Tuttavia, mi piacerebbe rimanere in vimmodalità inserimento ed evitare di premere i tasti Escape/ i.

Sul web, ho trovato personalizzazioni per emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Ma non ancora trovato il contrario: personalizza vimper usare i emacscomandi ...

Sono interessato ai emacscomandi solo nella vim modalità di inserimento . Solo alcuni comandi di base, come bashi comandi: C-A, C-E, C-K, C-Y, C-U... (sì C-U, non è un difetto emacsdi comando, ma mi piace troppo).

Risposte:


7

Sto rispondendo a questa domanda quattro anni dopo perché la risposta fornita è una soluzione parziale che non affronta completamente la domanda originale.

Ho lo stesso desiderio di Olibre e volevo trovare una soluzione completa. Ci arrivo da una prospettiva diversa - sono abituato alla modifica della linea di Emacs in bash - ma il problema è lo stesso. Voglio riporlo nella modalità di inserimento Vim (solo).

Di seguito vengono indirizzate tutte le richieste di associazione dei tasti nella domanda originale posta da olibre, oltre ad alcuni extra:

" 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

Le uniche associazioni che non riesco a far funzionare a questo punto sono <Alt-B>e <Alt-F>, che salterebbero intere parole. Ogni volta che associo <Esc>, <Alt>o <Meta>combinazioni, gVim (v7.4 su Windows) genera caratteri accentati. Sentiti libero di modificare questa risposta se hai una soluzione a questo problema. Ho ottenuto che le combinazioni Alt funzionassero in base al suggerimento di un altro post di usare solo i caratteri speciali. Li ho inseriti sopra.

modificare

- (la modifica non avviene in base al poster della risposta originale) -

Ho usato quanto segue in Neovim e Windows 10. Potrebbe essere necessario modificare la "A" in "M" su altri sistemi operativi poiché "alt" potrebbe essere "meta" altrove. Non ci ho giocato abbastanza.

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

Solo un piccolo suggerimento: penso che <Esc>pasarebbe meglio per<C-Y>
Yamaneko,

Sembra <C-K>che non funzioni quando il cursore si trova all'estrema sinistra: dovrebbe eliminare l'intera riga ma Esc>lDalascia il primo carattere non cancellato.
Ying Xiong,

7

Puoi associare qualsiasi comando in modalità inserimento a qualsiasi cosa usando il :imapcomando o salvare digitando usando :im. Per la tua prima mappatura, puoi digitare (in modalità normale):

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

Che passa alla modalità normale (con escape), preme ^per te e torna alla modalità di inserimento. Consulta la guida per maggiori informazioni:

:help :imap o più corto: :h :im

Tieni presente che potresti sovrascrivere i mapping dei tasti esistenti. Inserisci i comandi nel tuo .vimrcfile di configurazione se vuoi che siano presenti per ogni documento.


grazie per i tuoi suggerimenti +1 :-) Ma sai se questo tipo di mappatura è già stata configurata? (ad es. senza sovrascrittura delle mappature chiave esistenti). Dove trovare tale progetto / configurazione? Preferirei riutilizzare qualcosa di già fatto (e robusto), piuttosto che provare a farlo da solo (e perdere qualcosa di importante). Saluti
olibre,

Devo porre / spostare la mia domanda su superuser.com ?
olibre,

Grazie! Puoi vedere se esiste un comando con il comando (logico) :im <c-a>. Se dice "Nessuna mappatura trovata", non sovrascriverete nulla. Non credo che diventerà molto più robusto di così ...
Joker,

Humm ... Devo programmare, testare la mia configurazione, quindi correggere i miei bug, e ancora .... Ma non conosco tutti i vimcomandi ... Per favore, sai dove posso trovare un elenco degli :imultimi argomenti? Cordiali saluti, sono abituato anche con i seguenti bashcomandi: M-backspace, M-F, M-B, M-D... Sarà bello se qualcuno ha già fatto e condivide il suo lavoro, non è vero? (qualcosa del genere evil) Quindi potrei riutilizzare la sua :immappatura chiave senza farlo da solo (soggetto a errori). Capisci cosa voglio dire?
olibre,

Potrei non capire esattamente cosa intendi, ma puoi trovare tutte le mappature dei tasti non standard digitando :im. Per fare un commento di livello superiore: se vuoi essere in grado di utilizzare Vim su più piattaforme / computer senza dover sempre caricare i tuoi plugin, modalità speciali o file vimrc, penso che la cosa migliore da fare sia imparare / usare i comandi Vim standard il più possibile. Ho creato personalmente diverse mappature dei tasti, ma cerco sempre di trovare l'alternativa Vim standard. E può essere piuttosto veloce. Una cosa che ho fatto è mappa <esc>per ;j, rendendo la mappatura nr 1 facile come ;jIe nr 2 ;jA.
Joker

6

Non è una risposta completa, ma sei a conoscenza della cosiddetta " modalità facile " ( vim -y)? È sempre in modalità di modifica da defaut e fa abbastanza di quello che vuoi, e non ha bisogno che tu installi o personalizzi nulla. Fa CTRL-A, C, V, X, Y ecc. Dalla lista dei tasti :

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

Una versione molto più potente di questa è Cream , che rimappa molti più tasti e rende i comandi di base simili ad altri editor con cui potresti avere familiarità.

C'è anche il plug-in Vimacs , che abilita tutti i comuni mapping dei tasti emacs. È facile da installare e può fare quello che vuoi (non l'ho mai provato).


Molto interessante +1 :-) Ho letto / testato tutti i tuoi link ... Ti darò più feedback in seguito. Grazie. Saluti
olibre,

1
I tasti della «modalità facile» non hanno nulla a che fare con quelli di Emacs. Ma «vimacs» sembra una cosa interessante. Ho appena installato e, nonostante sia vecchio, funziona ancora.
Ciao Angelo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.