SSH memutar karakter dalam vim / nano di server jauh

18

... dan itu membuatku gila.

Pada dasarnya (ini telah terjadi selama beberapa bulan terakhir), saya masuk ke beberapa server CentOS yang berbeda (satu Linode, VPS lain, dan host bersama yang saya miliki akses shellnya), menjalankan 5.5, 5.7, dan 6, dari server saya Mac menjalankan OS X Lion, menggunakan Terminal.

Pada dasarnya:

$ ssh [email protected]

[remote-host] $ nano somefile.txt

Setelah saya mulai mengedit file, jika saya menggunakan tombol panah untuk bergerak di sekitar kursor, atau mulai menghapus, kemudian mengetik lagi, kursor melompat sedikit, dan jika saya menyimpan file dan membukanya kembali, jelas bahwa kursor itu , pada kenyataannya, melompati semua tempat pada garis tanpa alasan yang jelas.

Saya akhirnya mendapatkan hal-hal seperti "Ini adalah teks yang tidak ada." Ketika saya mengetik (ke editor kursor-gila) "Ini adalah baris teks."

Ini masalah besar ketika mengedit file konfigurasi, karena saya sering harus mengedit satu baris, simpan dan tutup, lalu buka kembali hanya untuk memastikan bahwa baris itu benar ... kemudian edit baris lain ... dan itu semakin mengganggu .

Saya menemukan Linode Lish Shell Vim dan masalah rendering Nano: garis tidak muncul / posisi kursor salah , tapi saya tidak tahu apakah itu banyak berhubungan, karena itu secara khusus mengacu pada lish.

geerlingguy
sumber
1
Hei @geerlingguy, saya mengirim jawaban untuk pertanyaan ini bertahun-tahun yang lalu ketika nama Anda tidak berarti bagi saya, tapi sekarang saya menggunakan pekerjaan Anda secara teratur. Terima kasih untuk semua kontribusi Anda yang mungkin!
dbenton
1
@dbenton - Saya membantu Anda, Anda membantu saya, kami adalah komunitas yang bahagia :)
geerlingguy

Jawaban:

14

[ Pembaruan: Pada Mac OS X Mountain Lion 10.8, Terminal mendukung urutan pelarian Backtab, menghilangkan masalah ini.]

