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 n
benderanya. Untuk menghitung kata-kata gunakan:
:%s/\i\+/&/gn
dan kata tertentu:
:%s/the/&/gn
Lihat count-items
bagian 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_flag
untuk 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 Command
ke Command-line
mode. Sekarang, apa pun yang Anda tulis setelahnya :
ada di CLI (Command Line Interface)%s
menentukan semua baris. Menentukan rentang sebagai %
cara melakukan substitusi di seluruh file. Sintaks untuk semua substitusi kemunculan adalah:%s/old-text/new-text/g
g
menentukan semua kejadian di baris. Dengan adanya g
bendera tersebut, Anda dapat membuat seluruh baris diganti. Jika g
flag 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 N
Tombol 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 /pattern
pencarian standar .:%s///gn
untuk mendapatkan jumlah kemunculan. Atau Anda bisa menggunakan :%s///n
untuk 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 lines
mana 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.