Bagaimana saya bisa membuat Kolom Tanda muncul sepanjang waktu meskipun tidak ada Tanda yang ditambahkan?

32

Saya baru saja menambahkan plugin Git Talang untuk Vim yang menunjukkan baris ditambahkan / dimodifikasi / dihapus menurut git diff. Ini menggunakan Sign Columnuntuk menampilkan karakter di sebelah setiap baris.

Saat ini kolom muncul di save, yang cukup menggelegar. Saya lebih suka kolom selalu ditampilkan, meskipun kosong.

Bagaimana saya bisa membuat Tanda Kolom selalu terlihat?

jordelver
sumber

Jawaban:

40

Dimulai dengan Vim 7.4.2201, Anda dapat melakukan:

:set signcolumn=yes

Cp. :help 'signcolumn'. Untuk versi Vim yang lebih lama, Anda harus mendefinisikan tanda dummy dan menempatkannya ke buffer saat ini:

:sign define dummy
:execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')
Ingo Karkat
sumber
14
Untuk membuatnya bekerja di setiap buffer baru yang Anda buka, masukkan keduanya autocmd BufEnter * sign define dummydan autocmd BufEnter * execute 'sign place 9999 line=1 name=dummy buffer=' . bufnr('')di vimrc Anda.
akent
Tampaknya ketinggalan zaman seperti set signcolumn=yeshalnya trik tanpa shenanigans.
cprn
1
@ cprn: Anda benar; Saya telah menambahkan itu ke jawaban saya. Terima kasih!
Ingo Karkat
Terima kasih juga, menghapus jawaban saya dari bawah. Tepuk tangan!
cprn
22

Khusus untuk vim-gitgutter, Anda juga dapat mengatur variabel berikut di ~/.vimrc:

let g:gitgutter_sign_column_always = 1

MEMPERBARUI

Plugin sekarang akan mengeluarkan peringatan untuk menghapus baris di atas dan sebagai gantinya menggunakan:

set signcolumn="yes"
wjv
sumber
Terima kasih, opsi itu harus ditambahkan setelah pertanyaan ini diposting. Berguna untuk tahu.
jordelver
1
Memang, tampaknya komitmen yang menambahkannya dibuat pada 14 Maret 2013 - tepat dua minggu setelah pertanyaan Anda!
wjv
Saat mengerjakan sesuatu yang lain baru-baru ini saya mencari-cari di dalam sumber GitGutter, dan saya perhatikan bahwa pengaturan variabel ini memaksa tampilan kolom tanda dengan cara yang persis sama dengan jawaban yang diterima untuk pertanyaan ini - dengan mengatur tanda dummy.
wjv
5
btw, bagi saya itu set signcolumn=yes tanpa tanda kutip
tam5
6

Sementara tarian kecil yang mendefinisikan tanda dan menempatkannya berfungsi dengan baik, alternatif yang lebih elegan yang bekerja dengan baik bagi saya adalah:

autocmd BufRead,BufNewFile * setlocal signcolumn=yes

Dan jika ada tipe file tertentu yang tidak seharusnya memiliki kolom:

autocmd FileType tagbar,nerdtree setlocal signcolumn=no
innaM
sumber
Kesalahan terdeteksi saat memproses perintah BufReadPost Auto untuk "*": E518: Opsi tidak dikenal: signcolumn = yes
brandones
Anda memerlukan versi vim yang lebih baru, @brandonjones. Saya tidak yakin kapan signcolumnditambahkan, tetapi tidak ada di 7.2 dan ada di 8.0. Saya tidak ingat melihatnya di 7.4, tetapi mungkin ada di sana. Ini hadir dalam versi Vim dan Neovim saat ini.
Jim Stewart