Mulai dari batu tulis kosong, bagaimana saya bisa mendapatkan dokumen yang berisi
1
2
3
4
5
6
7
8
9
10
…
100
Agar jelas, saya tidak ingin angka-angka ini ditampilkan di margin; Saya ingin mereka dimasukkan ke dalam dokumen itu sendiri.
Mulai dari batu tulis kosong, bagaimana saya bisa mendapatkan dokumen yang berisi
1
2
3
4
5
6
7
8
9
10
…
100
Agar jelas, saya tidak ingin angka-angka ini ditampilkan di margin; Saya ingin mereka dimasukkan ke dalam dokumen itu sendiri.
Jawaban:
Gunakan :put
dan range()
:
:put =range(1,100)
Untuk menghindari baris kosong di bagian atas ( pujian ke romainl ), gunakan :0put
:
:0put =range(1,100)
Selain Undo pure-vim :put =range(1,100)
(yang benar-benar membuat Anda dengan baris kosong di bagian atas), Anda dapat, tergantung pada OS Anda, gunakan salah satu dari perintahnya. Misalnya, pada kotak Unix / Linux:
%!seq 1 100
Di atas bekerja dengan memipakan seluruh buffer (kosong) ke seq
, yang mengabaikan inputnya dan hanya menampilkan angka 1 hingga 100. Vim kemudian mengganti seluruh buffer dengan seq
output.
Itu berguna ketika Anda sudah terbiasa dengan beberapa cara baris perintah untuk mendapatkan apa yang Anda inginkan.
Sebagai catatan, dan jelas bukan cara terpendek (lihat solusi luar biasa @ Undo), tetapi urutan penekanan tombol akan melakukannya juga:
i1EscqaYpCtrl+aq98@a
Biarkan saya memecahnya untuk Anda:
i1<Esc>
- masukkan angka 1, lalu kembali ke mode perintahqa
- mulai merekam makro dalam register "a"Y
- salin baris saat inip
- rekatkan garis saat ini (kursor juga akan pindah ke garis yang ditempelkan)<Ctrl>a
- menambah nomor berikutnya di telepon, menjadikannya 2q
- berhenti merekam makro (sudah mendaftar "a")98@a
- memutar ulang makro dalam register "a" 98 kaliBerikut adalah pendekatan yang berbeda, yang membutuhkan Vim yang lebih baru (sekitar 7.4.800)
Ini mengasumsikan buffer kosong dan '1' dalam register a. Pertama masukkan 100 1 ke buffer Anda "a100P,.
Kemudian pilih secara visual garis 2 hingga 100 :2EnterVG.
Sekarang tekan gCtrl+ A.
Baca bantuan di :h v_g_CTRL-A
:h g_CTRL-A
Saya tahu pertanyaan ini benar-benar sudah tua, tetapi ada cara lain untuk melakukannya juga. Coba ini:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
hanya akan membuka 100 baris kosong. Kemudian, kami menjalankan perintah pengganti:
:% " 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)
.