Làm cách nào để hiển thị cột hiện tại trong thanh trạng thái trong vim?


188

Tôi muốn hiển thị cột hiện tại trong thanh trạng thái, như là phổ biến trong nhiều trình soạn thảo văn bản khác. Ví dụ, thật tốt khi biết bạn ở khoảng cột 80 trở lên.

Làm thế nào để hiển thị cột hiện tại trong thanh trạng thái?


Nếu bạn muốn hiển thị cột hiện tại của con trỏ, hãy nhập: echo col ('.').
SibiCoder

Câu trả lời:


219

Hãy thử nếu cài đặt tùy chọn 'thước' là những gì bạn đang tìm kiếm. Trên máy tính của tôi ở dưới cùng bên phải hiển thị dòng và cột nơi tôi có con trỏ.

:set ruler

CHỈNH SỬA Ý KIẾN :

Từ sự giúp đỡ của vim (lệnh :help ruler):

Nếu số lượng ký tự được hiển thị khác với số byte trong văn bản (ví dụ: đối với TAB hoặc ký tự nhiều byte), cả cột văn bản (số byte) và cột màn hình được hiển thị, được phân tách bằng dấu gạch ngang.

Bạn có thể thử thay đổi nó với rulerformattùy chọn, như:set rulerformat=%l,%v


Đúng loại của. Nhưng điều đó đang cho thấy một giá trị kỳ lạ, ví dụ như 23,62-6823 dường như là dòng. Làm thế nào tôi nên giải thích 62-68cho cột?
Jonas

7
62 đang đếm các tab dưới dạng một ký tự, 68 đang đếm các tab được mở rộng
RedGrittyBrick

1
Từ lệnh ': thước đo trợ giúp': "Nếu số lượng ký tự được hiển thị khác với số byte trong văn bản (ví dụ: đối với TAB hoặc ký tự nhiều byte), cả cột văn bản (số byte) và màn hình cột được hiển thị, phân tách bằng dấu gạch ngang. " Bạn có thể thử thay đổi nó với tùy chọn 'rulerformat', như ': set rulerformat =% l,% v'
Birei

rulerkhông hoạt động với các cửa sổ phân chia trong Vim.
Mihai

@Jonas Không chỉ các tab, như RedGrittyBrick đã nói, mà cả các ký tự so với byte. Điều này rất rõ ràng trong các tệp UTF-8 trong đó glyph một ký tự có điểm mã nhiều byte. Ví dụ: tiếng Latinh (n với dấu ngã trên nó, phát âm là EN-yea) là một glyph ký tự đơn nhưng lấy hai byte để biểu thị điểm mã (\ xC3B1) và một phần ba (1/3) là glyph ký tự đơn với điểm mã ba byte (\ xE28593).
Luv2code

27

Xem :help statuslinecho nhiều tùy chọn có sẵn.

Tôi có điều này ở ~/.vimrcgiữa một loạt các chỉ thị khác:

set statusline+=col:\ %c,

đầu ra nào

col: 64

trong trạng thái của tôi.

Tôi không có set ruler.


1
Điều này không làm việc cho tôi. Tôi có lẽ cần thêm một số cài đặt.
Jonas

3
Jonas, Bạn có thể phải sử dụng set laststatus=2trong của bạn .vimrcđể luôn hiển thị dòng trạng thái. (0 -> không bao giờ hiển thị dòng trạng thái, 1 -> chỉ khi có ít nhất hai cửa sổ, 2 -> luôn hiển thị dòng trạng thái).
pabuisson

Tôi đã sử dụng cách sau để cung cấp không gian trước cái này và những thứ trước đó trên dòng trạng thái: đặt trạng thái + = \ col: \% c,
David Baucum

18

Một cách khác để làm điều này là thực hiện 'g Ctrl-G', in vị trí hiện tại của con trỏ theo năm cách: Cột, Dòng, Từ, Ký tự và Byte. (từ http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G )


Giải pháp này có một cái gì đó gọn gàng, khác biệt giữa Cột và VisibleColumn. Các ký tự không in được hiển thị 2 cột, nhưng nên được tính là một. Nếu các ký tự không in được, đầu ra trông như thế này : RealColumn-VisibleColumn, Line, Word, Character and Byte.
mxlian

17

Hoặc, bỏ đặt 'thước kẻ', tăng hiệu suất và nhấn CTRL-G khi bạn muốn xem cột hiện tại.


3
Nhấn Ctrl-Bất cứ điều gì không có vẻ như đạt được hiệu suất. Chúng ta đang gõ các ký tự. Không có con người có ngón tay và mắt bay đủ nhanh để thấy loại khác biệt hiệu suất này.
macetw

10

Tôi sẽ khấu hao bằng cách sử dụng bộ thước vì tôi tin rằng nó không tương thích với các tùy chọn dòng trạng thái, ví dụ: nếu bạn đặt dòng trạng thái để hiển thị toàn bộ filepath kết hợp với bộ thước

set statusline+=%F

set ruler

Sau đó, nó KHÔNG hiển thị số cột mà chỉ hiển thị đầy đủ filepath trong thanh trạng thái. Tuy nhiên nếu bạn đặt như sau trong .vimrc của bạn

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

Nó sẽ hiển thị mọi thứ chính xác, cụ thể là

[Filepath / tên tệp] [vải lanh]: [số cột]


2

Đối với những người khác đang tìm kiếm câu trả lời này và không quen làm việc với VIm, cá nhân câu trả lời đơn giản nhất tôi đã tìm thấy là thêm dòng này vào cuối tệp .vimrc của bạn trong thư mục chính của bạn:

set ruler

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.