SSH อักขระที่อ่านไม่ออกใน vim / nano บนรีโมตเซิร์ฟเวอร์


18

... และมันทำให้ฉันเสียสติ

โดยทั่วไป (สิ่งนี้เกิดขึ้นในช่วงสองสามเดือนที่ผ่านมา) ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์ CentOS ที่แตกต่างกันสองสามตัว (หนึ่ง Linode, VPS อื่นและโฮสต์ที่ใช้ร่วมกันที่ฉันเข้าถึงเชลล์), ทำงาน 5.5, 5.7 และ 6 จากฉัน Mac ที่ใช้ OS X Lion โดยใช้ Terminal

โดยทั่วไป:

$ ssh username@example.com

[remote-host] $ nano somefile.txt

เมื่อฉันเริ่มต้นการแก้ไขไฟล์ถ้าผมใช้ปุ่มลูกศรเพื่อย้ายไปรอบเคอร์เซอร์หรือเริ่มต้นการลบแล้วพิมพ์อีกครั้งเคอร์เซอร์กระโดดไปรอบ ๆ เล็กน้อยและถ้าผมบันทึกไฟล์และเปิดมันก็ชัดเจนว่าเคอร์เซอร์เป็นในความเป็นจริงกระโดดข้ามสถานที่ในบรรทัดโดยไม่มีเหตุผลชัดเจน

ฉันได้รับสิ่งต่าง ๆ เช่น "นี่คือข้อความใหม่" เมื่อฉันพิมพ์ (ไปยังตัวแก้ไขเคอร์เซอร์บ้า) "นี่คือบรรทัดข้อความ"

มันเป็นปัญหาใหญ่เมื่อพูดถึงการแก้ไขไฟล์กำหนดค่าเพราะฉันมักจะต้องแก้ไขหนึ่งบรรทัดบันทึกและปิดจากนั้นเปิดใหม่อีกครั้งเพื่อให้แน่ใจว่าบรรทัดนั้นถูกต้อง ... จากนั้นแก้ไขอีกบรรทัด ... และมันค่อนข้างน่ารำคาญ .

ฉันพบปัญหาในการเรนเดอร์ Linode Lish Shell Vim และนาโน: เส้นที่ไม่ปรากฏ / ตำแหน่งเคอร์เซอร์ผิดแต่ฉันไม่รู้ว่ามันเกี่ยวข้องกันมากแค่ไหนเพราะมันหมายถึงลิช


1
เฮ้ @geerlingguy ฉันโพสต์คำตอบสำหรับคำถามนี้เมื่อหลายปีก่อนเมื่อชื่อของคุณไม่มีความหมายต่อฉัน แต่ตอนนี้ฉันใช้งานของคุณเป็นประจำ ขอบคุณสำหรับผลงานที่เข้าใจได้ทั้งหมดของคุณ!
dbenton

1
@dbenton - ฉันช่วยคุณคุณช่วยฉันเราเป็นชุมชนที่มีความสุข :)
geerlingguy

คำตอบ:


14

[ อัปเดต:ตั้งแต่ Mac OS X Mountain Lion 10.8 เทอร์มินัลรองรับลำดับการหลบหลีก Backtab กำจัดปัญหานี้]

