Bắt đầu từ một bảng trống, làm thế nào tôi có thể có được một tài liệu có chứa
1
2
3
4
5
6
7
8
9
10
…
100
Để rõ ràng, tôi không muốn những con số này được hiển thị ở lề; Tôi muốn chúng được chèn vào tài liệu.
Bắt đầu từ một bảng trống, làm thế nào tôi có thể có được một tài liệu có chứa
1
2
3
4
5
6
7
8
9
10
…
100
Để rõ ràng, tôi không muốn những con số này được hiển thị ở lề; Tôi muốn chúng được chèn vào tài liệu.
Câu trả lời:
Sử dụng :put
và range()
:
:put =range(1,100)
Để tránh dòng trống ở trên cùng ( kudos to romainl ), sử dụng :0put
:
:0put =range(1,100)
Ngoài Undo thuần-vim :put =range(1,100)
(mà thực sự để lại cho bạn một dòng trống lên trên cùng), bạn có thể, tùy thuộc vào hệ điều hành của bạn, sử dụng một trong các lệnh của nó. Ví dụ: trên hộp Unix / Linux:
%!seq 1 100
Ở trên hoạt động bằng cách chuyển toàn bộ bộ đệm (trống) sang seq
, bỏ qua đầu vào của nó và chỉ xuất các số từ 1 đến 100. Vim sau đó thay thế toàn bộ bộ đệm bằng seq
đầu ra của.
Điều đó hữu ích khi bạn đã quen thuộc với một số cách dòng lệnh để có được những gì bạn muốn.
Đối với bản ghi và chắc chắn không phải là cách ngắn nhất (xem giải pháp tuyệt vời của @ Undo), nhưng chuỗi các lần nhấn phím cũng sẽ làm điều đó:
i1EscqaYpCtrl+aq98@a
Hãy để tôi phá vỡ điều đó cho bạn:
i1<Esc>
- chèn số 1, sau đó quay trở lại chế độ lệnhqa
- bắt đầu ghi một macro trong đăng ký "a"Y
- sao chép dòng hiện tạip
- dán dòng hiện tại (con trỏ cũng sẽ di chuyển đến dòng đã dán)<Ctrl>a
- tăng số tiếp theo trên dòng, làm cho nó 2q
- dừng ghi macro (đã đăng ký "a")98@a
- phát lại macro trong đăng ký "a" 98 lầnĐây là một cách tiếp cận khác, cần một Vim mới hơn (đại loại như 7.4.800)
Điều này giả sử một bộ đệm trống và '1' trong đăng ký a. Đầu tiên nhập 100 1 vào bộ đệm của bạn , "a100P.
Sau đó, trực quan chọn dòng 2 đến 100 :2EnterVG.
Bây giờ nhấn gCtrl+ A.
Đọc trợ giúp tại :h v_g_CTRL-A
:h g_CTRL-A
Tôi biết câu hỏi này thực sự cũ, nhưng có một cách khác bạn cũng có thể làm được. Thử đi:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
sẽ chỉ mở ra 100 dòng trống. Sau đó, chúng tôi chạy một lệnh thay thế:
:% " On every line
s/ " substitute
^/ " the start of the line. (This will always match no matter what)
\= " Evaluate:
line('.') " The current line.
<C-r>=range(1,100)
.