Melintasi teks dalam mode Sisipkan

321

Saat dalam Mode Sisipkan di Vim, apakah ada cara untuk menelusuri teks yang memindahkan beberapa karakter maju dan mundur selain menggunakan tombol panah?

Jika saya tekan h, j, kdan lsementara dalam mode Insert, karakter yang sebenarnya dicetak di layar bukannya bergerak melalui teks.

Cara saya melakukannya saat ini adalah harus menggunakan Ctrl+ [( Esc) dan melintasi teks itu; tapi jelas itu tidak produktif.

Andreas Grech
sumber
Sebagai kiat tambahan: ini juga membantu jika Anda memetakan pelarian ke kombinasi tombol yang lebih dekat (yaitu imap jk <Esc>) sehingga Anda tidak perlu mematahkan momentum Anda dan menjangkau seluruh keyboard Anda untuk menekan tombol.
tsujin
3
Saya suka ( <ESC>) dipetakan ke kjbukan jk; temanku Dijkstra yang harus disalahkan!
Dr Beco
7
Saya punya jkdan kj, jadi saya cukup menekannya seperti tombol besar dengan dua jari dan tidak masalah urutan saya kembali normal.
Edu Ruiz

Jawaban:

648

Anda tampaknya menyalahgunakan vim, tapi itu kemungkinan karena tidak terlalu terbiasa dengannya.

Cara yang benar adalah dengan menekan Esc, pergi ke tempat Anda ingin melakukan koreksi kecil, memperbaikinya, kembali dan terus mengedit. Ini efektif karena Vim memiliki lebih banyak pergerakan daripada karakter biasanya maju / mundur / naik / turun. Setelah Anda mempelajari lebih banyak tentang mereka, ini akan menjadi lebih produktif.

Berikut adalah beberapa kasus penggunaan:

  • Anda secara tidak sengaja mengetik "secara akif". Tidak masalah, urutannya EscFfrdAakan memperbaiki kesalahan dan membawa Anda kembali ke tempat Anda mengedit. The Ffgerakan akan bergerak mundur kursor ke pertama kali bertemu "f" karakter. Bandingkan dengan Ctrl+ DeldEnd, yang melakukan hal yang sama dalam editor biasa, tetapi membutuhkan lebih banyak penekanan tombol dan membuat Anda memindahkan tangan Anda keluar dari area alfanumerik keyboard.
  • Anda secara tidak sengaja mengetik "Anda mengetik secara tidak sengaja", tetapi ingin memperbaikinya menjadi "Anda dengan sengaja mengetik". Kemudian Esc2bcwakan menghapus kata yang ingin Anda perbaiki dan membawa Anda ke mode penyisipan, sehingga Anda dapat segera mengetik ulang. Untuk kembali ke pengeditan, cukup tekan Asaja End, jadi Anda tidak perlu menggerakkan tangan untuk mencapai Endkunci.
  • Anda secara tidak sengaja mengetik "mouse", bukannya "mouse". Tidak masalah - Ctrl+ lama yang baik wakan menghapus kata sebelumnya tanpa meninggalkan mode sisipkan. Dan itu terjadi jauh lebih cepat untuk menghapus kata kecil daripada memperbaiki kesalahan di dalamnya. Saya sudah terbiasa dengan itu sehingga saya telah menutup halaman browser ketika saya mengetik pesan ini ...!
  • Jumlah pengulangan sebagian besar kurang dimanfaatkan. Sebelum membuat gerakan, Anda dapat mengetikkan angka; dan gerakan akan diulang beberapa kali ini. Misalnya, 15hkursor Anda 4j akan dikembalikan 15 karakter dan akan memindahkan kursor Anda 4 baris ke bawah. Mulailah menggunakannya dan Anda akan segera terbiasa. Jika Anda membuat kesalahan sepuluh karakter kembali dari kursor Anda, Anda akan menemukan bahwa menekan tombol 10 kali jauh lebih lambat daripada pendekatan berulang untuk memindahkan kursor. Jadi, Anda dapat dengan cepat mengetik tombol 12h(sebagai tebak berapa banyak karakter yang Anda butuhkan untuk memindahkan kursor), dan segera bergerak maju dua kali dengan llcepat untuk memperbaiki kesalahan.

Tapi, jika Anda masih ingin melakukan traversals teks kecil tanpa meninggalkan modus insert, ikuti rson 's saran dan penggunaan Ctrl+ O. Mengambil contoh pertama yang saya sebutkan di atas, Ctrl+ OFfakan memindahkan Anda ke karakter "f" sebelumnya dan meninggalkan Anda dalam mode sisipkan.

P Shved
sumber
33
+1 Jawaban luar biasa dan terima kasih atas semua contoh yang Anda berikan!
Andreas Grech
79
Perlu juga dicatat bahwa Anda dapat menggunakan Ctrl+ountuk mengeluarkan satu perintah dalam mode normal. Terkadang hal ini dapat membawa Anda ke tempat yang Anda inginkan, terutama ketika dikombinasikan dengan perintah pergerakan t / T dan f / F.
Randy Morris
6
"Kamu sepertinya menyalahgunakan vim, tapi sepertinya kamu tidak terlalu mengenalnya." sedikit merendahkan. Tidak?
David Rivers
17
Ini adalah wawasan hebat tentang cara menggunakan Vim dengan benar. Namun, saya merasa menekan "Esc" sebagai sesuatu yang menyebalkan, jadi saya pikir perlu menunjukkan bahwa Anda dapat memetakan kunci yang lebih mudah diakses untuk fungsi itu, misalnya "imap jj <esc>".
Simetris
25
Untuk memperbaiki kesalahan ketik Anda tidak harus meninggalkan mode penyisipan. Vim sangat kuat karena Anda membuat aksi atomik yang berulang. Memasukkan salah ketik, dan memperbaikinya menciptakan dua tindakan terpisah. Cara yang tepat untuk memperbaiki kesalahan ketik untuk melakukannya tanpa meninggalkan mode sisipkan. Jika itu berarti menggunakan tombol panah untuk bernavigasi di sana itu tidak masalah. Vim memang memiliki beberapa keybindings untuk dinavigasi dalam mode insert. Periksa :h ins-special-keys. ctrl-h: backspace,: ctrl-wdelete word ctrl-u,: delete ke awal baris alt-b,: kembali sebuah kata.
everett1992
152

Saat dalam mode insert , gunakan CtrlOuntuk masuk ke mode normal hanya dengan satu perintah:

CTRL-O h  move cursor left 
CTRL-O l  move cursor right
CTRL-O j  move cursor down
CTRL-O k  move cursor up

yang mungkin merupakan cara paling sederhana untuk melakukan apa yang Anda inginkan dan mudah diingat.

Kunci kontrol lain yang sangat berguna dalam mode insert:

CTRL-W    delete word to the left of cursor
CTRL-O D  delete everything to the right of cursor
CTRL-U    delete everything to the left of cursor
CTRL-H    backspace/delete
CTRL-J    insert newline (easier than reaching for the return key)
CTRL-T    indent current line
CTRL-D    un-indent current line

ini akan menghilangkan banyak switch boros kembali ke mode normal.

Chris Sattinger
sumber
13
Terima kasih. Ini harus dianggap sebagai jawaban yang benar. Ini sebenarnya membantu.
Atcold
1
Di mac saya, ini huruf kecil o bukan huruf besar O. Apakah itu berbeda dari "vim standar"? Saya melihat banyak tempat di mana mereka tampaknya mengatakan huruf besar (kecuali itu hanya tulisan ceroboh). Bisakah kamu mengkonfirmasi?
Floris
Ok sangat bermanfaat. Namun, kombinasi yang menarik saya sulit ditemukan dan ini adalah menghapus baris. Hal yang sangat diremehkan untuk dilakukan jika menyisipkan saluran secara akurat.
patrik
5
@ Floris Vim tidak membedakan antara huruf besar dan kecil untuk kombinasi ctrl. Itu sebabnya tidak mungkin memetakan ctrl + shift + sesuatu.
Mahmoud Al-Qudsi
92

Masukkan mode

Gerakan

hjkl

Meskipun apa yang Pavel Shved mengatakan - bahwa itu mungkin lebih dianjurkan untuk membiasakan diri Escmeniru modus Insert - di sini adalah contoh set pemetaan untuk navigasi cepat dalam mode Insert:

" provide hjkl movements in Insert mode via the <Alt> modifier key
inoremap <A-h> <C-o>h
inoremap <A-j> <C-o>j
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l

Ini akan membuat Alt+ hdalam mode Sisipkan pergi satu karakter ke kiri, Alt+ jke bawah dan seterusnya, analog ke hjkldalam mode Normal.

Anda harus menyalin kode itu ke file vimrc Anda untuk memuatnya setiap kali Anda memulai vim (Anda dapat membukanya dengan mengetikkan :new $myvimrcmulai dalam mode Normal).


Setiap gerakan mode Normal

Karena tombol Altpengubah tidak dipetakan (ke sesuatu yang penting) secara default, Anda dapat dengan cara yang sama menarik fungsionalitas lain (atau semua) dari mode Normal ke mode Insert. Misalnya:
Pindah ke awal kata saat ini dengan Alt+ b:

inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w


(Penggunaan lain Altdalam mode Sisipkan)

Perlu disebutkan bahwa mungkin ada kegunaan yang lebih baik untuk Altkunci daripada mereplikasi perilaku mode Normal: misalnya di sini adalah pemetaan untuk menyalin dari baris yang berdekatan bagian dari kolom saat ini sampai akhir baris:

" Insert the rest of the line below the cursor.
" Mnemonic: Elevate characters from below line
inoremap <A-e> 
    \<Esc>
    \jl
        \y$
    \hk
        \p
        \a
" Insert the rest of the line above the cursor.
" Mnemonic:  Y depicts a funnel, through which the above line's characters pour onto the current line.
inoremap <A-y> 
    \<Esc>
    \kl
        \y$
    \hj
        \p
        \a

(Saya menggunakan \ kelanjutan garis dan lekukan untuk meningkatkan kejelasan - perintah ditafsirkan seolah-olah ditulis pada satu baris.)


Tombol cepat bawaan untuk mengedit

CTRL-H   delete the character  in front of the cursor (same as <Backspace>)
CTRL-W   delete the word       in front of the cursor
CTRL-U   delete all characters in front of the cursor (influenced by the 'backspace' option)

(Tidak ada tombol pintas bawaan untuk pergerakan dalam mode Sisipkan.)

Referensi: :help insert-index


Mode baris perintah

Kumpulan pemetaan ini membuat gerakanAlt + atas tersedia di baris perintah:hjkl

" provide hjkl movements in Command-line mode via the <Alt> modifier key
cnoremap <A-h> <Left>
cnoremap <A-j> <Down>
cnoremap <A-k> <Up>
cnoremap <A-l> <Right>

Atau, pemetaan ini menambahkan gerakan ke mode Sisipkan dan mode baris perintah dalam sekali jalan:

" provide hjkl movements in Insert mode and Command-line mode via the <Alt> modifier key
noremap! <A-h> <Left>
noremap! <A-j> <Down>
noremap! <A-k> <Up>
noremap! <A-l> <Right>


Perintah pemetaan untuk menarik perintah mode Normal ke mode Baris perintah terlihat sedikit berbeda dari perintah pemetaan mode Sisipkan (karena mode baris perintah tidak memiliki mode Sisipkan Ctrl+ O):

" Normal mode command(s) go… --v <-- here
cnoremap <expr> <A-h> &cedit. 'h' .'<C-c>'
cnoremap <expr> <A-j> &cedit. 'j' .'<C-c>'
cnoremap <expr> <A-k> &cedit. 'k' .'<C-c>'
cnoremap <expr> <A-l> &cedit. 'l' .'<C-c>'

cnoremap <expr> <A-b> &cedit. 'b' .'<C-c>'
cnoremap <expr> <A-w> &cedit. 'w' .'<C-c>'


Tombol cepat bawaan untuk gerakan dan pengeditan

CTRL-B       cursor to beginning of command-line
CTRL-E       cursor to end       of command-line

CTRL-F       opens the command-line window (unless a different key is specified in 'cedit')

CTRL-H       delete the character  in front of the cursor (same as <Backspace>)
CTRL-W       delete the word       in front of the cursor
CTRL-U       delete all characters in front of the cursor

CTRL-P       recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N       recall next     command-line from history (that matches pattern in front of the cursor)
<Up>         recall previous command-line from history (that matches pattern in front of the cursor)
<Down>       recall next     command-line from history (that matches pattern in front of the cursor)
<S-Up>       recall previous command-line from history
<S-Down>     recall next     command-line from history
<PageUp>     recall previous command-line from history
<PageDown>   recall next     command-line from history

<S-Left>     cursor one word left
<C-Left>     cursor one word left
<S-Right>    cursor one word right
<C-Right>    cursor one word right

<LeftMouse>  cursor at mouse click

Referensi: :help ex-edit-index

Aaron Thoma
sumber
@YugalJindle: Terima kasih! :) Saya sekarang telah menambahkan info tentang men-tweak mode Command-line. (Pendekatannya sedikit berbeda dari mode Insert.)
Aaron Thoma
@ Zen: Apa yang Anda maksud dengan "winkey"? Saya belum merujuk kunci Windows dalam jawaban saya. Apakah maksud Anda Altkuncinya?
Aaron Thoma
Shift - kiri / kanan untuk memindahkan seluruh kata !! Bagaimana saya tidak tahu itu. Terima kasih.
Floris
sebenarnya dalam mode terminal alt secara otomatis mengirim esc sebelum perintah Anda ........
Fuseteam
26

