saat menjalankan layar pada OSX, perintah + r mengacaukan tombol panah di vim di semua layar

15

Bagaimana Anda melepaskan ini? karena Anda akhirnya menekan perintah r setiap saat untuk memuat ulang peramban Anda, dan sering kali Anda berada di terminal.

Karena saya belum menemukan cara mengaktifkan kembali tombol panah, saat ini saya membunuh semua layar saya dan me-restart layar, yang merupakan rasa sakit.

Der Hochstapler
sumber

Jawaban:

28

Sebagai pembela Vim kecil yang baik, saya merasa terikat untuk memberitahu Anda untuk belajar menggunakan hjkl sebagai kunci kursor Anda. Setengah jalan menjelajahi masalah, saya pikir itu secara misterius memperbaiki dirinya sendiri, sampai saya menyadari saya sedang menguji menggunakan hjkl bukan tombol panah yang sebenarnya.

Bagaimanapun, sekarang untuk jawaban yang nyata.

Alih-alih mematikan semua layar dan memulai ulang, Anda dapat memanfaatkan kemampuan layar untuk berpindah antar terminal. Tekan CTRL+A CTRL+Duntuk melepaskan layar dari terminal Anda, lalu jalankan screen -D -Runtuk memasang kembali. Ini akan membuat tombol panah Anda berfungsi lagi.

Jika Anda tidak di layar, tetapi hanya di Vim, maka Anda bisa CTRL+Zdan mengetik fguntuk efek yang sama.

Anda juga dapat mengatasi masalah kunci kursor di Vim, tetapi pengaturan ulang mungkin telah mengubah opsi terminal lainnya, jadi lebih aman untuk melakukan seperti yang dijelaskan di atas agar Anda tidak melihat masalah tampilan / keyboard acak lainnya. Jika Anda tetap menginginkan remapping, ini dia:

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

Detail kotor:

Baik Vim dan layar menggunakan pustaka ncurses untuk mengelola terminal. Salah satu hal yang dilakukan ncurses ketika mengambil kendali terminal yang kompatibel dengan VT100 adalah mengalihkan tombol panah ke "mode aplikasi", yang mengubah kode yang dipancarkannya. Tombol panah atas, misalnya, berubah dari Esc [ Amenjadi Esc O A. Kode kontrol VT100 yang dipancarkan untuk melakukan ini adalah Esc [ ? 1 h. Perintah reset terminal yang dikirim oleh Command + R me-reset kunci kursor ke default.

Layar detaching dan reattaching menyebabkan ncurses untuk mengambil kembali kendali terminal, yang menerapkan kembali semua pengaturan yang disukainya, jadi itu mungkin cara yang paling portabel dan andal untuk mengembalikan keadaan menjadi normal.

Kode kontrol VT100: http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm

Jander
sumber
Masalah lain mungkin tipe terminal membingungkan vim, lihat Kunci yang berantakan di vim saat menjalankan di dalam tmux
kynan
terima kasih atas solusi ini! ini telah mengganggu saya sebagai pengembang web. di browser Anda menekan cmd-r banyak untuk menyegarkan layar dan kadang-kadang saya pasti telah memukul cmd-r di vim secara tidak sengaja. Saya tidak tahu mengapa tombol panah saya dihapus sampai sekarang. dan untuk Anda purj hjkl di luar sana, alasan utama saya tidak menggunakan hjkl adalah karena mereka tidak tersedia untuk pergerakan kursor dalam mode insert. selesaikan masalah itu untuk saya dan saya akan pertimbangkan kembali.
rev
6

Anda dapat memperbaikinya dengan cepat dan mudah dengan :!reset

GlyphGryph
sumber
1

Jika Anda menggunakan iTerm, Anda bisa mendapatkan kembali sesi vim Anda dengan menekan command+ddancommand+w

Mengapa?

command+d akan membagi panel terminal, secara ajaib mengembalikan yang Anda berasal.

command+w sekarang akan menutup panel perpecahan yang baru saja Anda buka.

Adam Grant
sumber
1

Saya memetakan Command-r ke "Abaikan" di pemetaan kunci iTerm.

Cuplikan layar dialog preferensi iTerm2

Christian Long
sumber