Saya menemukan diri saya melakukan yang berikut hampir setiap hari
- Jalankan penemuan (
find -name somefile.txt
) - Buka hasilnya di
vim
Masalahnya adalah saya harus menyalin dan menempelkan hasil find
ke dalam vim
perintah. Apakah ada cara untuk menghindari keharusan melakukan ini? Saya telah bereksperimen sedikit ( find -name somefile.txt | vim
) tetapi belum menemukan apa pun yang berfungsi.
Terima kasih sebelumnya
vim `find -name somefile.txt`
. @StuartPowers Sebagai alternatif, Anda dapat menggunakanvim `!-1`
jika Anda sudah menggunakan find ini adalah perintah Anda sebelumnyaCoba ini:
:r!find /<path> -name 'expression'
Hasilnya akan muncul di vim ketika pencarian selesai.
Atau
Mencoba:
sumber
Jika Anda tidak keberatan menjalankan perintah lagi: tekan Updan tambahkan
xargs
perintah. Atau gunakan subtitusi riwayat dan jalankanAda cara ringan menyimpan output dari perintah yang bekerja di ksh dan zsh tetapi tidak di bash (ini membutuhkan sisi output dari pipa yang akan dieksekusi di shell induk). Pipa perintah ke fungsi
K
(definisi zsh di bawah), yang k eeps outputnya dalam variabel$K
.Secara otomatis menyimpan output dari setiap perintah tidak benar-benar mungkin dengan shell saja, Anda perlu menjalankan perintah di terminal yang ditiru. Anda dapat melakukannya dengan menjalankan bagian dalam
script
(utilitas BSD, tetapi tersedia di sebagian besar perangkat termasuk Linux dan Solaris), yang menyimpan semua output sesi Anda melalui file (masih ada sedikit upaya yang diperlukan untuk secara andal mendeteksi prompt terakhir dalam naskah. ).sumber
Saya suka menggunakan kutu belakang `(Ini pada tombol yang sama dengan ~)
Kutu kembali mengeksekusi perintah di dalam kutu dan output kemudian dapat digunakan oleh perintah. Di atas akan menemukan semua file somefile.txt sehingga memungkinkan Anda untuk menggunakan
:next
untuk menelusuri semua file.Ini sangat berguna jika Anda menghabiskan beberapa upaya untuk menyempurnakan perintah, karena Anda kemudian dapat menggunakan substitusi sejarah untuk mengulangi perintah untuk editor.
sumber
Saya pasti melewatkan poin di sini, karena saya akan menggunakan:
(jika saya tahu hanya ada satu di saya
:echo &path
) atau, jika saya ingin semuanya:Sunting: Whoa! Ok, jadi saya melakukan rindu titik - Anda ingin daftar menemukan, bukan file sebenarnya dibuka? Coba (lagi, dari dalam Vim):
-- salahku :)
sumber
Seperti @davidmh tunjukkan dalam komentar, Anda dapat menggunakan
xargs
dengan flag-o
jika Anda ingin menggunakan aplikasi interaktif.Jika Anda tidak menggunakan
-o
, Anda mungkin akan mengacaukan status terminal setelah meninggalkan vim. Jika sudah melakukannya, Anda harus bisa mereset terminal Anda dengan perintah berikut:sumber
Saya menulis fungsi
pvim
yang melakukan apa yang Anda inginkan. Jika banyak baris disalurkan kepvim
mengabaikan semua kecuali yang pertama, itu bisa diperpanjang meskipun untuk membuka beberapa file dalam vim.Gunakan seperti:
yang akan memuat "foo.txt" pertama ke vim sama seperti jika Anda mengetik:
vim $(find . -name "foo.txt | head -n1")
sumber
Ini adalah
xargs
solusi yang lebih sederhana daripada yang telah disebutkan:The
-p
pilihan memberitahuvim
untuk membuka setiap file di tab terpisah. Saya menemukan ini lebih nyaman daripada menggunakan buffer.sumber
Saya menemukan bahwa membuka file dengan bantuan
locate
in vim sangat mudah dan jauh lebih cepat daripadafind
.Perintah berikut mencari file yang disebut
app.py
di jalur yang berisi direktoriMyPythonProject
.sumber