Paket apa yang tersedia untuk pengeditan modal?

13

Paket apa yang tersedia untuk pengeditan modal di Emacs? Apa yang Anda gunakan dan mengapa?

Mari kita coba memposting satu paket per jawaban. Saya mengusulkan menyebutkan kelebihan dan kekurangan setiap paket.


Inilah definisi saya tentang pengeditan modal (saya tidak dapat menemukan artikel khusus Wikipeadia):

Pengeditan modal - gaya pengeditan teks ketika pengguna secara berkala beralih antara “mode normal” ketika tombol tidak menyebabkan penyisipan karakter mereka tetapi melakukan berbagai operasi pada teks dan “mode penyisipan” ketika kunci memasukkan karakter yang sesuai. Mungkin ada lebih banyak mode, tentu saja. Kebanyakan editor modern bukanlah modal. Contoh editor teks modal adalah Vi (Vim).

Mark Karpov
sumber
Dan apa itu "pengeditan modal"?
Lindydancer
@ Lindydancer, saya menambahkan upaya saya untuk menjelaskan konsep ke pertanyaan.
Mark Karpov

Jawaban:

13

evil, E xtensible VI L ayer untuk Emacs

Di samping nama yang dipertanyakan, eviladalah kondisi terkini dalam hal vimpersaingan di Emacs (dan mungkin di tempat lain, dalam hal ini). Ini mendukung banyak fitur yang dihindari oleh paket emulasi Vim lainnya, termasuk:

  • vim objek teks
  • vim register
  • vim makro keyboard
  • ex perintah

Keuntungan

  • Kompatibilitas kunci vimberarti Anda tidak kehilangan memori otot saat beralih ke sistem tanpa Emacs.
  • Sangat matang dan banyak digunakan (banyak paket komunitas, misalnya)
    • Banyak paket untuk vimporting evil.
  • vim tata bahasa gaya adalah modular dan cocok untuk ekstensi pengguna
  • evil itu sendiri sangat dapat dikembangkan: buat objek teks, operator, dan gerakan Anda sendiri!

Kekurangan

  • Mungkin akan membutuhkan beberapa mengutak-atik agar bermain bagus dengan paket lain
    • Untungnya, evilmembuat case-use yang paling umum menjadi sangat mudah.
  • eviladalah sistem yang sangat kompleks. Peretasan pada inti jahat bisa menjadi sangat terlibat.
  • vimkeybindings belum tentu optimal secara ergonomis. Terkadang, mereka bisa merasa sedikit sewenang-wenang ketika dipindahkan ke sistem yang berbeda.
  • Di-host di BitBucket (lincah), buat ini sesuai keinginan Anda.
PythonNut
sumber
Saya menemukan akronim jahat untuk lapisan vi extensible untuk Emacs sedikit rasa tidak enak.
Nama
@Nama bukan ide saya, tapi bagaimana bisa begitu?
PythonNut
dari kamus: evil = Sangat tidak bermoral dan jahat, mewujudkan atau terkait dengan kekuatan iblis, berbahaya, sangat tidak menyenangkan, ...
Nama
5
@Nama sebagai seseorang yang telah memberinya nama "Nama", saya pikir Anda akan menghargai penggunaan humor ketika menyebutkan sesuatu. :-) Dalam kasus Jahat, ini ironi (lihat en.wikipedia.org/wiki/Irony#Definitions ). Saya pikir salah satu nama terbaik yang pernah diberikan untuk paket Emacs, dan akan menyebutkannya sebagai keuntungan!
tarsius
@ PhythonNut Saya pikir penggunaan Bitbucket kurang masalah (sebenarnya tidak ada masalah sama sekali) daripada penggunaan Mercurial.
tarsius
11

Ada god-mode( https://github.com/chrisdone/god-mode ), yang menggunakan binding kunci Emacs standar tetapi menghilangkan kebutuhan untuk menahan pengubah. Ketika mode-dewa diaktifkan, C-...binding tidak memerlukan pengubah dan M-...binding menggunakan awalan alih-alih pengubah.

Sebagai contoh dari halaman github:

Sebelum: Cp Ck Cn M- ^) Cj Cy Tuan Cx zz M-2 Mg Mg Cx Cs

Setelah: pkng ^) jygr. . 2 ggxs

Stefan
sumber
1
Harap rentangkan jawaban Anda, jadi itu bukan hanya tautan.
Mark Karpov
@Stefan - Saya mengambil sedikit kebebasan untuk memperluas jawaban Anda. Jangan ragu untuk berubah sesuka Anda.
glucas
glucas: Terima kasih! @ Mark: tidak tahu apa-apa tentang mode dewa, saya tidak bisa dengan mudah memperluas jawaban saya. Saya mempostingnya dengan harapan bahwa seseorang seperti glucas akan mengisi kekosongan.
Stefan
6

Menambahkan sendiri, terima kasih @ Mark atas dorongan.

Tombol Terbang Xah