Jika Anda seorang vim purist, lewati membaca jawaban ini. OTOH, jika Anda baru mengenal vim dan sedang mencari beberapa tips bermanfaat yang tidak akan Anda temukan di ratusan tutorial dan blog vim, baca terus ... :-)

Beberapa cara yang tidak ortodoks (vim)

Ini tahun 2014, dan sebagai seseorang yang baru kembali ke sini vimsaya dapat menawarkan beberapa sudut pandang dan tip yang berpotensi bertentangan.

Gunakan shift + kiri atau shift + kanan untuk menelusuri kata

Sementara pengulangan adalah konsep yang kuat dalam vim, saya (secara pribadi) merasa aneh bahwa menggunakannya memaksa saya untuk menghitung (garis, karakter, kata-kata, dll.) Atau membuat tebakan. Otak saya biasanya bekerja seperti "Saya ingin kursor di sana " dan tidak seperti "Saya ingin kursor _5_words_to_the_left_". Dengan cepat dapat menggerakkan kursor, dan mengamati secara visual di mana titik penyisipan dengan cara ini memungkinkan saya untuk mengingat apa yang saya edit daripada harus menghitung berapa banyak hop yang harus saya buat untuk sampai ke tempat saya perlu mengedit.

Aktifkan mode mouse, dan gunakan roda mouse dan mengklik

