Bagaimana cara mengeksekusi file yang saya edit di Vi (m) dan mendapatkan output di jendela terpisah (seperti di SciTE)?
Tentu saja saya bisa menjalankannya seperti itu:
:!scriptname
Tetapi apakah mungkin untuk menghindari penulisan nama skrip dan bagaimana cara mendapatkan output di jendela terpisah, bukan di bagian bawah layar?
:!"%:p"
untuk mengatasi spasi.Jawaban:
Ada
make
perintahnya. Ini menjalankan perintah yang ditetapkan dalammakeprg
opsi. Gunakan%
sebagai tempat penampung untuk nama file saat ini. Misalnya, jika Anda mengedit skrip python:Ya, Anda harus keluar dari ruang angkasa. Setelah ini, Anda cukup menjalankan:
Jika mau, Anda dapat mengatur
autowrite
opsi dan ini akan disimpan secara otomatis sebelum menjalankanmakeprg
:Ini menyelesaikan bagian eksekusi. Tidak tahu cara apa pun untuk mendapatkan keluaran itu ke jendela terpisah yang tidak melibatkan pengalihan ke file.
sumber
:copen
untuk membuka "daftar kesalahan" yang dihasilkan dengan menjalankan:make
. Di jendelanya sendiri. Sayangnya, untuk mendapatkan hasil agar diformat dengan benar, beberapaerrorformat
opsi terakhir diperlukan. Jika tidak, keluaran akan dianggap dalam format yang dikeluarkan gcc.:let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
) meskipun terlihat samar, berfungsi persis seperti yang diminta oleh penulis pertanyaan.Untuk mengakses nama file buffer saat ini, gunakan
%
. Untuk membuatnya menjadi variabel Anda dapat menggunakanexpand()
fungsi tersebut. Untuk membuka jendela baru dengan buffer baru, gunakan:new
atau:vnew
. Untuk menyalurkan output dari perintah ke buffer saat ini, gunakan:.!
. Menyatukan semuanya:jelas mengganti
ruby
dengan perintah apa pun yang Anda inginkan. Saya menggunakanexecute
agar saya bisa mengelilingi nama file dengan tanda kutip, jadi itu akan berfungsi jika nama file memiliki spasi di dalamnya.sumber
:command! R let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
untuk dapat hanya menggunakan:R
untuk menjalankan perintahnyaVim memiliki
!
perintah ("bang") yang menjalankan perintah shell langsung dari jendela VIM. Selain itu memungkinkan peluncuran urutan perintah yang terhubung dengan pipa dan membaca stdout.Sebagai contoh:
setara dengan membuka jendela prompt perintah dan meluncurkan perintah:
Lihat "Tips Vim: Bekerja dengan perintah eksternal" untuk detailnya.
sumber
Saya memiliki jalan pintas untuk itu di vimrc saya:
Ini menulis buffer saat ini, membuat file saat ini dapat dieksekusi (hanya unix), mengeksekusinya (hanya unix) dan mengalihkan output ke .tmp.xyz, kemudian membuat tab baru, membaca file dan kemudian menghapusnya.
Memecahnya:
sumber
:w<CR>:silent !chmod +x %:p<CR>:silent !%:p 2>&1 | tee ~/.vim/output<CR>:split ~/.vim/output<CR>:redraw!<CR>
- ini mengalihkan baik stdout dan stderr ke file temp, dan sebelum melakukannya, ini mencetak semuanya ke stdout, jadi jika skrip membutuhkan waktu lama untuk dijalankan Anda benar-benar melihatnya berfungsi. Juga, ini tidak bergantung pada direktori (saya mendapatkan kesalahan saat membuka file dengan jalur absolutnya). Namun, itu tidak menjalankan skrip secara interaktif, dan saya belum menemukan cara untuk membuatnya demikian.Untuk skrip Shell yang saya gunakan
sumber
Vim 8 memiliki terminal interaktif bawaan. Untuk menjalankan skrip bash saat ini dalam panel terpisah:
atau singkatnya
%
memperluas ke nama file saat ini.Dari
:help terminal
:sumber
Saya menggunakan mekanisme yang sedikit lebih mengganggu melalui peta:
Buat saja jadi saya tidak perlu menabung, lalu pergi. Pergi saja.
sumber
Anda dapat menggunakan plugin bexec dari vim . Sepengetahuan saya, versi terbaru adalah 0,5.
Kemudian:
Di dalam vim itu sendiri saat mengedit file .vba lakukan:
Beberapa keluaran akan muncul memberi tahu Anda bahwa bexec.vim telah ditulis serta dokumentasinya, dll ..
Sekarang, Anda dapat mengujinya dengan membuka (skrip bahasa apa pun yang memiliki #! Interpreter berfungsi dengan baik) di vim dan menjalankan
Catatan: Saya ingin perpecahan menjadi vertikal daripada horizontal, jadi saya lakukan:
dan mengubah nilai dari "hor" menjadi "ver" ..
Saya tahu ini pertanyaan lama, tapi saya harap ini bisa membantu seseorang di luar sana. Saya telah mengalami masalah yang sama saat mengambil kursus Teknik Startup Coursera di mana profesor Palaji menggunakan Emacs dan saya tidak suka Emacs ..
sumber
Berdasarkan jawaban @SethKriticos dan @Cyril, saya sekarang menggunakan yang berikut:
Gunakan F9 untuk menyiapkan jendela baru dan F2 untuk menjalankan skrip dan tee ke file output Anda.
Saya juga menambahkan nama skrip ke nama file keluaran, sehingga Anda dapat menggunakan ini untuk beberapa skrip pada saat yang bersamaan.
sumber
Di Anda,
.vimrc
Anda dapat menempelkan fungsi iniSetelah itu, di
vim
jalankan perintah:shell python ~/p.py
sebagai contoh. Dan Anda akan mendapatkan output di jendela terbelah. + Setelah perubahanp.py
sebagai contoh Anda akan menjalankan perintah yang sama lagi, fungsi ini tidak akan membuat jendela baru lagi, ini akan menampilkan hasilnya di jendela terpisah sebelumnya (sama).sumber
@tokopedia
Saya mencari skrip ini (python / Windows) cukup lama. Karena tidak ada "tee" di Windows, saya mengubahnya menjadi:
sumber
Cukup gunakan titik dua dan tanda seru seperti yang ditunjukkan di bawah ini
sumber
Saya akan merekomendasikan plugin quickrun . Cepat dan mudah untuk dikonfigurasi. Berikut sedikit demonstrasi:
sumber