Versi (s?) Dari nano pada server-server itu kadang-kadang mengirimkan urutan Backtab (ESC [Z) ketika memindahkan kursor yang ditinggalkan oleh satu karakter, tetapi Terminal tidak mendukung urutan ini, jadi nano berpikir bahwa kursor telah bergerak ketika tidak ada t dan idenya tentang posisi kursor saat ini tidak selaras dengan terminal.

Untuk alasan yang tidak dapat saya pahami, nano mengirimkan Backtab ketika bergerak ke kiri dan kursor adalah satu karakter di sebelah kanan sebuah pemberhentian. Demikian pula, IIRC, ia mengirimkan Tab (Control-I) ketika bergerak ke kanan dan kursor adalah satu karakter di sebelah kiri penghentian tab. Saya tidak tahu mengapa ini dilakukan di sekitar tab berhenti daripada selalu bergerak ke kiri / kanan menggunakan urutan karakter yang sama. Versi nano yang dikirimkan dengan Mac OS X Lion 10.7 tidak melakukan ini.

Nano hanya melakukan ini ketika terminfo mengatakan cbtkemampuan didukung. Terminfo default untuk Terminal adalah xterm-256color, yang menyatakan kemampuan ini dan memetakannya ke urutan Backtab. Solusinya adalah mengatur TERMvariabel lingkungan ke sesuatu yang tidak menyatakan kemampuan ini. Anda dapat melakukan ini pada mesin lokal sebelum memohon sshatau dalam file startup shell pada host jarak jauh. Mengaturnya xterm-colorakan dilakukan dalam keadaan darurat, meskipun tidak disarankan, karena menonaktifkan perilaku penting lainnya (misalnya 256 warna, BCE, pelestarian konten layar alternatif). (Pendekatan yang lebih berat adalah untuk menyesuaikan xterm-256color(atau xterm) file terminfo Anda pada remote host untuk dihapus cbt.)

Menyesuaikan host jarak jauh (dengan satu atau lain cara) disarankan, sehingga penyesuaian tidak berlaku secara lokal atau ke host jarak jauh lainnya, tetapi solusi paling sederhana adalah mengubah pengaturan preferensi Terminal untuk digunakan xterm-coloralih-alih xterm-256color:

Terminal> Preferensi> Pengaturan> [profil]> Tingkat Lanjut> Deklarasikan terminal sebagai:

Saya sarankan menduplikasi profil pengaturan yang ada, menyesuaikannya dan hanya menggunakannya ketika Anda terhubung ke host jarak jauh tersebut.

Chris Page
sumber
Pengaturan xterm-color pasti berfungsi - dapatkah Anda menguraikan cara menyesuaikan file terminfo saya pada host jarak jauh? Tautan akan berhasil, tetapi saya mungkin akan kembali ke pos ini setiap saat untuk mengingat tip ini :)
geerlingguy
1
@geerlingguy Memodifikasi definisi terminfo yang ada . Hapus cbt=\E[Zentri dalam .tifile sumber.
TachyonVortex
Ini membantu saya, saya mengatur opsi dari xterm-256color ke xterm dan sekarang saya dapat memilih, menyalin, dll. Seperti yang biasa saya lakukan sebelumnya. (Saya tidak tahu bagaimana atau siapa yang mengubah opsi ini). Terima kasih!
spacebiker
8

Saya mengalami masalah yang sama. Saya menemukan utas ini yang merekomendasikan, di antara solusi lain, variabel lingkungan di server jauh:

export TERM=xterm-color

Menambahkan ini ke ~ / .bash_profile memecahkan masalah untuk saya. Solusi ini sederhana dan hanya bermanfaat memengaruhi pengguna tertentu pada host tertentu.

dbenton
sumber
2

Saya memiliki masalah yang sama dalam program MobaXTerm. Penyebab masalahnya adalah -K kunci yang saya gunakan untuk mengaktifkan numpad di Nano saat menggunakan Putty. Seperti yang saya temukan di MobaXTerm -K tidak diperlukan (numpad bekerja secara default) dan tanpa itu tombol panah berfungsi dengan benar dan tidak memasukkan sampah secara acak.

Tooluka
sumber
1

OSX 10.7.4 dengan Centos berjalan sebagai OS tamu

Dalam preferensi terminal OSX, pengaturan, lanjutan

Declare terminal as:xterm-color
Strict VT-100 keypad behaviour - TICKED!

Tidak ada lagi masalah :)

Jarrod
sumber
Perhatikan bahwa preferensi "perilaku tombol VT-100" sama sekali tidak terkait dengan T&J ini dan tidak berpengaruh pada hasilnya.
Chris Page
1

Untuk pengguna MobaXterm. Jika Anda tidak menggunakan -K dan masih mengalami masalah. Pastikan baris berikut dikomentari di file / etc / nanorc Anda.

# set rebinddelete

# atur rebindkeypad

teks bersih
sumber
0

Masalah yang mungkin terjadi adalah, ya, mesin lokal Anda dan server Anda ADALAH pada sistem unix yang memiliki nano, tetapi versi nano itu mungkin berbeda.

export TERM=xterm-color
boulder_ruby
sumber
-1

Jika yang Anda dapatkan adalah "Ini adalah teks yang tidak jelas" dan apa yang Anda ketikkan adalah "Ini adalah baris teks" (Saya harus menganggap laporan Anda benar) maka Anda memiliki kunci "kontrol" yang rapuh apa pun yang ada di Mac (perintah ? apel?). Karena nano menggunakan tombol kontrol + untuk "melompat-lompat" dan Anda memiliki lebih sedikit karakter daripada yang diketik, maka kami memiliki a) karakter yang hilang b) urutan kontrol yang muncul dari tidak ada yang menyimpulkan bahwa a) menjadi b) adalah logis.

Anda mungkin juga memiliki beberapa program hotkey / makro / yang menjengkelkan. Saya curiga ini milik superuser dan bukan serverfault tapi saya akan menahannya mungkin seseorang memiliki jawaban realistis dan terikat SSH.

chx
sumber
Itu terjadi ketika saya menggunakan tombol panah untuk bergerak bolak-balik pada garis, lebih sering daripada saat saya mengetik. Tapi sepertinya memang acak. Saya akan mencoba saran Chris dengan cepat untuk melihat apakah itu berhasil, tetapi terima kasih telah menjawab!
geerlingguy