Làm cho cửa sổ hoạt động trong vim rõ ràng hơn


22

Không gian làm việc của tôi thường là một xterm rất lớn với vim, được chia thành sáu hoặc nhiều bộ đệm. Nó sẽ thực sự hữu ích nếu rõ ràng hơn cái nào là bộ đệm hoạt động. Ngay bây giờ tôi đang sử dụng sự hiện diện của số dòng cho việc này:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

nhưng điều này có nghĩa là khi tôi thay đổi bộ đệm, mã của tôi nhảy sang trái hoặc phải, điều này gây khó chịu. Thêm vào đó, tôi muốn có thể xem dòng 94 ngay cả trong bộ đệm không hoạt động . Vậy có cách nào thay đổi màu của số dòng trong bộ đệm hoạt động không?

Câu trả lời:


26

Theo mẫu của bạn, bạn có thể thay đổi các thuộc tính khác nhau, chẳng hạn như màu sắc:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Điều này sẽ tô màu cột 80 trên cửa sổ hiện tại của bạn, trong khi vô hiệu hóa nó trên các cửa sổ khác. Đó là một chút chói tai hơn so với cài đặt / bỏ đặt số dòng.

Một tùy chọn thậm chí ít xâm phạm hơn, nếu bạn đã quen với việc làm nổi bật dòng hiện tại (set Cul), là để làm:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Tất cả tùy thuộc vào cách sử dụng của bạn và những gì bạn sẵn sàng đưa ra.


11

Màu của dòng trạng thái là cách thông thường nhất để biết cửa sổ nào đang hoạt động. Nó được định nghĩa trong màu sắc của bạn với hai dòng sau:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

Đầu tiên là cho cửa sổ hiện tại, thứ hai là cho cửa sổ "không hiện tại".

Đây là một đoạn trích từ xoria256 , bạn nên điều chỉnh màu sắc cho màu sắc của mình.

Nhưng bạn có thể thử một cái gì đó như thế (hãy cẩn thận, màu sắc trong dòng thứ hai là hoàn toàn ngẫu nhiên):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

Tôi đã thử thay đổi tô sáng LineNr trên Win Entry / WinLeave, nhưng có vẻ như màu LineNr là toàn cầu.
DrHyde

Vâng, và tôi đã phải chờ bình luận của bạn để nhớ điều đó. Vì vậy, không, nếu LineNr là toàn cầu thì rõ ràng không có cách nào để thay đổi nó trong một cửa sổ cụ thể. Bạn không nghĩ rằng trạng thái là đủ?
romainl

Tôi tự hỏi liệu có thể có một số phiên bản trên mỗi cửa sổ khác của LineNr không. Và không, tôi không nghĩ dòng trạng thái là đủ. Nó giúp, nhưng tôi muốn nhiều hơn nữa. Một vấn đề khi sử dụng dòng trạng thái là có chỉ báo cửa sổ hoạt động ở dưới cùng của cửa sổ hoàn toàn trái ngược với những gì chúng ta có ở mọi nơi khác - một thanh tiêu đề ở đầu cửa sổ thay đổi màu sắc - vì vậy có một khoảnh khắc tạm dừng để suy nghĩ "oh yeah, vim làm điều này theo cách khác". Trong khi đó, số dòng luôn luôn , trong mọi ứng dụng, ở cùng một nơi.
DrHyde

Tôi thực sự thích nó nếu bạn có thể thay đổi màu nền cửa sổ, nhưng có vẻ như, từ phía trên, điều này là không thể.
Jonathan Hartley

Sử dụng hi StatusLine...hi StatusLineNC...làm việc như một nét duyên dáng!
Lục M


2

Đây là những gì tôi làm:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Các số tương đối chỉ là một trợ giúp để tính toán số lượng lệnh lặp lại, không sử dụng chúng trong cửa sổ mà bạn không chỉnh sửa.



1

Bạn có thể thêm phần này vào ~/.vimrc, điều này sẽ làm cho các thanh trạng thái của cửa sổ không hoạt động có nền màu xám đậm để phân biệt với thanh trạng thái màu trắng của cửa sổ đang hoạt động.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Xem ví dụ ảnh chụp màn hình này. Cửa sổ giữa đang hoạt động (thanh trạng thái màu trắng). Cửa sổ bên trái và bên phải không hoạt động (thanh trạng thái màu xám đậm).

nhập mô tả hình ảnh ở đây

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.