... untuk menavigasi isi teks yang besar.

Sebagian besar (semua) komputer modern memiliki touchpad yang terintegrasi erat dengan keyboard (mis. MacBook). Desainer industri telah menghabiskan waktu bertahun-tahun untuk mengoptimalkan desain ini sehingga masalah lama karena harus memindahkan tangan dari keyboard tidak lagi menjadi masalah nyata. Oke, itu jika Anda terbiasa dengan mouse dan tidak suka berganti, tetapi bagi siapa pun yang baru vim (seperti yang mungkin menemukan posting ini melalui pencarian), ini seharusnya tidak menjadi masalah.

Sebagai bonus, klik + seret menempatkan Anda dalam mode visual

Dengan mouse diaktifkan, mengklik dan menarik memiliki efek beralih ke mode visual dan menandai wilayah untuk menarik.

Dan gunakan roda gulir

Menggunakan mouse (roda) untuk bergulir, dan mengklik untuk memposisikan kursor (duh) hanya berfungsi. Lihat http://usevim.com/2012/05/16/mouse/ untuk informasi lebih lanjut tentang ini.

Sehingga...

Inilah yang saya sebut cara navigasi yang lebih modern (menggunakan mouse, roda gulir, dll.), Sama efektifnya tergantung pada preferensi input Anda.