Dirancang dari bawah ke atas untuk emacs, dengan tujuan menjadi sistem yang PALING efisien, dari pengalaman bertahun-tahun dengan mode-ergoemacs. Pilihan utama didasarkan pada sains sebanyak mungkin, berdasarkan statistik frekuensi kunci dan skor kunci yang mudah ditekan. Perintah yang paling sering digunakan dipetakan ke tombol yang paling mudah ditekan. Masalah lain, seperti pengelompokan, dan bigram mengikat kunci, juga dipertimbangkan dari 3 tahun percobaan mingguan.

Poin Menarik:

  • Semua perintah Cx dilakukan dengan urutan 2 hingga 3 tombol tunggal. Dalam xah-fly-keys, Cx tidak pernah diperlukan. M- tidak pernah diperlukan juga.
  • Tidak bertentangan dengan kunci GNU emacs, karena tidak mengikat Ctrl atau Meta (kecuali C-7, C-8, tetapi tidak penting). Anda dapat mengaktifkan xah-fly-key dalam mode insert, dan menggunakan GNU Emacs seperti biasa.
  • Juga dipertimbangkan serangkaian perintah yang menghasilkan efisiensi pengeditan maksimal. Jadi, paket ini menggunakan ~ 80 perintah pengeditan khusus. (misalnya, salinan akan menyalin baris saat ini jika tidak ada pilihan. Satu perintah tunggal untuk beralih huruf, bukan variasi ~ 6 variasi GNU Emacs atas / bawah / wilayah / tanpa-wilayah.)
  • Implementasinya sesederhana mungkin. Tidak ada makro, tidak ada saran, tidak ada pemetaan ulang kunci yang kompleks, hanya beberapa kait yang digunakan. (baik atau buruk?!)

Kekurangan:

  • Seperti belajar vi untuk pertama kalinya, Anda perlu satu bulan untuk mengadopsi.
  • Tidak terkenal Baru dirilis untuk penggunaan umum bulan ini.
  • Saat ini hanya mendukung tata letak Dvorak.
  • Belum ada diagram kunci yang nyaman untuk belajar (belum).
  • Untuk mode utama, Anda masih perlu menggunakan Cc. (jadi, Anda mungkin menggunakan paket lain seperti mode-dewa atau hydra untuk menyelesaikan masalah ini.)

Saya pengarangnya, jadi berhati-hatilah agar saya bias secara tidak sadar. Jangan ragu untuk berkomentar atau mengoreksi.

Xah Lee
sumber
Apakah Anda akan mendukung tata letak keyboard lain? Saya tahu yang dilakukan ErgoEmacs. Saya mungkin mencobanya, tetapi beralih ke Dvorak terlalu tinggi untuk eksperimen biasa.
PythonNut
@PythonNut ya, prioritas utama. Saya harap dalam seminggu. Hal utama adalah mencari cara bagaimana saya ingin mengimplementasikannya.
Xah Lee
Ah. Sangat keren. Saya akan memberikan pusaran ketika keluar.
PythonNut
6

Modalka harus menjadi anak terbaru di blok pengeditan modal. Proyek github tampaknya berumur 10 hari. Saya tidak punya cukup waktu penggunaan untuk berkomentar atau mengevaluasi, tetapi begini caranya dijelaskan:

Ini adalah kit bangunan untuk membantu beralih ke pengeditan modal di Emacs. Tujuan utama dari paket ini adalah membuat pengeditan modal di Emacs sebagai alami dan asli mungkin. Tidak ada hack, tidak ada kasus sudut, tidak ada persaingan - mulailah mengedit secara modalnya seperti yang Anda inginkan.

Dokumentasi juga membandingkan dan kontras Modalka dengan solusi modal umum lainnya, seperti evil, god-mode, boon, dll

Pengguna Emacs
sumber
4

Anugerah

Boon adalah salah satu paket yang kurang dikenal untuk mengedit modal. Itu tidak meniru Vi (atau Vim) tetapi memberikan tata letak asli dioptimalkan untuk tata letak keyboard Colemak.

Keuntungan dan Prinsip Desain

  • Alokasi spasial pertama, mnemonik kedua: alokasi kunci untuk perintah didasarkan pada prioritas lokasi tombol pada keyboard. Apa pun yang dicetak pada tutup tombol adalah masalah sekunder.

  • Gulungan jari mudah: kombinasi umum harus berupa pergantian tangan kiri / kanan atau gulungan satu tangan yang mudah.

  • Gunakan baris home dan jari yang kuat untuk perintah yang paling sering digunakan

  • Navigasi yang mudah: banyak perintah terikat pada navigasi. Ini memfasilitasi bergerak. Karena gerakan berfungsi ganda sebagai definisi wilayah, itu membuat perintah manipulasi (operator) lebih kuat.

Kekurangan

  • Anda perlu mempelajari kembali cara berinteraksi dengan editor karena koleksi primitif pengeditan dan penempatannya di keyboard cukup unik.
Mark Karpov
sumber
1
Kedengarannya agak aneh bahwa Boon tidak terlalu peduli dengan apa yang ada di kunci, namun memaksakan bahwa kunci itu adalah Colemak. Kedengarannya seperti tata letak agnostik.
PythonNut
@PythonNut, saya kira orang perlu merujuk ke tombol entah bagaimana :-) Saya pikir itu sepenuhnya mungkin untuk membuatnya bekerja dengan tata letak lainnya.
Mark Karpov
Boon memiliki dukungan QWERTY dan QWERTZ sekarang, lihat github.com/jyp/boon#installation . Saya memperbarui jawaban untuk mencerminkan itu.
raju-pahit
3

