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.