HTH

Shyam Habarakada
sumber
6
@MilesRout ya, saya punya disclaimer. Tetapi dalam semua keseriusan, saya akan berpikir ada proporsi yang baik dari pengguna vim yang otaknya bekerja sama dengan saya. Yaitu ... otak saya biasanya bekerja seperti "Saya ingin kursor di sana" dan tidak seperti "Saya ingin kursor 5_words_to_the_left ". Dan cara konvensional vim tidak bekerja dengan baik untuk orang-orang itu. Saya suka vim karena a) tersedia di mana-mana dan b) memiliki fitur yang kuat. Namun saya tidak merasa perlu untuk menyesuaikan diri dengan semua mekanisme standarnya.
Shyam Habarakada
4
@MilesRout Ada banyak agama di sekitar hal semacam ini di vim, jadi saya tidak akan berdebat dengan Anda tentang hal ini. Metode hitungan pengulangan tidak membantu saya, dan jawaban yang diterima juga menyebutnya sebagai sesuatu yang sangat kurang dimanfaatkan. Saya hanya bisa menebak mengapa itu terjadi. Menggunakan w, b dll untuk menavigasi ke tempat-tempat terdekat semuanya bagus, tetapi untuk melangkah lebih jauh, roda mouse bekerja jauh lebih baik bagi saya. Bersulang.
Shyam Habarakada
4
+1. Saya tidak memahaminya suara. Ada penafian. Ambillah jika Anda suka dan lewatkan saja jika tidak.
fangmobile.com
Ini adalah jawaban yang sangat membantu
Slava
1
Sebagai seseorang yang baru-baru ini pindah ke VIM, saya menemukan premis dari jawaban ini benar-benar tepat. Kemampuan untuk secara instan memberitahu jumlah pengulangan yang diperlukan untuk menempatkan kursor di tempat tertentu mungkin atau mungkin bukan sesuatu yang datang dengan pengalaman. Saat ini, sama seperti @ShyamHabarakada, otak saya tidak berfungsi seperti itu. Terlepas dari seberapa tidak lazimnya hal ini, saya pribadi memetakan ulang fn + hjkl ke tombol panah untuk gerakan yang sangat kecil. Untuk gerakan besar, saya biasanya memperkirakan sejumlah pengulangan dan kemudian menyempurnakannya. Bagi saya, itu secepat yang saya bisa.
Jacoscaz
14

