ปัญหาในการใช้ปุ่ม Ctrl + Arrow ใน Vim เมื่อใช้ Byobu กับ tmux


12

ในกลุ่มฉันได้ตั้งปุ่ม Ctrl + ลูกศรเพื่อข้ามคำ มันใช้งานได้ดีเมื่อใช้ Vim ภายใน gnome-terminal

อย่างไรก็ตามเมื่อใช้byobu (tmux) มันจะแสดงพฤติกรรมแปลก ๆ : มันจะลบทุกอย่างหลังจากเคอร์เซอร์

สำหรับการอ้างอิงนี่คือการตั้งค่ากลุ่มของฉัน:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w

คำตอบ:


7

ปัญหาคือสองเท่า ก่อนอื่นtmuxโดยค่าเริ่มต้นจะแปลงปุ่มลูกศรควบคุมจากประเภทหนีลำดับหนึ่งไปเป็นอีกประเภทหนึ่ง คีย์ดังนั้นพิเศษเช่นcontrolleftจะถูกส่งไปโดยไม่ต้องปรับปรุงเช่น,vim leftหากคุณใช้cat -vเพื่อดูลำดับการหลบหนีที่แตกต่างกันคุณอาจเห็นบางสิ่งเช่นนี้

^[OD

กับสิ่งนี้ (นอก tmux):

^[[1;5D

เส้น

set-window-option -g xterm-keys on

แก้ไขด้านนั้น อีกส่วนหนึ่งก็คือว่าโดยค่าเริ่มต้นใช้คำอธิบายขั้วtmux screenคำอธิบายเทอร์มินัลนั้นไม่ได้อธิบายถึงปุ่มลูกศรควบคุม รายการเหล่านี้จากฐานข้อมูลเทอร์มินัลจะเหมาะสมที่สุดสำหรับ VTE (gnome-terminal):

มีคนอื่นเช่น

ซึ่งจะถูกเลือกโดยอัตโนมัติเมื่อใช้งานในscreenกรณีที่สอดคล้องกันTERMนอกมีvte, vte-256colorฯลฯ tmuxไม่ทำเช่นนี้เลือกอัตโนมัติ คุณต้องแก้ไขไฟล์กำหนดค่า

โดยวิธีการที่ไม่มี "screen.xterm" screenรายการเพราะมันจะยุ่งเกี่ยวกับประเพณีของบางส่วน TERM=xterm-newไม่มีความขัดแย้งกับเป็น

หากคุณมีฐานข้อมูลเทอร์มินัลเริ่มต้น (ขั้นต่ำ) เช่นncurses-baseใน Debian คุณอาจไม่มีฐานข้อมูลเหล่านั้น จะพบได้ทั่วไปxterm-256colorซึ่งอยู่ใกล้พอที่จะใช้กับ vim และ tmux

ตัวอย่างเช่นหากฉันเพิ่มสิ่งนี้ลงใน.tmux.confไฟล์ของฉันมันจะทำงานตามที่คุณคาดหวังในกลุ่ม:

set -g default-terminal "xterm-256color"

อ่านเพิ่มเติม:


อืม ... มันใช้งานได้ :) แต่เพียงบางส่วนเท่านั้น เฉพาะControl+ Leftกำลังทำงาน Control+ Rightไม่ใช่ ฉันจะทดสอบและอัปเดตในภายหลัง
shivams

1
คุณอาจมีข้อผูกพันอื่น ๆ รบกวนการควบคุม + ขวา (ให้รายละเอียดฉันอาจให้คำแนะนำ)
Thomas Dickey

ขอบคุณสำหรับข้อเสนอ :) ฉันตรวจสอบเล็กน้อยและพบว่าจริง ๆ แล้วการโยงคีย์บางอย่างทำให้เกิดการรบกวน เช่นบน Mac ของฉันใช้งานได้ดีในขณะที่ใน Linux (ใช้ Guake) ไม่เป็นเช่นนั้น อย่างไรก็ตามฉันออกจากสถานีไม่ถูกต้องและไม่สามารถเข้าถึง Linux ได้ ฉันจะอัปเดตเมื่อฉันแก้ไขปัญหา
shivams

@ Thomam Dickey: ในขณะเดียวกันฉันยอมรับคำตอบของคุณเพราะมันแก้ปัญหาได้จริง
shivams

@ThomasDickey ฉันแค่อยากจะพูดว่า "Go raibh míle maith agat" ซึ่งแปลเป็นภาษาไอริชอย่างแท้จริงว่า "ขอให้คุณมีสิ่งที่ดีนับพัน" ขอบคุณมากสำหรับคำตอบนี้ คุณเป็นดารา
Rob

2

จากที่นี่คุณสามารถยกเลิกการรวมคีย์ใน byobu:

สร้างไฟล์~/.byobu/.tmux.confด้วย (หรือเพิ่มถ้ามีไฟล์อยู่):

set-window-option -g xterm-keys on

จากนั้นเพิ่มสิ่งต่อไปนี้ใน~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right

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