Saya sering menggunakan banyak doa forward-word
diikuti oleh satu backward-word
untuk memindahkan titik ke awal kata pada satu baris. Saya kira saya tidak pernah terbiasa dengan cara yang forward-word
berbeda dari vim w
dan bahkan setelah bertahun-tahun menggunakan Emacs saya tidak bisa terbiasa dengan perbedaannya.
Apakah ada fungsi yang bisa saya gunakan alih-alih forward-word
tidak melompati kata tetapi berhenti di awal kata juga? Apakah ada strategi lain untuk pindah ke awal kata ketika bergerak maju yang tidak melibatkan eksekusi berulang kali forward-char
?
Jawaban:
The
misc
paket (dikirim dengan emacs) memiliki built-in fungsiforward-to-word
, yang melakukan apa yang saya pikir Anda inginkan:Untuk menggunakannya, pertama-tama tambahkan
(require 'misc)
ke file konfigurasi Anda.sumber
w
. Sejauh yang saya bisa lihat, ada pemetaan vim-to-emacs yang hampir sempurna:w
=forward-to-word
;e
=forward-word
;b
=backward-word
;ge
=backward-to-word
. Tapi saya bukan pengguna ahli vim, jadi mungkin ada beberapa kehalusan saya hilang.w
,e
danb
hanya mengaburkan pergi dan aku hanya bergerak di sekitar. Aneh. Saya yakinw
berhenti di kedua titik! Jadi, saya akan menerima jawaban Anda, karena persis sesuai dengan pertanyaan saya :)Anda dapat mengikat fungsi di bawah ini
M-f
dan mengikat aslinyaforward-word
keM-F
. Fungsi ini hanya mengambilarg
dan meneruskannya keforward-word
fungsi. Jadi argumen universal akan bekerja sama baiknya dengan fungsi aslinya.Meskipun demikian, perlu diingat bahwa fungsi di atas mungkin tidak selalu melakukan hal yang benar ; itu sangat tergantung pada apakah intinya sudah di awal kata atau tidak.
Inilah cara lain untuk mengimplementasikan hal di atas di mana kata batas tidak sesuai dengan tabel sintaksis tetapi secara ketat pada pemisahan spasi putih:
Kredit diberikan ke @glucas untuk ide ini.
sumber
Setelah pencarian yang panjang dan menyakitkan untuk fungsi 'maju / mundur-kata' yang sempurna, saya menemukan hal-hal berikut yang membuat saya sangat bahagia:
sumber
Jika Anda ingin menggunakan
evil
,w
dalam keadaan normal terikatevil-forward-word-begin
, yang merupakan fungsi gaya Vim yang Anda cari.sumber
evil
waktu yang lama, tetapi sejak beberapa saat saya menggunakangod-mode
dan mengikat Emacs biasa.Seperti yang Anda sebutkan, caranya adalah maju dua kata ke depan, lalu satu kata ke belakang.
Berikut ini harus melakukan trik dan harus menghormati mode lain seperti mode subword.
Ini adalah versi dasar /emacs//a/4272/508 yang tidak mencakup beberapa kasus, tetapi lebih mudah dipahami.
sumber