Cara melompat ke awal atau akhir baris di vim + OS X

17

Di terminal saya bisa melakukan ini dengan menekan shift + home dan shift + end, tetapi sepertinya tidak berfungsi di vim. Tombol Home dan end hanya menggulir jendela terminal. Saya ingin melompat dalam mode edit.

JtR
sumber
4
Dalam mode perintah, Anda dapat menemukannya di Vim Cheat Sheet (0 dan $): fprintf.net/vimCheatSheet.html . Saya tidak tahu tentang mode edit.
Gnoupi

Jawaban:

13

Jawaban ini mengasumsikan Anda menggunakan vim di jendela Terminal .

Binding default untuk Home dan End sedikit berbeda dari apa yang diharapkan oleh sebuah program berdasarkan pengaturan TERM yang biasa (yaitu varian xterm). Jika Anda ingin tetap menggunakan binding standar (dan harus menggunakan varian Shifted di Terminal ), Anda dapat mencoba meletakkan sesuatu seperti ini di .vimrc:

:" map Mac OS X Terminal.app default Home and End
:map <ESC>[H <Home>
:map <ESC>[F <End>
:imap <ESC>[H <C-O><Home>
:imap <ESC>[F <C-O><End>
:cmap <ESC>[H <Home>
:cmap <ESC>[F <End>

Jika tidak, Anda dapat mencoba menyesuaikan kode yang dikirim Terminal ketika Anda menggunakan Home dan End (tidak tergeser, jika Anda mau). Pencarian mungkin akan muncul beberapa tempat yang menggambarkan bagaimana melakukannya ( ini satu ). Ide dasarnya adalah bahwa Anda ingin memiliki Terminal mengirim ESC [1 ~ bukan ESC [H untuk Rumah dan ESC [4 ~ bukannya ESC [F untuk End (atau Shift-Home / Shift-End jika Anda ingin menyimpan Rumah / Berakhir untuk mengakses scrollback). Saya akan menjelaskan proses secara lebih rinci, tetapi saya hanya punya 10,4, dan saya tahu Terminal banyak berubah dalam 10,5 dan kemudian.

Chris Johnsen
sumber
8

Dengan iTerm dan Vim Anda dapat menggunakan panah fn + kanan dan kiri dalam mode insert untuk melompat untuk memulai atau mengakhiri garis. Dengan Terminal.app Anda menggunakan shift + panah .

giorni
sumber
1

Sebagai tambahan untuk jawaban Chris , Anda juga dapat mencapai navigasi kata (dengan Option+arrowkunci), hanya dengan menambahkan empat baris:

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

Perhatikan ohuruf kecil, sehingga tidak akan keluar dari insertmode untuk operasi. Anda juga dapat mengubah huruf besar Odalam jawaban asli untuk efek yang sama.

Maciej Sz
sumber
0

Di MacVim, Anda dapat menggunakan Command 'Left Arrow' dan Command 'Right Arrow' untuk pergi ke awal dan akhir baris saat berada dalam mode edit.

Dominik
sumber
Kedengarannya seperti JtR menggunakan vim di dalam Terminal.app alih-alih menggunakan MacVim (yang saya akan sangat merekomendasikan, dan secara pribadi menggunakan, juga).
Matrix Mole
0

Buka Terminal -> Preferensi -> Profil -> Keyboard dan tambahkan:

Kunci: ↖ Tindakan: \ 033OH

Kunci: ↗ Tindakan: \ 033OF

Alfredo Cardigliano
sumber