รุ่น (s?) ของ nano บนเซิร์ฟเวอร์เหล่านั้นบางครั้งส่งลำดับ Backtab (ESC [Z) เมื่อเลื่อนเคอร์เซอร์ไปทางซ้ายโดยตัวละครตัวหนึ่ง แต่ Terminal ไม่รองรับลำดับนี้ดังนั้น nano จึงคิดว่าเคอร์เซอร์เคลื่อนที่เมื่อมันไม่มี ' t และแนวคิดเกี่ยวกับตำแหน่งปัจจุบันของเคอร์เซอร์ไม่ซิงก์กับเทอร์มินัล

ด้วยเหตุผลที่ฉันไม่สามารถเข้าใจได้นาโนส่งแบ็คแท็บเมื่อเลื่อนไปทางซ้ายและเคอร์เซอร์เป็นตัวละครหนึ่งทางด้านขวาของแท็บหยุด ในทำนองเดียวกัน IIRC จะส่งแท็บ (Control-I) เมื่อเลื่อนไปทางขวาและเคอร์เซอร์เป็นอักขระหนึ่งตัวทางด้านซ้ายของแท็บหยุด ฉันไม่รู้ว่าทำไมมันถึงหยุดแท็บหยุดแทนที่จะเคลื่อนที่ซ้าย / ขวาโดยใช้ลำดับตัวอักษรเดียวกัน เวอร์ชั่นของนาโนมาพร้อมกับ Mac OS X Lion 10.7 ไม่ได้ทำเช่นนี้

นาโนทำสิ่งนี้ได้เฉพาะเมื่อ terminfo บอกว่าcbtรองรับความสามารถ terminfo เริ่มต้นสำหรับเทอร์มินัลxterm-256colorซึ่งประกาศความสามารถนี้และแมปกับลำดับ Backtab วิธีแก้ปัญหาคือการตั้งค่าTERMตัวแปรสภาพแวดล้อมเป็นสิ่งที่ไม่ได้ประกาศความสามารถนี้ คุณสามารถทำได้บนเครื่องโลคัลก่อนที่จะเรียกใช้sshหรือในไฟล์เชลล์เริ่มทำงานบนรีโมตโฮสต์ การตั้งค่าให้xterm-colorจะทำในหยิกถึงแม้ว่ามันจะไม่แนะนำให้ปิดการใช้งานในขณะที่มันพฤติกรรมที่สำคัญอื่น ๆ (เช่น 256 สี, คริสตศักราชหน้าจอสลับการเก็บรักษาเนื้อหา) (วิธีการแบบหนาเพิ่มเติมคือการกำหนดxterm-256color(หรือxterm) ไฟล์ terminfo ของคุณบนรีโมตโฮสต์เพื่อลบcbt)

แนะนำให้ปรับแต่งรีโมตโฮสต์ (ทางเดียวหรืออีกทางหนึ่ง) ดังนั้นการปรับแต่งจะไม่นำไปใช้กับโลคัลหรือกับรีโมตโฮสต์อื่น แต่วิธีแก้ปัญหาที่ง่ายที่สุดคือเปลี่ยนการตั้งค่าเทอร์มินัลตามความต้องการxterm-colorแทนxterm-256color:

เทอร์มินัล> ค่ากำหนด> การตั้งค่า> [โปรไฟล์]> ขั้นสูง> ประกาศเทอร์มินัลเป็น:

ฉันขอแนะนำให้ทำซ้ำโปรไฟล์การตั้งค่าที่มีอยู่ปรับแต่งและใช้งานได้เฉพาะเมื่อคุณเชื่อมต่อกับโฮสต์ระยะไกลเหล่านั้น


การตั้งค่า xterm-color ใช้งานได้อย่างแน่นอน - คุณช่วยอธิบายวิธีกำหนดไฟล์ terminfo ของฉันเองบนรีโมตโฮสต์ได้หรือไม่? การเชื่อมโยงจะทำ แต่ผมอาจจะกลับไปที่โพสต์นี้มาทุกขณะนี้แล้วจะจำเคล็ดลับนี้ :)
geerlingguy

