Làm cách nào để thêm số dòng vào một dãy các hàng trong vim? Không phải là trong ": set nu" - điều này chỉ hiển thị số, nhưng không thêm chúng vào tệp.Thêm số dòng vào mã nguồn trong vim
Trả lời
Với
:%s/^/\=line('.')/
EDIT: để tổng hợp các nhận xét.
Lệnh này có thể được tinh chỉnh bao nhiêu tùy thích.
Hãy nói rằng bạn muốn thêm số điện thoại ở phía trước dòng từ một lựa chọn trực quan (V
+ di chuyển), và bạn muốn đánh số bắt đầu từ 42.
:'<,'>s/^/\=(line('.')-line("'<")+42)/
Nếu bạn muốn thêm một chuỗi giữa số và văn bản cũ từ dòng, chỉ cần ghép (với .
trong VimL) vào biểu thức số:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
Nếu bạn cần điều này để sắp xếp dưới dạng văn bản, bạn có thể muốn zero pad kết quả, có thể được thực hiện bằng printf
cho 0001, 0002
... thay vì 1, 2
... ví dụ:
:%s/^/\=printf('%04d', line('.'))/
Dù sao, nếu bạn muốn biết thêm thông tin, chỉ cần mở vim giúp đỡ: :h :s
và làm theo các liên kết (|subreplace-special|
..., |submatch()|
)
cat -n
thêm số dòng vào đầu vào của nó. Bạn có thể đặt đường ống tệp hiện tại thành cat -n
và thay thế bộ đệm hiện tại bằng những gì nó in ra để xuất chuẩn. May mắn thay giải pháp phức tạp này là ít hơn 10 ký tự trong vim:
:%!cat -n
Hoặc, nếu bạn chỉ muốn một subselection, trực quan chọn khu vực, và gõ này:
:!cat -n
Điều đó sẽ tự động đưa các hình ảnh đánh dấu chọn vào, và sẽ giống như thế này sau khi bạn đã gõ nó:
:'<,'>!cat -n
để xóa số dòng, tôi khuyên bạn nên sử dụng control-v
, mà sẽ cho phép bạn chọn trực quan một hình chữ nhật, sau đó bạn có thể xóa hình chữ nhật đó với x
.
Nếu u muốn số dòng bắt đầu bằng 0 thay vì 1 thì sao? – Nils
Xóa dòng đầu tiên, đánh số còn lại. Readd dòng đầu tiên sau đó với một '0' hàng đầu. ;) – sjas
Đó là câu trả lời! – user3751385
Với môi trường giống Unix, bạn có thể sử dụng con mèo hoặc awk để tạo một số dòng dễ dàng, vì vim có giao diện thân thiện với vỏ, vì vậy mọi thứ hoạt động trong vim cũng như trong shell.
Từ Vim Tip28:
:%!cat -n
hoặc
:%!awk '{print NR,$0}'
Nhưng, nếu bạn sử dụng vim trong MS-DOS, trong Win9x, Win2000, bạn mất những công cụ này. đây là một cách rất đơn giản để lưu trữ này chỉ bằng vim:
fu! LineIt()
exe ":s/^/".line(".")."/"
endf
Hoặc, một chuỗi sáng tác với bảng chữ cái là dễ dàng như trên:
exe "s/^/".nr2char(line("."))."/"
Bạn cũng có thể sử dụng một subst:
:g/^/exe ":s/^/".line(".")."^I/"
Bạn cũng có thể chỉ muốn in các dòng mà không cần thêm chúng vào tệp:
"Đôi khi nó có thể hữu ích đặc biệt là chỉnh sửa tệp nguồn lớn để in số dòng trên giấy.
Để làm như vậy, bạn có thể sử dụng tùy chọn:set printoptions=number:y
để kích hoạt và:set printoptions=number:n
để tắt tính năng này.
Nếu số dòng sẽ được in luôn, đặt dòngset printoptions=number:y
trongvimrc
"
Ý của bạn là 'mèo' thay vì 'gọi' trong ví dụ đầu tiên? –
@Lance: hai năm sau, tôi không thực sự chắc chắn: bản sửa đổi 3 của bài đăng này cho thấy tôi hoàn nguyên sửa đổi từ 'cat' thành' call' ... (nguồn có thể là Vim tip28 như trong http: //neuron.tuke .sk/~ hudecm/VimTips-OFFLINE-nov02.txt) – VonC
OK, dòng awk là những gì tôi cần anyway. Bạn có biết làm thế nào tôi sẽ thực hiện điều đó để nó cho tôi 3 hoặc 4 chữ số, như bắt đầu với 100 hay 1000? –
Trên một hệ thống GNU:. Với bên ngoài nl
nhị phân:
:%!nl
cool nl -v cho phép bạn chỉ định nơi đánh số sẽ bắt đầu, vì vậy nếu bạn muốn dòng đầu tiên là dòng 0 thay vì 1 sử dụng nl -v 0 – Nils
các "VisIncr" plugin là tốt cho chèn cột của số incrementing nói chung (hoặc chữ cái, ngày tháng, chữ số La Mã, vv). Bạn có thể kiểm soát định dạng số, phần đệm, v.v. Vì vậy, chèn một "1" ở phía trước của mỗi dòng (thông qua :s
hoặc :g
hoặc chèn khối hình ảnh), đánh dấu cột đó trong chế độ chặn hình ảnh và chạy một trong các lệnh từ plugin.
Trước tiên, bạn có thể loại bỏ các số dòng hiện tại nếu bạn cần phải:
:%s/^[0-9]*//
Sau đó, bạn có thể thêm số điện thoại đường. NR
là số dòng hiện tại bắt đầu từ một số, vì vậy bạn có thể thực hiện một số phép toán trên số đó để lấy số bạn muốn. Lệnh sau cung cấp cho bạn bốn số dòng:
:%!awk '{print 1000+NR*10,$0}'
- 1. Thiết điểm break bằng số dòng mã nguồn trong WinDBG
- 2. Tìm chuỗi và thêm dòng vào vi/vim
- 3. Html thêm số dòng vào văn bản
- 4. Thêm mã trình điều khiển mới vào mã nguồn linux
- 5. Làm cách nào để thêm văn bản vào giữa dòng cho nhiều dòng trong Vim?
- 6. Làm cách nào để thêm số dòng không thể chọn chuột vào vim?
- 7. Thêm lệnh vào Vim
- 8. cách thêm số dòng vào: QTextEdit?
- 9. Làm thế nào để Autoindent mã nguồn Ruby trong Vim
- 10. chạy dòng mã nguồn python theo dòng
- 11. Thêm mã nguồn vào dll khi phát hành
- 12. Vim: Chuyển qua Mã số
- 13. Thêm nguồn vào video HTML5 trong javascript?
- 14. Vim Cấu hình số dòng màu
- 15. dòng dài nhất trong vim?
- 16. vim - tự động định dạng mã nguồn golang khi lưu
- 17. Cách thêm văn bản ở cuối mỗi dòng trong Vim?
- 18. Thêm ngắt dòng Sau khi mẫu trong VIM
- 19. thêm liên kết trong javadoc vào tệp nguồn trên mã google
- 20. Mã byte vào mã nguồn Java
- 21. Xóa dòng mới trong Vim
- 22. Trong Vim, có cách nào để sao chép số dòng hiện tại vào bộ đệm không?
- 23. cách thêm đường vào sổ đăng ký vim mà không ghi đè lên số
- 24. VIM thêm một ký tự vào dòng mới khi nhấn enter
- 25. Làm thế nào để tính toán số lượng dòng trong mã nguồn
- 26. Tại sao mã nguồn cho một số trang web tất cả trong một dòng?
- 27. RDLC - Thêm nguồn dữ liệu vào VS2010
- 28. số sửa đổi git trong tài liệu mã nguồn
- 29. Làm thế nào để thêm một dòng sau mỗi vài dòng trong vim
- 30. Thêm nguồn trong thư mục con vào dự án cmake
Cố gắng thực hiện điều này trên một lựa chọn trực quan (trong đó 1 sẽ là dòng đầu tiên trong lựa chọn) tuy nhiên nó bắt đầu số ở dòng số đó trong tệp. Bất kỳ cách nào để sửa đổi số bắt đầu? Cảm ơn! – Jason
Tất nhiên. Thay đổi "line ('.')" Thành "(offset + line ('.'))". –
@Jason 'offset' có thể là' 1-line ("'<") '. Tự hỏi, tại sao câu hỏi cũ như vậy xuất hiện trong RSS của tôi. – ZyX