Saya ingin mencari string dan menemukan jumlah kejadian dalam sebuah file menggunakan editor vi.
Saya ingin mencari string dan menemukan jumlah kejadian dalam sebuah file menggunakan editor vi.
Jawaban:
:g/xxxx/d
Ini akan menghapus semua baris dengan pola, dan melaporkan berapa banyak yang dihapus. Urungkan untuk mendapatkannya kembali setelahnya.
THE caranya
:% s / pattern // gn
Anda membutuhkan nbenderanya. Untuk menghitung kata-kata gunakan:
:%s/\i\+/&/gn
dan kata tertentu:
:%s/the/&/gn
Lihat count-itemsbagian dokumentasi.
Jika Anda cukup mengetik:
%s/pattern/pattern/g
maka baris status akan memberi Anda jumlah pertandingan di vi juga.
(mirip seperti yang dikatakan Gustavo, tetapi sebagai tambahan:)
Untuk pencarian sebelumnya , Anda dapat melakukannya dengan mudah:
:%s///gn
Pola tidak diperlukan, karena sudah ada di search-register ( @/).
"%" - lakukan s/di seluruh file
"g" - cari global (dengan beberapa klik dalam satu baris)
"n" - mencegah penggantian apa puns/ - tidak ada yang dihapus! tidak ada yang harus dibatalkan!
(lihat: :help s_flaguntuk informasi lebih lanjut)
(Dengan cara ini, ini berfungsi sempurna dengan " Telusuri teks yang dipilih secara visual ", seperti yang dijelaskan di vim-wikia tip171 )
menggunakan
:% s / pola / \ 0 / g
ketika pola string terlalu panjang dan Anda tidak suka mengetik semuanya lagi.
Jawaban singkatnya :
:% s / string-untuk-dicari // gn
Untuk belajar :
Ada 3 mode dalam editor VI seperti di bawah ini

:Anda masuk dari Commandke Command-linemode. Sekarang, apa pun yang Anda tulis setelahnya :ada di CLI (Command Line Interface)%smenentukan semua baris. Menentukan rentang sebagai %cara melakukan substitusi di seluruh file. Sintaks untuk semua substitusi kemunculan adalah:%s/old-text/new-text/ggmenentukan semua kejadian di baris. Dengan adanya gbendera tersebut, Anda dapat membuat seluruh baris diganti. Jika gflag ini tidak digunakan maka hanya kemunculan pertama di baris saja yang akan diganti.n menentukan jumlah keluaran dari kejadian //garis miring ganda melambangkan penghilangan replacement text. Karena kami hanya ingin mencari.Setelah mendapatkan jumlah kemunculannya, Anda dapat Tekan NTombol untuk melihat kejadian satu per satu.
Untuk mencari dan menghitung dalam rentang tertentu dari nomor baris 1 sampai 10:
: 1,10s / halo // gn
%untuk seluruh file diganti dengan ,nomor baris yang dipisahkan. Untuk menemukan dan mengganti dalam rentang tertentu dari baris nomor 1 sampai 10:
: 1,10s / helo / hello / gn
Saya sarankan melakukan:
*untuk melakukan "pencarian terbatas" untuk apa yang ada di bawah kursor, atau melakukan /patternpencarian standar .:%s///gnuntuk mendapatkan jumlah kemunculan. Atau Anda bisa menggunakan :%s///nuntuk mendapatkan jumlah baris dengan kejadian.** Saya benar-benar dengan saya dapat menemukan plug-in yang akan memberikan pesan "cocok N dari N 1 pada N 2 baris" dengan setiap pencarian, tapi sayangnya.
Catatan: Jangan bingung dengan kata-kata yang rumit dari keluarannya. Perintah pertama mungkin memberi Anda sesuatu seperti di 4 matches on 3 linesmana perintah terakhir mungkin memberi Anda 3 matches on 3 lines. Meskipun secara teknis akurat, yang terakhir menyesatkan dan harus mengatakan '3 baris cocok'. Jadi, seperti yang Anda lihat, sebenarnya tidak perlu menggunakan bentuk yang terakhir (hanya 'n'). Anda mendapatkan info yang sama, lebih jelas, dan lebih banyak dengan menggunakan formulir 'gn'.
:g/xxxx/d) buruk, berbahaya, dan lebih rendah dari yang lain di halaman ini. Harap batalkan pilihannya.