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.