Bagaimana cara menunjukkan kolom saat ini di bilah status di vim?

188

Saya ingin menunjukkan kolom saat ini di bilah status, seperti yang umum di banyak editor teks lainnya. Misalnya ada baiknya mengetahui apakah Anda berada di sekitar kolom 80 atau lebih.

Bagaimana cara menampilkan kolom saat ini di bilah status?

Jonas
sumber
Jika Anda ingin menampilkan kolom kursor saat ini, ketik: echo col ('.').
SibiCoder

Jawaban:

219

Coba jika mengatur opsi 'penggaris' adalah apa yang Anda cari. Di komputer saya di kanan bawah menunjukkan garis dan kolom di mana saya memiliki kursor.

:set ruler

EDIT KE KOMENTAR :

Dari bantuan vim (perintah :help ruler):

Jika jumlah karakter yang ditampilkan berbeda dari jumlah byte dalam teks (misalnya, untuk TAB atau karakter multi-byte), kolom teks (nomor byte) dan kolom layar ditampilkan, dipisahkan dengan tanda hubung.

Anda dapat mencoba mengubahnya dengan rulerformatopsi, seperti:set rulerformat=%l,%v

Birei
sumber
Ya, agak. Tapi itu menunjukkan nilai yang aneh misalnya 23,62-6823 tampaknya menjadi garis. Bagaimana saya menafsirkan 62-68kolom?
Jonas
7
62 sedang menghitung tab sebagai satu karakter, 68 menghitung tab yang diperluas
RedGrittyBrick
1
Dari perintah ': help ruler': "Jika jumlah karakter yang ditampilkan berbeda dari jumlah byte dalam teks (mis., Untuk TAB atau karakter multi-byte), baik kolom teks (nomor byte) dan layar kolom ditampilkan, dipisahkan dengan tanda hubung. " Anda dapat mencoba mengubahnya dengan opsi 'rulerformat', seperti ': set rulerformat =% l,% v'
Birei
rulertidak bekerja dengan windows terpisah di Vim.
Mihai
@Jonas Tidak hanya tab, seperti yang dikatakan RedGrittyBrick, tetapi juga karakter versus byte. Ini sangat jelas dalam file UTF-8 di mana mesin terbang karakter tunggal memiliki titik kode multi-byte. Misalnya, Latin eñe (n dengan tilde di atasnya, diucapkan EN-ya) adalah mesin terbang karakter tunggal tetapi membutuhkan dua byte untuk mewakili titik kode (\ xC3B1), dan sepertiga (1/3) adalah mesin terbang karakter tunggal dengan titik kode tiga byte (\ xE28593).
Luv2code
27

Lihat :help statuslinebanyak opsi yang tersedia.

Saya memiliki ini di ~/.vimrcantara beberapa arahan saya:

set statusline+=col:\ %c,

output yang mana

col: 64

di status saya.

Saya tidak punya set ruler.

romainl
sumber
1
Ini tidak berhasil untuk saya. Saya mungkin perlu beberapa pengaturan lagi.
Jonas
3
Jonas, Anda mungkin harus menggunakan set laststatus=2di Anda .vimrcuntuk selalu menampilkan baris status. (0 -> tidak pernah menampilkan baris status, 1 -> hanya jika setidaknya ada dua jendela, 2 -> selalu menampilkan baris status).
pabuisson
Saya menggunakan yang berikut ini untuk memberikan ruang sebelum ini dan hal-hal sebelumnya pada baris status: set statusline + = \ col: \% c,
David Baucum
18

Cara lain untuk melakukan ini adalah dengan melakukan 'g Ctrl-G', yang mencetak posisi kursor saat ini dalam lima cara: Kolom, Baris, Kata, Karakter dan Byte. (dari http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G )

Peter
sumber
Solusi ini memiliki sesuatu yang rapi, yang membedakan Column dan VisibleColumn. Karakter yang tidak dapat dicetak ditampilkan 2 kolom, tetapi harus dihitung sebagai satu. Jika karakter non dicetak output terlihat seperti ini: RealColumn-VisibleColumn, Line, Word, Character and Byte.
mxlian
17

Atau, biarkan 'penggaris' tidak disetel, kenaikan kinerja, dan tekan CTRL-G saat Anda ingin melihat kolom saat ini.

ma11hew28
sumber
3
Memukul Ctrl-Anything tidak terdengar seperti peningkatan kinerja. Kami sedang mengetik karakter. Tidak ada manusia yang memiliki jari dan mata yang terbang cukup cepat untuk melihat perbedaan kinerja semacam ini.
macetw
10

Saya akan didepresiasi menggunakan set penggaris karena saya percaya itu tidak kompatibel dengan opsi statusline, misalnya jika Anda mengatur statusline untuk menampilkan file penuh dalam kombinasi dengan set penggaris

set statusline+=%F

set ruler

Maka TIDAK menampilkan nomor kolom tetapi hanya file penuh di bilah status. Namun jika Anda memasukkan yang berikut ini di .vimrc Anda

set statusline+=%F\ %l\:%c

Ini akan menampilkan semuanya dengan benar, yaitu

[Nama file / nama file] [linenumber]: [nomor kolom]

Giovanni Macciocu
sumber
2

Untuk orang lain yang mencari jawaban ini dan tidak terbiasa bekerja dengan VIm, secara pribadi jawaban paling sederhana yang saya temukan adalah menambahkan baris ini ke akhir file .vimrc Anda di direktori home Anda:

set ruler

Jay
sumber