vim disesuaikan dengan perintah emacs (hanya mode insert)

10

Saya adalah emacspengguna, dan saya harus beralih ke vim. Tapi saya kehilangan beberapa perintah emacs dasar dalam vimmode insert:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... dan lainnya

Saya tahu bahwa saya dapat menekan Escapedan kemudian menekan beberapa tombol berikut dan akhirnya menekan tombol i:

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

Namun saya ingin tetap dalam vimmode memasukkan dan menghindari menekan Escape/ itombol.

Di web, saya telah menemukan kustomisasi untuk emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Tetapi belum menemukan yang sebaliknya: sesuaikan vimuntuk menggunakan emacsperintah ...

Saya tertarik tentang emacsperintah dalam vim mode insert saja. Hanya beberapa perintah dasar, seperti bashperintah: C-A, C-E, C-K, C-Y, C-U... (ya C-Utidak default emacsperintah tapi aku seperti itu juga).

olibre
sumber

Jawaban:

7

Saya menjawab pertanyaan ini empat tahun kemudian karena jawaban yang diberikan adalah solusi parsial yang tidak sepenuhnya menjawab pertanyaan awal.

Saya memiliki keinginan yang sama persis dengan olibre, dan ingin menghasilkan solusi lengkap. Saya datang dari perspektif yang berbeda - Saya sudah terbiasa dengan pengeditan baris Emacs di bash - tetapi masalahnya sama. Saya ingin membawanya ke mode insert Vim (hanya).

Berikut ini alamat semua permintaan pengikat kunci dalam pertanyaan asli yang diajukan oleh olibre, ditambah beberapa tambahan:

" 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

Satu-satunya ikatan yang sepertinya tidak bisa saya kerjakan pada saat ini adalah <Alt-B>dan <Alt-F>, yang akan melompati seluruh kata. Setiap kali saya mengikat <Esc>,, <Alt>atau <Meta>kombinasi, gVim (v7.4 pada Windows) menghasilkan karakter beraksen. Silakan edit jawaban ini jika Anda memiliki solusi untuk masalah ini. Saya mendapatkan kombinasi Alt untuk bekerja berdasarkan saran posting lain untuk hanya menggunakan karakter khusus. Saya telah memasukkannya di atas.

Edit

- (sunting bukan oleh poster jawaban asli) -

Saya menggunakan berikut ini di bawah Neovim dan Windows 10. Anda mungkin perlu mengubah "A" menjadi "M" pada OS lain karena "alt" mungkin "meta" di tempat lain. Saya belum cukup bermain dengan itu.

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
kepala pohon
sumber
Hanya saran kecil: Saya pikir <Esc>paakan lebih baik untuk<C-Y>
Yamaneko
Sepertinya <C-K>tidak berfungsi ketika kursor berada di paling kiri - seharusnya menghapus seluruh baris tetapi Esc>lDaakan membuat karakter pertama terhapus.
Ying Xiong
7

Anda dapat memetakan perintah apa pun dalam mode sisipkan ke apa pun menggunakan :imapperintah, atau menyimpan pengetikan dengan menggunakan :im. Untuk pemetaan pertama Anda, Anda bisa mengetik (dalam mode normal):

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

Yang masuk ke mode normal (dengan escape), menekan ^untuk Anda dan kembali ke mode insert. Lihat bantuan untuk info lebih lanjut:

:help :imap atau lebih pendek: :h :im

Perhatikan bahwa Anda mungkin menimpa pemetaan kunci yang ada. Masukkan perintah ke .vimrcfile konfigurasi Anda jika Anda ingin mereka ada di sana untuk setiap dokumen.

Pelawak
sumber
terima kasih untuk Anda tips +1 :-) Tapi tahukah Anda apakah pemetaan semacam ini sudah dikonfigurasi? (mis. tanpa pemetaan kunci yang ada menimpa). Di mana menemukan proyek / konfigurasi seperti itu? Saya lebih suka menggunakan kembali sesuatu yang sudah dilakukan (dan kuat), daripada mencoba melakukannya sendiri (dan kehilangan sesuatu yang penting). Cheers
olibre
Haruskah saya bertanya / memindahkan pertanyaan saya ke superuser.com ?
olibre
Terima kasih! Anda dapat melihat apakah ada perintah dengan perintah (logika) :im <c-a>. Jika tertulis 'Tidak ada pemetaan yang ditemukan', Anda tidak akan menimpa anyting. Saya tidak berpikir itu akan menjadi jauh lebih kuat dari itu ...
Joker
Humm ... Saya harus kode, menguji konfigurasi saya, lalu memperbaiki bug saya, dan lagi .... Tapi saya tidak tahu semua vimperintah ... Tolong, apakah Anda tahu di mana saya dapat menemukan daftar :imargumen terakhir? FYI, saya juga digunakan dengan berikut bashperintah: M-backspace, M-F, M-B, M-D... Ini akan menjadi baik jika seseorang telah melakukan itu dan saham karyanya, bukan? (sesuatu seperti evil) Karena itu saya dapat menggunakan kembali :impemetaan kuncinya tanpa melakukannya sendiri (rawan kesalahan). Apakah Anda mengerti maksud saya?
olibre
Saya mungkin tidak mengerti persis apa yang Anda maksud, tetapi Anda dapat menemukan semua pemetaan kunci non-standar dengan mengetik :im. Untuk membuat komentar tingkat yang lebih tinggi: jika Anda ingin dapat menggunakan Vim di berbagai platform / komputer tanpa harus selalu memuat plugin Anda sendiri, mode khusus atau file-file vimrc, saya pikir hal terbaik untuk dilakukan adalah belajar / menggunakan Vim-perintah standar sebanyak mungkin. Saya membuat beberapa pemetaan kunci sendiri, tetapi selalu berusaha menemukan alternatif Vim standar. Dan itu bisa sangat cepat. Satu hal yang saya lakukan adalah peta <esc>untuk ;j, membuat Anda pemetaan nr 1 semudah ;jIdan nr 2 ;jA.
Joker
6

Bukan jawaban yang lengkap, tetapi apakah Anda menyadari apa yang disebut "Vim ini modus mudah " ( vim -y)? Itu selalu dalam mode edit oleh defaut, dan melakukan cukup banyak apa yang Anda inginkan, dan tidak perlu Anda menginstal atau menyesuaikan apa pun. Itu CTRL-A, C, V, X, Y dll. Dari daftar kunci :

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

Versi yang jauh lebih kuat dari ini adalah Cream , yang memetakan kembali lebih banyak tombol , dan membuat perintah dasar mirip dengan editor lain yang mungkin Anda kenal.

Ada juga plugin Vimacs , yang memungkinkan semua pemetaan kunci emacs umum. Sangat mudah untuk menginstal, dan dapat melakukan apa yang Anda inginkan (saya belum pernah mencobanya).

ire_and_curses
sumber
+1 yang sangat menarik :-) Saya membaca / menguji semua tautan Anda ... Saya akan memberi Anda lebih banyak umpan balik nanti. Terima kasih. Cheers
olibre
1
Kunci dari «mode mudah» tidak ada hubungannya dengan yang Emacs. Tetapi «vimacs» tampaknya merupakan hal yang menarik. Saya baru saja menginstal, dan meskipun sudah tua masih berfungsi.
Hi-Angel