Banyak orang di komunitas Vim berpendapat bahwa Anda tidak boleh menavigasi dalam mode Sisipkan, bahwa itu bukan cara Vim. Saya pikir ini adalah sentimen yang salah dipelajari ketika beralih dari editor standar ke Vim.

Vim paling kuat ketika Anda menggunakan alatnya untuk membuat atomik, tindakan atau penemuan berulang.

Tidak apa-apa untuk menavigasi saat dalam mode Sisipkan jika Anda memperbaiki kesalahan yang Anda buat dalam sesi Sisipkan yang sama. Anda tidak boleh menavigasi di luar rentang teks yang Anda modifikasi.

Jika Anda membuat kesalahan saat memasukkan teks dan keluar dari mode Sisipkan untuk memperbaikinya Anda tidak akan dapat mengulangi tindakan yang dimaksud, .akan mengulangi koreksi.

Vim memang mendukung banyak tombol navigasi mode Sisipkan. Jelas ada tombol panah, Beranda, dan Akhir, tetapi ada juga banyak cara pintas lainnya. Lihat :h ins-special-keys.

everett1992
sumber
4

Di GVim, Anda dapat menggunakan mouse. Tapi jujur, apa yang salah dengan menggunakan tombol panah? Ada alasan mengapa mereka menggunakan keyboard.