1
@geerlingguy แก้ไขคำนิยามที่มีอยู่ terminfo ลบcbt=\E[Zรายการใน.tiไฟล์ต้นฉบับ
TachyonVortex

สิ่งนี้ช่วยฉันฉันตั้งค่าตัวเลือกจาก xterm-256color เป็น xterm และตอนนี้ฉันสามารถเลือกคัดลอกและอื่น ๆ ตามที่ฉันเคยทำมาก่อน (ฉันไม่ทราบว่าจะเปลี่ยนแปลงตัวเลือกนี้หรือไม่) ขอบคุณ!
spacebiker

8

ฉันมีปัญหาเดียวกันนี้ ฉันพบกระทู้นี้ซึ่งแนะนำในหมู่โซลูชั่นอื่น ๆ ตัวแปรสภาพแวดล้อมบนเซิร์ฟเวอร์ระยะไกล:

export TERM=xterm-color

การเพิ่มสิ่งนี้ใน ~ / .bash_profile แก้ไขปัญหาให้ฉัน วิธีการแก้ปัญหานี้ง่ายและมีประโยชน์เพียงส่งผลกระทบต่อผู้ใช้เฉพาะในโฮสต์ที่เฉพาะเจาะจง


2

ฉันมีปัญหาเดียวกันในโปรแกรม MobaXTerm สาเหตุของปัญหาคือปุ่ม -K ที่ฉันใช้เพื่อเปิดใช้งาน numpad ในนาโนเมื่อใช้ PuTTY อย่างที่ฉันได้พบใน MobaXTerm -K ไม่จำเป็น (numpad ทำงานโดยค่าเริ่มต้น) และไม่มีปุ่มลูกศรทำงานอย่างถูกต้องและไม่ได้ใส่ขยะแบบสุ่ม


1

OSX 10.7.4 ด้วย Centos ที่ทำงานในฐานะแขกของระบบปฏิบัติการ

ภายในการตั้งค่าเทอร์มินัล OSX การตั้งค่าขั้นสูง

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

ไม่มีปัญหาเพิ่มเติม :)


โปรดทราบว่าการกำหนดค่าตามความชอบ "พฤติกรรมของปุ่มกด VT-100" นั้นไม่เกี่ยวข้องกับคำถามและคำตอบนี้ทั้งหมดและไม่มีผลต่อผลลัพธ์
Chris หน้า

1

สำหรับผู้ใช้ MobaXterm หากคุณไม่ได้ใช้ -K และยังประสบปัญหาอยู่ ตรวจสอบให้แน่ใจว่าบรรทัดต่อไปนี้ถูกใส่เครื่องหมายในไฟล์ / etc / nanorc ของคุณ

# set rebinddelete

# set rebindkeypad


0

ปัญหาที่เป็นไปได้คือใช่ทั้งเครื่องของคุณและเซิร์ฟเวอร์ของคุณอยู่ในระบบยูนิกซ์ที่มีนาโน แต่เวอร์ชันนาโนเหล่านั้นอาจแตกต่างกัน

export TERM=xterm-color

-1

หากสิ่งที่คุณได้รับคือ "นี่คือข้อความใหม่" และสิ่งที่คุณพิมพ์คือ "นี่คือบรรทัดข้อความ" (ฉันต้องเข้าใจว่ารายงานของคุณถูกต้อง) จากนั้นคุณจะมีปุ่ม "ควบคุม" ที่ไม่สม่ำเสมอ ? แอปเปิ้ล?). เนื่องจากนาโนกำลังใช้แป้นควบคุม + เพื่อ "กระโดดไปรอบ ๆ " และคุณมีอักขระน้อยกว่าที่พิมพ์ดังนั้นเราจึงมี) อักขระที่หายไป b) ลำดับการควบคุมที่ปรากฏโดยไม่มีอะไรอนุมานว่า a) กลายเป็น b) เป็นตรรกะ

คุณอาจมีโปรแกรมฮอตคีย์ / แมโคร / whatnot ที่น่าสะพรึงกลัว ฉันสงสัยว่านี่เป็นของ superuser ไม่ใช่ serverfault แต่ฉันจะทำการตั้งค่าสถานะบางทีบางคนอาจมีคำตอบที่เหมือนจริงและถูกผูกมัดด้วย SSH


มันเกิดขึ้นเมื่อฉันใช้ปุ่มลูกศรเพื่อเลื่อนไปมาบนบรรทัดบ่อยครั้งกว่าที่ฉันพิมพ์เพียงอย่างเดียว แต่มันดูค่อนข้างสุ่ม ฉันจะลองใช้คำแนะนำของ Chris อย่างรวดเร็วเพื่อดูว่ามันใช้งานได้หรือไม่ แต่ขอบคุณที่ตอบ!
geerlingguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.