Làm cách nào tôi có thể làm cho Cột Đăng ký hiển thị mọi lúc ngay cả khi không có Dấu hiệu nào được thêm vào?


32

Tôi vừa thêm plugin Git Gutter cho Vim, hiển thị các dòng được thêm / sửa đổi / xóa theo git diff. Nó sử dụng Sign Columnđể hiển thị các ký tự bên cạnh mỗi dòng.

Tại thời điểm cột xuất hiện trên lưu, đó là khá chói tai. Tôi muốn cột luôn hiển thị, ngay cả khi trống.

Làm thế nào tôi có thể làm cho Cột Đăng luôn hiển thị?

Câu trả lời:


40

Bắt đầu với Vim 7.4.2201, bạn có thể làm:

:set signcolumn=yes

Cp. :help 'signcolumn'. Đối với các phiên bản Vim cũ hơn, bạn phải xác định một dấu giả và đặt nó vào bộ đệm hiện tại:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')

14
Để làm cho nó hoạt động trong mọi bộ đệm mới mà bạn mở, hãy đặt cả hai autocmd BufEnter * sign define dummyautocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')trong vimrc của bạn.
abest

Có vẻ như đã lỗi thời khi set signcolumn=yeslừa mà không có shenanigans.
cprn

1
@cprn: Bạn nói đúng; Tôi đã thêm nó vào câu trả lời của tôi. Cảm ơn!
Ingo Karkat

Cảm ơn bạn là tốt, loại bỏ câu trả lời của tôi từ phía dưới. Chúc mừng!
cprn

22

Đối với vim-gitgutter cụ thể, bạn cũng có thể đặt biến sau trong ~/.vimrc:

let g:gitgutter_sign_column_always = 1

CẬP NHẬT

Bây giờ, plugin sẽ đưa ra cảnh báo để xóa dòng trên và thay vào đó sử dụng:

set signcolumn="yes"

Cảm ơn, tùy chọn đó phải được thêm vào sau khi câu hỏi này được đăng. Hữu ích để biết mặc dù.
jordelver

1
Thật vậy, có vẻ như cam kết đã thêm nó được thực hiện vào ngày 14 tháng 3 năm 2013 - chính xác là hai tuần sau câu hỏi của bạn!
wjv

Trong khi làm việc với một thứ khác, gần đây tôi đã chọc vào bên trong nguồn GitGutter và tôi nhận thấy rằng việc đặt biến này buộc hiển thị cột dấu hiệu giống hệt như câu trả lời được chấp nhận cho câu hỏi này - bằng cách đặt dấu giả.
wjv

5
btw, đối với tôi nó set signcolumn=yes không có dấu ngoặc kép
tam5

6

Trong khi điệu nhảy nhỏ xác định một dấu hiệu và đặt nó hoạt động tốt, một sự thay thế thanh lịch hơn phù hợp với tôi là:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

Và nếu có một số kiểu tệp nhất định không có cột:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no

Lỗi được phát hiện trong khi xử lý các lệnh BufReadPost Auto cho "*": E518: Tùy chọn không xác định: signcolumn = yes
brandones

Bạn cần một phiên bản mới hơn của vim, @brandonjones. Tôi không chắc chắn khi signcolumnđược thêm vào, nhưng nó không có trong 7.2 và nó ở đó trong 8.0. Tôi không nhớ đã nhìn thấy nó trong 7.4, nhưng nó có thể ở đó. Nó có mặt trong các phiên bản hiện tại của cả Vim và Neovim.
Jim Stewart
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.