Dải phân cách trong vim có thể nhỏ hơn một cột đầy đủ không?


21

Tôi sử dụng trình quản lý cửa sổ ốp lát (tuyệt vời) + bộ ghép kênh đầu cuối (tmux) + chia nhỏ bên trong vim. Tôi hoàn toàn không có trang trí cửa sổ, vì vậy bạn hoàn toàn không có sự phân chia trực quan giữa chúng nếu nội dung của chương trình không cho đi. Tôi khá thoải mái với mô hình này vì dù sao tôi cũng sử dụng nhiều màn hình và nhóm tác vụ theo màn hình. Nếu hai cửa sổ không có lý do để ở cạnh nhau, họ sẽ không ở đó ngay từ đầu.

Tuy nhiên, điều này tạo ra một chút bất hòa về thị giác trong đó sự phân chia rõ ràng nhất về mặt trực quan là ít có ý nghĩa nhất về mặt ngữ nghĩa.

  • Cửa sổ Xorg Ý | cửa sổ = không có gì cả
  • Cửa sổ Tmux | | Cửa sổ = đường phân chia 1px
  • Chia nhỏ Vim | chia tách = cột màu rộng 1 ký tự

Đây là một mẫu hiển thị mỗi cửa sổ cạnh nhau, panes và chia tách vim:

cửa sổ panes và chia

Ngay cả khi không nhấp qua phiên bản độ phân giải đầy đủ, dòng chia màu trắng mà bạn thấy là sự phân chia ít quan trọng nhất trên màn hình, vim pan. (Lưu ý cột màu xám ở bên phải của phiên vim thực sự là điểm nổi bật của cột thứ 80, không phải là dải phân cách của bất kỳ loại nào mặc dù tôi thường làm việc ở kích thước đó.)

Tôi nhận thức được cách thay đổi ký tự được vẽ trong phần tách hoặc giảm độ tương phản của bảng màu. Những gì tôi muốn làm là sử dụng cùng một thanh chia như tmux không chiếm bất kỳ chiều rộng nào vì nó được vẽ ở giữa các cột thay vì trong một cột. Điều này có thể với thiết bị đầu cuối dựa trên vim? Gvim? Neovim? Baring làm một phân cách trực quan không phô trương, cột chia có thể được tắt hoàn toàn?

PS Lý do sử dụng một dấu tách tương tự trực quan có ý nghĩa là vì tôi sử dụng cùng các ràng buộc khóa để điều hướng giữa các bảng tmux và các phần tách vim. Các phím giống nhau điều hướng liền mạch giữa chúng, nó sẽ chỉ có ý nghĩa nếu ranh giới trực quan là giống nhau.

Câu trả lời:


32

Bạn đã sai về tmux. Giống như mọi chương trình dựa trên thiết bị đầu cuối - bao gồm cả Vim - nó chỉ vẽ các thứ bên trong các ô. Điều này có nghĩa là cả Vim và tmux đều sử dụng cùng một phương pháp để vẽ các đường viền dọc: họ chỉ sử dụng một ký tự giống như ống.

Tmux sử dụng ( U+2502) theo mặc định trong khi Vim sử dụng |( U+007C).

Nếu bạn muốn cùng một dấu phân cách trong Vim, bạn chỉ cần sử dụng cùng một ký tự:

set fillchars+=vert:│

Lưu ý rằng màu sắc của bạn có thể đặt màu nền của phân chia dọc. Nếu đó là trường hợp, bạn có thể loại bỏ màu nền trực tiếp trong bảng màu của bạn:

hi VertSplit ctermbg=NONE guibg=NONE

Tôi đánh bại bạn để kết luận này khoảng một phút, nhưng dù sao cũng cảm ơn. Tôi không chắc tại sao tôi lại giả định khác. Tôi đoán rằng tôi đã có ấn tượng rằng nó đang thực hiện một số loại ký tự Unicode kết hợp phép thuật để che lấp dải phân cách ở rìa không gian của nhân vật, nhưng tôi nhận ra rằng bây giờ tôi nghĩ về nó một cách vô lý như thế nào.
Caleb

1
Hóa ra những gì tôi cần trong trường hợp của tôi là hi VertSplit cterm=NONEvì nó reverselà mặc định.
Lloeki

Bạn có biết làm thế nào để thay đổi các dấu tách tmux từ 'say' thành, nói, '/' không? @romainl
klaus

@EnanAjmain IIRC Tôi tìm thấy trình phân tách tmux trong mã nguồn của nó. Tôi không nghĩ có một lựa chọn cho điều đó nhưng tôi không phải là chuyên gia về tmux nên bạn nên kiểm tra hướng dẫn.
romainl

@romainl Tôi nghĩ bạn đúng. Bất cứ điều gì quan trọng tôi có thể thay đổi tmux, tôi đã phải hack mã nguồn.
klaus

5

Ngay cả trong ảnh chụp màn hình của riêng tôi, tmux không sử dụng bất kỳ phép thuật nào, phần tách vẫn là một cột rộng một ký tự. Hiệu ứng hình ảnh ít gây khó chịu là việc sử dụng ký tự vẽ hộp Unicode ít lộn xộn hơn mặc định ASCII của vim và thiếu màu nền nổi bật.

Rất gần giống với hiệu ứng có thể có trong vim bằng cách thêm một cái gì đó giống như các dòng sau vào tệp 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

Việc sử dụng autocmdđảm bảo rằng phần nổi bật trên xe vẫn có hiệu lực nếu bạn chuyển đổi bảng màu. Bạn có thể hoặc không muốn hành vi này vì một số bảng màu có các giá trị hợp lý cho nhóm màu này.

Cũng lưu ý rằng cterm=NONEcần thiết để vượt quá một số lược đồ màu đặt giá trị này thành reverse, ergo lộn xộn với bất kỳ giá trị fg / bg nào bạn cố gắng sử dụng.


4

Không, điều này không thể được thực hiện trong Vim và có lẽ sẽ rất khó thực hiện trong GVIM.

Vim dính vào địa chỉ dựa trên tế bào được sử dụng trong thiết bị đầu cuối; trong một bộ đệm, điều này rất quan trọng để điều hướng dọc phù hợp với j/ k. Việc xử lý địa chỉ theo tọa độ x và y dựa trên tế bào này đã ăn sâu vào quá trình thực hiện của Vim, tôi đoán rằng rất khó để vượt qua.

Cũng lưu ý :help design-not:

  • Vim không phải là một trình soạn thảo GUI ưa thích, cố gắng trông đẹp mắt với chi phí ít nhất quán hơn trên tất cả các nền tảng.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.