Ergoemacs juga mendukung pengeditan modal. Itu tidak meniru vi, tetapi menggunakan tombol Alt untuk perintah yang paling sering digunakan. Misalnya, kursor bergerak adalah Alt dan tangan kanan terbalik T. (Pada QWERTY itu Alt+ juntuk left, Alt+ luntuk kanan, Alt+ iuntuk updan Alt+ kuntuk down). Menghapus karakter atau kata adalah Altdengan tombol baris home kiri. Pilihan kunci didasarkan pada frekuensi perintah dan posisi tombol untuk kemudahan pers.

  • Untuk memulai pengeditan modal, pengguna dapat menekan f6.
    • Setelah f6ditekan, tombol yang paling sering digunakan tidak lagi memerlukan kombinasi tombol alt.
    • Oleh karena itu, pada QWERTY, jis left, jis right, iis updan kdown).
  • Mode perintah modal keluar dengan menekan return, f6atau escape.

Selain paradigma modal tradisional, ada paradigma modal semu yang memungkinkan setiap kombinasi C-xatau C-ckunci dapat dicapai tanpa menggunakan pengubah (seperti mode dewa).

  • Kuasi-modal dimulai dengan QWERTY apps funtuk C-cdengan tombol kontrol ditekan ke bawah dan QWERTY apps duntuk C-x.
  • Saat menyelesaikan urutan appstombol ini tombol akan mengubah jenis pengubah yang diasumsikan ditekan.
  • Setelah perintah dipanggil, ergoemac melanjutkan mode edit.
  • Selama urutan tombol apa pun Anda juga dapat mengubah jenis tombol yang ditekan. Ini hanya dengan menekan appstombol lagi.

Selain mengubah tombol perintah, mode-ergoemacs memungkinkan Anda mengubah hal-hal tentang urutan tombol saat mengetiknya:

  • Anda dapat mengedit argumen awalan selama tengah urutan tombol dengan menekan f2.
  • Menekan backspacemengambil kembali tombol terakhir yang ditekan.
  • Apps memungkinkan Anda mengubah tombol yang ditekan selama urutan tombol apa pun.

mode-ergoemacs juga berupaya untuk menghargai apa pun yang dilakukan mode terhadap tombol-tombol dasar. Misalnya, jika mode-org mendefinisikan kunci khusus untuk next-line, ergoemacs menggunakan perintah ini untuk Alt+ kketika dalam mode-org.

Keuntungan:

  • Bagian dari GNU Emacs, di ELPA.
  • Mendukung "universal" Windows / Linux kunci di luar kotak. mis. Buka ( C-o), Tutup ( C-w), Pilih semua ( C-a), Salin ( C-c), Potong ( C-x), Tempel ( C-v), dll.
  • Cukup populer.
  • Mendukung banyak tata letak, termasuk Qwerty, dvorak, colemak, bepo, dan banyak tata letak internasional lainnya yang menyesuaikan tombol untuk memastikan mereka ada di baris rumah (Mi di QWERTY akan menjadi Mu di colemak).
  • Memperlihatkan gambar tata letak keyboard Anda di emacs dengan menjelaskan tema.
  • Kunci dapat disesuaikan melalui sistem ekstensi, dengan membuat tema.
  • Anda dapat mengatur modal keymap sembarang (belum didokumentasikan).

Kekurangan:

  • Stabil lambat pada saat startup.
    • Pada master yang tidak stabil, startup pertama lambat (~ 5 detik untuk setup minimal), (~ 20 detik untuk startup saya)
    • Startup kedua kedua jauh lebih cepat (untuk pengaturan kompleks saya ~ 4 detik).
    • Ini karena mode-ergoemacs berubah dan melakukan caching setiap keymap aktif di emacs. Pada startup kedua, pengaturan ini disimpan.
  • Kode kompleks.

Lihat https://github.com/ergoemacs/ergoemacs-mode

Matthew Fidler
sumber
2

Opsi semi-modal lainnya adalah Hydra:

https://github.com/abo-abo/hydra

Menurut situs web

Bayangkan bahwa Anda telah mengikat Cc j dan Cc k di konfigurasi Anda. Anda ingin memanggil Cc j dan Cc k dalam beberapa urutan (arbitrer). Hydra memungkinkan Anda untuk:

  • Ikat fungsi Anda dengan cara menekan Cc jjkk3j5k sama dengan menekan Cc j Cc j Cc k Cc k M-3 Cc j M-5 Cc k. Kunci apa pun selain j atau k keluar dari keadaan ini.

  • Tetapkan petunjuk khusus untuk grup fungsi ini, sehingga Anda segera tahu setelah menekan Cc yang dapat Anda tindak lanjuti dengan j atau k.

Saya belum menggunakannya tetapi sepertinya menarik.

Matthew Fidler
sumber