vim dostosowany za pomocą komend emacs (tylko tryb wstawiania)


10

Byłem emacsużytkownikiem i muszę się przełączyć na vim. Ale brakuje mi kilku podstawowych poleceń emacsa w vimtrybie wstawiania:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... i kilka innych

Wiem, że mogę nacisnąć, Escapea następnie nacisnąć niektóre z następujących klawiszy, a na koniec nacisnąć klawisz i:

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

Chciałbym jednak pozostać w vimtrybie wstawiania i unikać naciskania klawiszy Escape/ i.

W internecie znalazłem dostosowania dla emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Ale jeszcze nie znalazłem czegoś przeciwnego: dostosuj vimużycie emacspoleceń ...

Interesują mnie tylko emacspolecenia w vim trybie wstawiania . Zaledwie kilka podstawowych poleceń, jak bashpolecenia: C-A, C-E, C-K, C-Y, C-U... (yep C-Unie jest domyślnym emacspolecenia, ale jak to zbyt).

Odpowiedzi:


7

Odpowiadam na to pytanie cztery lata później, ponieważ udzielona odpowiedź jest częściowym rozwiązaniem, które nie do końca odnosi się do pierwotnego pytania.

Mam dokładnie takie samo pragnienie jak olibre i chciałem znaleźć kompletne rozwiązanie. Podchodzę do tego z innej perspektywy - jestem przyzwyczajony do edycji linii Emacsa w bash - ale problem jest taki sam. Chcę przenieść to w tryb wstawiania Vima (tylko).

Poniższe odpowiedzi dotyczą wszystkich żądań przypisania klawiszy w pierwotnym pytaniu zadanych przez olibre oraz kilku dodatków:

" 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

W tym momencie wydaje mi się, że jedynymi powiązaniami, do których nie mogę się dostać, są <Alt-B>i <Alt-F>, które pomijałyby całe słowa. Ilekroć wiążą <Esc>, <Alt>lub <Meta>kombinacje gVim (v7.4 Windows) wyprowadza znaków akcentowanych. Jeśli masz rozwiązanie tego problemu, edytuj tę odpowiedź. Mam kombinacje Alt do pracy na podstawie sugestii innego postu , aby po prostu użyć znaków specjalnych. Wstawiłem je powyżej.

Edytować

- (edycja nie jest oryginalnym plakatem z odpowiedzią) -

Użyłem następujących w Neovim i Windows 10. Być może trzeba zmienić „A” na „M” w innych systemach operacyjnych, ponieważ „alt” może być „meta” w innym miejscu. Nie bawiłem się wystarczająco.

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

Mała sugestia: Myślę, że <Esc>pabyłoby lepiej<C-Y>
Yamaneko

Wygląda na to, <C-K>że nie działa, gdy kursor znajduje się najbardziej po lewej stronie - powinien usunąć całą linię, ale Esc>lDapozostawi pierwszy znak cofnięty.
Ying Xiong

7

Możesz odwzorować dowolne polecenie w trybie wstawiania na dowolne za pomocą :imappolecenia lub zapisać pisanie za pomocą :im. Przy pierwszym mapowaniu możesz wpisać (w trybie normalnym):

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

Który przechodzi do trybu normalnego (z wyjściem), naciska ^na ciebie i wraca do trybu wstawiania. Aby uzyskać więcej informacji, zobacz pomoc:

:help :imap lub krócej: :h :im

Pamiętaj, że możesz zastępować istniejące mapowania kluczy. Umieść polecenia w .vimrcpliku konfiguracyjnym, jeśli chcesz, aby były one dostępne dla każdego dokumentu.


dzięki za wskazówki +1 :-) Ale czy wiesz, czy tego rodzaju mapowanie zostało już skonfigurowane? (np. bez zastępowania istniejących mapowań kluczy). Gdzie znaleźć taki projekt / konfigurację? Wolałbym ponownie wykorzystać coś, co już zostało zrobione (i solidne), niż próbować zrobić to sam (i pominąć coś ważnego). Na zdrowie
olibre,

Czy mam zadać / przenieść moje pytanie na superuser.com ?
olibre

Dzięki! Możesz sprawdzić, czy istnieje polecenie z poleceniem (logika) :im <c-a>. Jeśli wyświetli się komunikat „Nie znaleziono mapowania”, niczego nie zastąpisz. Nie sądzę, żeby stało się o wiele bardziej solidne ...
Joker

Humm ... Muszę napisać kod, przetestować konfigurację, a następnie naprawić błędy i jeszcze raz .... Ale nie znam wszystkich vimpoleceń ... Proszę, czy wiesz, gdzie mogę znaleźć listę :imostatnich argumentów? FYI, jestem również używany z następującymi bashpoleceniami: M-backspace, M-F, M-B, M-D... Będzie miło, jeśli ktoś już zrobił to i dzieli się swoją pracę, prawda? (coś w stylu evil) Dlatego mógłbym ponownie użyć jego :immapowania kluczy bez robienia tego sam (podatny na błędy). Rozumuiesz, co mam na myśli?
olibre

Może nie rozumiem dokładnie, co masz na myśli, ale możesz znaleźć wszystkie niestandardowe odwzorowania klawiszy, pisząc :im. Aby wypowiedzieć się na wyższym poziomie: jeśli chcesz móc używać Vima na wielu platformach / komputerach bez konieczności ładowania własnych wtyczek, trybów specjalnych lub pliku vimrc, myślę, że najlepiej jest uczyć się / używać standardowe polecenia Vima w jak największym stopniu. Sam zrobiłem kilka kluczowych mapowań, ale zawsze staram się znaleźć standardową alternatywę dla Vima. I to może być dość szybkie. Jedną rzeczą, jaką zrobiłem to mapa <esc>do ;j, dzięki czemu odwzorowanie nr 1 tak proste, jak ;jIi nr 2 ;jA.
Joker

6

Nie jest to kompletna odpowiedź, ale czy zdajesz sobie sprawę z tak zwanego „ łatwego trybu ” Vima vim -y? Defaut zawsze znajduje się w trybie edycji i robi całkiem sporo tego, czego chcesz, i nie musisz niczego instalować ani dostosowywać. Wykonuje CTRL-A, C, V, X, Y itp. Z kluczowego wykazu :

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

Znacznie mocniejszą wersją tego jest Cream , który odwzorowuje o wiele więcej klawiszy i czyni podstawowe polecenia podobnymi do innych edytorów, które możesz znać.

Istnieje również wtyczka Vimacs , która umożliwia wszystkie popularne mapowania kluczy emacs. Jest łatwy w instalacji i może robić, co chcesz (nigdy tego nie próbowałem).


Bardzo ciekawe +1 :-) Czytam / testuję wszystkie twoje linki ... Dam ci więcej opinii później. Dziękuję Ci. Pozdrawiam
olibre

1
Klawisze „trybu łatwego” nie mają nic wspólnego z klawiszami Emacsa. Ale „vimaki” wydają się interesujące. Właśnie zainstalowałem i pomimo tego, że jest stary, nadal działa.
Cześć Anioł
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.