2013-02-21 34 views
32

Có ánh xạ khóa nào xuất ra số hàng hiện tại của dòng đang được chỉnh sửa không? Hoặc, thậm chí tốt hơn, chúng ta có thể làm công thức dựa trên đầu ra của ánh xạ khóa không?Lấy số hàng hiện tại?

Tôi muốn nhận số hàng và thêm 1 vào văn bản hiện tại đang được chỉnh sửa.

+0

phương tiện đầu ra "văn bản của tài liệu của tôi " – pacv

+1

Bạn đang cố gắng để hiển thị một kết quả, hoặc bạn đang cố gắng để viết kết quả đó vào bộ đệm? –

+3

Bạn đã thử: đặt nu – Khuram

Trả lời

4

Câu trả lời được đưa ra bởi @ZyX trong một chú thích cho câu trả lời khác:

Bạn có <C-r> trong chế độ chèn cho các loại hình điều:

nnoremap <F1> i<C-r>=line('.')+1<CR><Esc>

38

Ctrl +G sẽ cho bạn biết số dòng và thậm chí cả cột con trỏ đang ở. Nếu bạn có ý nghĩa ra nó dưới dạng văn bản tài liệu của bạn, sau đó không phải là tôi biết.

+8

ctrl + G cho tôi chỉ hiển thị tổng số dòng và/phần trăm/của tài liệu tôi đang ở ... phát điên. vim 7.1 – gcb

25

Bạn có ý nghĩa gì với "đầu ra"? Bạn có thể làm:

:echo line(".") + 1 

Để hiển thị số dòng hiện tại cộng với 1. Bạn có thể ràng buộc một phím tắt với map, ví dụ:

:map <F1> :echo line(".") + 1<cr> 

Để thực sự chèn dữ liệu vào bộ đệm:

:map <F1> :execute "normal! i" . (line(".") + 1)<cr> 
+4

Bạn không được sử dụng ': map' tại đây. Không có 'nore' [no' * map' lệnh nên được sử dụng ở tất cả] (http://learnvimscriptthehardway.stevelosh.com/chapters/05.html), nhưng bổ sung ': map' định nghĩa ánh xạ cho nhiều chế độ hơn bạn muốn để xem trong: bạn không cần các ánh xạ này trong hình ảnh (chúng sẽ không hoạt động ở đây) và các chế độ đang chờ xử lý. Cũng sử dụng ': normal' là lạ, bạn có' 'trong chế độ chèn cho loại điều sau:' nnoremap i = line ('.') + 1 '. – ZyX

+0

Cảm ơn bạn nnoremap i = line ('.') + 1 là câu trả lời tôi đang tìm kiếm – pacv

1

Bạn có thể lấy chiều rộng hình ảnh của vị trí con trỏ hiện tại với virtcol('.'); chèn nó vào bộ đệm thông qua thanh ghi biểu thức, ví dụ: ở chế độ chèn với <C-R>=virtcol('.')<CR>

Lưu ý rằng chiều rộng khác với số ký tự khi dòng chứa ký tự 2 byte, <Tab> hoặc ký tự không in được.

Các vấn đề liên quan