Erich Kitzmueller
sumber
9
tapi alasan itu tidak diperuntukkan bagi pengguna vim. Salah satu kekuatan utama vim adalah bahwa Anda dapat melakukan semua hal tanpa harus mengeluarkan tangan dari deretan keyboard di rumah. Secara khusus, gerakan hjkl.
Aaron Thoma
1
Saya setuju dengan @ammoQ. Tidak ada salahnya menggunakan tombol panah. Jika menggunakan tombol panah memberi Anda lebih banyak produktivitas, ikuti saja.
Eunwoo Song
penghargaan: Saya menggunakan hjkl lebih sering daripada tombol panah saat menggunakan vi, tetapi beralih di antara mode telah menjadi tindakan bawah sadar bagi saya.
Erich Kitzmueller
4

Untuk memiliki navigasi yang sedikit lebih baik dalam mode insert, mengapa tidak memetakan beberapa tombol?

imap <C-b> <Left>
imap <C-f> <Right>
imap <C-e> <End>
imap <C-a> <Home>
" <C-a> is used to repeat last entered text. Override it, if its not needed

Jika Anda dapat bekerja membuat kunci Meta berfungsi di terminal Anda, Anda dapat mengejek mode emacs lebih baik. Navigasi dalam mode normal adalah cara yang lebih baik, tetapi untuk gerakan yang lebih pendek itu membantu untuk tetap dalam mode insert.

Untuk lompatan yang lebih lama, saya lebih suka terjemahan default berikut:

<Meta-b>    maps to     <Esc><C-left>

Ini bergeser ke mode normal dan kembali kata

Alex
sumber
2

Saya percaya Homedan End(dan PageUp/ PageDn) juga bekerja secara normal saat dalam mode insert, tapi selain itu, saya tidak percaya ada kunci standar lain yang didefinisikan untuk traversal teks.

Amber
sumber
tetapi mungkin tidak adakah cara untuk melintasi teks hanya menggunakan tombol huruf?
Andreas Grech
5
Tentu saja ada, jika Anda tidak ingin bisa mengetik huruf tertentu ...;)
Hobbs
@obb Bagaimana kalau ctrl + hjkl? Itu seharusnya masuk akal
user4052054
1

Maaf tapi vim tidak berfungsi seperti itu.

Anda harus beralih ke mode "normal", navigasikan dan kemudian kembali untuk memasukkan lagi.

Johan
sumber
1

Anda dapat membuat pemetaan yang berfungsi dalam mode sisipkan. Cara untuk melakukannya adalah melalui inoremap. Catat 'i' di awal perintah (noremap berguna untuk menghindari tabrakan peta utama). Akibat wajarnya adalah 'n' untuk mode 'normal'. Anda dapat menduga apa yang menurut vim 'normal';)

NAMUN, Anda benar-benar ingin menavigasi dalam teks menggunakan mode 'normal'. Vim sangat hebat dalam hal semacam ini dan semua kekuatan itu tersedia dari mode normal. Vim sudah menyediakan cara mudah untuk beralih dari mode normal ke mode insert (misalnya, i, I, a, A, o, O). Caranya adalah membuatnya mudah untuk masuk ke mode normal. Cara untuk melakukannya adalah dengan memetakan kembali kunci yang lebih nyaman. Tetapi Anda membutuhkan yang tidak akan bertentangan dengan pengetikan reguler Anda. Saya menggunakan:

