Ketika saya menjalankan grep "keyword" -n
dan mendapatkan daftar hasil berikut:
a/b/c:10: keyword
a/b/c:70: keyword
a/b/d:50: keyword
Bagaimana saya bisa membuka salah satu file (katakanlah daftar ke-2) di baris yang ditemukannya?
Saya sekarang hanya menyalin output menggunakan mouse saya, dan salin setelah vim
dan kemudian tambahkan +
dengan nomor baris yang saya salin. (artinya saya menulis vim a/b/c +70
menggunakan salinan mouse untuk mendapatkan nama file, dan salinan mouse lain untuk mendapatkan nomor baris [atau saya hanya menyalinnya dengan tangan, ketika cukup pendek])
Apakah ada cara untuk melakukannya dengan pintasan keyboard?
command-line
vim
grep
CIsForCookies
sumber
sumber
echo a/b/c:70: keyword | awk '{print $1}' | sed 's,:$,,' | sed 's,:, +,' | xargs vim && reset
.Jawaban:
Dua hal:
Vim memiliki beberapa dukungan untuk
grep
.Jika Anda membuka Vim, dan lakukan
:grep keyword ...
, Vim mengisi daftar perbaikan cepat dengan hasilnya, dan melompat ke file pertama. Anda kemudian dapat melompat ke entri perbaikan cepat ke n dengan:cc n
(dan perintah lain).Anda dapat mengisi daftar perbaikan cepat yang disebutkan di atas menggunakan output grep:
Dan kemudian gunakan perintah navigasi perbaikan cepat yang disebutkan di atas.
Entah lebih sederhana daripada bermain-main dengan output grep secara manual.
Sebagai alternatif untuk (2), Anda dapat menyimpan output grep ke file dan menggunakan file itu sebagai gantinya, jika Anda pikir Anda tidak perlu membuka Vim setelah:
sumber
grep -n
(<filename>:<line>: ...
). Saya menggunakan plugin buron untuk Git, dan kemudian:Gstatus
, pindah ke file yang diinginkan dan tekan Enter.grep alias
untuk selalu menggunakan warna, dan itu, untuk beberapa alasan, merusak-q >()
opsi ...Anda bisa membuatnya jadi jika belum ada dukungan untuk grep seperti yang dijawab @muru:
Ini dapat digunakan dengan perintah lain,
git grep
misalnya.Anda juga dapat membuka output di buffer dan menggunakan "cbuffer" di atasnya.
Lihat bagian perbaikan cepat dari manual tentang hal itu.
sumber