ตัวแยกแบ่งเป็นกลุ่มจะน้อยกว่าความกว้างคอลัมน์เต็มได้ไหม


21

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

อย่างไรก็ตามสิ่งนี้ทำให้เกิดความไม่ลงรอยกันทางสายตาเล็กน้อยซึ่งความแตกต่างที่เห็นได้ชัดเจนที่สุดคือความหมายที่น้อยที่สุด

  • หน้าต่าง Xorg ‹|› window = ไม่มีอะไรเลย
  • บานหน้าต่าง Tmux ‹|› pane = 1px divider line
  • Vim split ‹|› split = 1 คอลัมน์สีกว้างอักขระ

นี่คือตัวอย่างที่แสดงหน้าต่างด้านข้างหน้าต่างบานหน้าต่างและแผงแยก:

บานหน้าต่างและการแยก

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

ฉันรู้วิธีเปลี่ยนอักขระที่วาดในการแยกหรือลดความคมชัดของสี สิ่งที่ฉันต้องการจะทำคือใช้แถบแยกเดียวกับ tmux ที่ไม่ใช้ความกว้างใด ๆ เพราะมันถูกวาดในระหว่างคอลัมน์มากกว่าหนึ่ง เป็นไปได้ด้วย vim ตาม terminal? gvim? Neovim? กำลังทำการถอดตัวคั่นที่ไม่สร้างความรำคาญสายตาคอลัมน์ตัวแบ่งสามารถปิดได้ทั้งหมดหรือไม่

ป.ล. เหตุผลที่ใช้ตัวคั่นที่คล้ายกันนี้ทำให้รู้สึกได้เพราะฉันใช้การโยงคีย์เดียวกันเพื่อนำทางระหว่าง tmux panes และ vim splits ปุ่มเดียวกันนำทางระหว่างพวกเขาอย่างราบรื่นก็จะทำให้รู้สึกถ้าขอบเขตของภาพที่เหมือนกันเช่นกัน

คำตอบ:


32

คุณคิดผิดเกี่ยวกับ tmux เช่นเดียวกับโปรแกรมที่ใช้เทอร์มินัล - รวมถึง Vim - มันดึงเฉพาะสิ่งภายในเซลล์ ซึ่งหมายความว่าทั้ง Vim และ tmux ใช้วิธีเดียวกันในการวาดเส้นขอบแนวตั้ง: พวกเขาเพียงแค่ใช้อักขระที่มีลักษณะเหมือนท่อ

Tmux ใช้( U+2502) โดยค่าเริ่มต้นในขณะที่ Vim ใช้|( U+007C)

หากคุณต้องการตัวคั่นเดียวกันใน Vim คุณสามารถใช้อักขระเดียวกันได้:

set fillchars+=vert:│

โปรดทราบว่า colorscheme ของคุณอาจตั้งค่าสีพื้นหลังของการแบ่งตามแนวตั้ง หากเป็นกรณีนี้คุณสามารถลบสีพื้นหลังออกได้โดยตรงใน colorcheme ของคุณ:

hi VertSplit ctermbg=NONE guibg=NONE

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

1
ปรากฎสิ่งที่ฉันต้องการในกรณีของฉันhi VertSplit cterm=NONEเพราะมันreverseเป็นค่าเริ่มต้น
Lloeki

คุณมีโอกาสทราบวิธีเปลี่ยน tmux separators จาก '│' เป็นพูด '/' ได้อย่างไร @romainl
klaus

@EnanAjmain IIRC ฉันพบตัวแยก tmux ในซอร์สโค้ด ฉันไม่คิดว่ามีตัวเลือกสำหรับสิ่งนั้น แต่ฉันอยู่ไกลจากผู้เชี่ยวชาญ tmux ดังนั้นคุณควรตรวจสอบคู่มือ
romainl

@ ฉีดฉันคิดว่าคุณพูดถูก สิ่งสำคัญฉันสามารถเปลี่ยน tmux ฉันต้องแฮ็ครหัสที่มา
klaus

5

แม้ใน screen-shot ของฉันเอง tmux ไม่ได้ใช้เวทย์มนตร์ใด ๆ การแยกยังคงเป็นคอลัมน์กว้างตัวเดียว เอฟเฟกต์ภาพที่น่าสะพรึงกลัวน้อยคือการใช้ตัวอักขระการวาดกล่อง Unicode ที่มีลักษณะเป็น clunky น้อยกว่าค่าเริ่มต้น ASCII ของ vim และการไม่มีสีพื้นหลังไฮไลต์

เอฟเฟกต์แบบเดียวกันเกือบเป็นไปได้ในกลุ่มโดยการเพิ่มบางอย่างเช่นบรรทัดต่อไปนี้ในไฟล์ rc

" Set split separator to Unicode box drawing character
set encoding=utf8
set fillchars=vert:│

" Override color scheme to make split the same color as tmux's default
autocmd ColorScheme * highlight VertSplit cterm=NONE ctermfg=Green ctermbg=NONE

การใช้งานของautocmdการรับประกันว่าไฮไลท์ over-ride ยังคงมีผลอยู่หากคุณเปลี่ยนโครงร่างสี คุณอาจต้องการหรือไม่ต้องการพฤติกรรมนี้เนื่องจากโทนสีบางอย่างมีค่าที่เหมาะสมสำหรับกลุ่มสีนี้

นอกจากนี้โปรดทราบว่าcterm=NONEมีความจำเป็นที่จะต้องใช้โทนสีที่เกินค่าซึ่งตั้งค่านี้ไว้reverseโดยเฉพาะดังนั้นจึงยุ่งกับค่า fg / bg ที่คุณพยายามใช้


4

ไม่สิ่งนี้ไม่สามารถทำได้ใน Vim และอาจเป็นเรื่องยากมากที่จะนำไปใช้ใน GVIM

Vim เกาะติดกับการระบุที่อยู่ของเซลล์ที่ใช้ในเครื่อง ภายในบัฟเฟอร์นี้เป็นสิ่งสำคัญสำหรับการนำทางแนวตั้งสอดคล้องกับ/j kการระบุที่อยู่นี้โดยพิกัด x และ y ตามเซลล์นั้นฝังแน่นในการนำไปปฏิบัติของ Vim ฉันคิดว่ามันยากที่จะเอาชนะ

ทราบด้วย:help design-not:

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