inoremap jj <Esc>

Karena jj (itu 2 j diketik satu demi satu dengan cepat) sepertinya tidak muncul dalam kosakata saya. Yang lain akan memetakan kembali ke tempat yang nyaman.

Perubahan penting lainnya yang saya buat adalah untuk mengganti tombol CAPSLOCK dan CONTROL pada keyboard saya (menggunakan konfigurasi keyboard komputer host) karena saya hampir tidak pernah menggunakan CAPSLOCK dan memiliki tombol besar, indah tepat di tempat yang saya inginkan. (Ini umum untuk pengguna Emacs. Kelemahannya adalah ketika Anda menemukan diri Anda menggunakan keyboard 'tidak tetap'! Aaarggh!)

Setelah remap CAPSLOCK, Anda dapat dengan nyaman menggunakan remapping mode insert berikut:

Ingatlah bahwa beberapa tombol sudah dipetakan dalam mode insert (mundur-kill-word adalah Cw (Control-w) secara default, Anda mungkin sudah memiliki binding yang Anda inginkan. Karena itu, saya lebih suka Ch jadi di .vimrc saya punya :

inoremap <C-h> <C-w>

NAMUN, Anda mungkin menginginkan kejang memori otot yang sama dalam mode normal, jadi saya juga memetakan Ch sebagai:

nnoremap <C-h> db

(d) elete (b) ackwards menyelesaikan hal yang sama dengan kunci tombol yang sama. Jenis edit cepat ini adalah yang saya temukan berguna dalam praktek untuk kesalahan ketik. Tetapi tetap pada mode normal untuk bergerak dalam teks dan tidak lebih dari membunuh kata sebelumnya. Setelah Anda terbiasa mengubah mode (menggunakan remap tentu saja), itu akan jauh lebih efisien daripada memetakan kembali mode insert.

pfries
sumber
peta yang bagus untuk melarikan diri - saya rasa itu akan bekerja untuk apa saja kecuali bahasa Arab yang ditransliterasikan!
jjt
0

Anda dapat menggunakan imapuntuk memetakan tombol apa saja dalam mode penyisipan ke salah satu tombol kursor. Seperti itu:

imap h <Left>

Sekarang h berfungsi seperti dalam mode normal, menggerakkan kursor. (Memetakan h dengan cara ini jelas merupakan pilihan yang buruk)

Setelah mengatakan bahwa saya tidak berpikir cara standar untuk bergerak dalam teks menggunakan VIM adalah "tidak produktif". Ada banyak cara yang sangat ampuh untuk melintasi teks dalam mode normal (seperti menggunakan w dan b, atau / dan?, Atau f dan F, dll.)

Peter van der Heijden
sumber
1
Saya tidak mengatakan bahwa cara standar untuk menelusuri teks dalam vim tidak produktif; apa yang saya katakan adalah bahwa itu agak "menjengkelkan" harus keluar dari mode insert untuk kembali beberapa karakter dan kemudian harus kembali untuk memasukkan lagi; tetapi sekali lagi, mungkin ini adalah karena saya belum punya cukup digunakan untuk vim belum :)
Andreas Grech
Ini adalah solusi yang saya cari. Saya menggunakan imap <Ch> <Left> (saya tahu itu menghapus char, tapi saya punya backspace), yang saya butuhkan, terima kasih.
user4052054
0

Untuk beberapa gerakan dan tindakan yang sering digunakan, saya telah menetapkan pemetaan berikut. Ini menghemat penekanan tombol dibandingkan dengan kombinasi CTRL + O dan karena saya sering membutuhkannya, mereka terbayar dalam jangka panjang.

inoremap <A-$> <C-o>$
inoremap <A-^> <C-o>^
inoremap <A-h> <Left>
inoremap <A-l> <Right>
inoremap <A-O> <C-O>O
inoremap <A-o> <C-o>o
Alexander van Trijffel
sumber