Bagaimana menambahkan autocmd
ke ~/.vimrc
-file Anda , membuat pemetaan:
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!python3' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!python3' shellescape(@%, 1)<CR>
maka Anda dapat menekan <F9>
untuk mengeksekusi buffer saat ini denganpython
Penjelasan:
autocmd
: perintah yang akan dijalankan Vim secara otomatis {event}
(di sini: jika Anda membuka file python)
[i]map
: membuat pintasan keyboard ke <F9>
dalam mode sisip / normal
<buffer>
: Jika beberapa buffer / file terbuka: cukup gunakan yang aktif
<esc>
: keluar dari mode penyisipan
:w<CR>
: menyimpan file Anda
!
: menjalankan perintah berikut di shell Anda (coba :!ls
)
%
: diganti dengan nama file dari buffer aktif Anda. Tetapi karena dapat berisi hal-hal seperti spasi dan hal-hal "buruk" lainnya, praktik yang lebih baik adalah tidak menulis :python %
, tetapi menggunakan:
shellescape
: melarikan diri dari karakter khusus. The 1
berarti dengan garis miring terbalik
TL; DR: Baris pertama akan bekerja dalam mode normal dan setelah Anda menekannya <F9>
pertama-tama simpan file Anda dan kemudian jalankan file dengan python. Yang kedua melakukan hal yang sama, tetapi meninggalkan mode penyisipan terlebih dahulu
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
tampaknya bekerja di Vim 7.4.1689. Untuk apa shellescape itu?Masuk saja ke mode normal dengan menekan
<esc>
dan ketik:sumber
Saya memiliki ini di file .vimrc saya:
Setelah saya selesai mengedit skrip Python, saya tinggal menekan
<F5>
. Skrip disimpan dan kemudian dieksekusi di layar kosong.sumber
m
kunci plus,
kunci bukanF5
kunci?Insert
mode. Untuk eksekusi diNormal
modus penggunaannmap
bukanimap
.Saya lebih suka keluaran Python dialihkan ke jendela Vim baru (dan jika jendela itu dibiarkan terbuka, perbarui isinya saat Anda menjalankan kode Python dengan fungsi ini):
sumber
.vimrc
? Jika tidak, bagaimana cara memberikan skrip ini ke vim? (Noob di sini)Berdasarkan jawaban sebelumnya, jika Anda ingin melihat kode sambil melihat pada outputnya, Anda dapat menemukan perintah
:ter
(:terminal
) yang berguna.Menggunakan
vert
di baris kedua menjalankan kode dalam pemisahan vertikal, bukan horizontal.Negatifnya adalah jika Anda tidak menutup jendela terpisah tempat kode dijalankan, Anda akan mengalami banyak pemisahan setelah beberapa kali proses (yang tidak terjadi dalam IDLE python asli di mana jendela keluaran yang sama digunakan kembali).
(Saya menyimpan garis-garis ini di dalam
/home/user/.vimrc
)sumber
Ingatlah bahwa Anda dapat mengulangi perintah yang terakhir digunakan dengan
@:
, jadi yang perlu Anda ulangi hanyalah kedua karakter tersebut.Atau Anda bisa menyimpan string
w !python
ke salah satu register (seperti"a
misalnya) dan kemudian tekan:<C-R>a<CR>
untuk memasukkan konten registera
ke dalam baris perintah dan menjalankannya.Atau Anda dapat melakukan apa yang saya lakukan dan peta
<leader>z
untuk:!python %<CR>
menjalankan file saat ini.sumber
Jika Anda tidak ingin melihat "
:exec python file.py
" dicetak setiap kali, gunakan ini:Itu juga tidak mengacaukan statusbar powerline / vim-airline.
sumber
Plugin: jupyter-vim
Jadi Anda bisa mengirim lines (
<leader>E
), visual selection (<leader>e
) ke runningjupyter-client
(penggantianipython
)Saya lebih suka memisahkan editor dan interpreter (masing-masing di cangkangnya). Bayangkan Anda mengirim perintah membaca input yang buruk ...
sumber
Untuk penggunaan umum (jalankan python / haskell / ruby / C ++ ... dari vim berdasarkan
filetype
), ada plugin bagus yang disebut vim-quickrun . Ini mendukung banyak bahasa pemrograman secara default. Ini juga mudah dikonfigurasi, sehingga seseorang dapat menentukan perilaku yang disukai untuk jenis file apa pun jika diperlukan. Repo github tidak memiliki readme yang mewah, tetapi didokumentasikan dengan baik dengan file doc.sumber
Jawaban yang diterima berfungsi untuk saya (di Linux), tetapi saya ingin perintah ini juga menyimpan buffer sebelum dijalankan, jadi saya mengubahnya sedikit:
The
:w <bar>
menyimpan buffer KEMUDIAN menjalankan kode di dalamnya.sumber
Metode sederhana adalah mengetik
:
saat dalam mode normal, lalu tekan tombol panah atas pada keyboard dan tekan Enter. Ini akan mengulangi perintah yang diketik terakhir di VIM.sumber
Jika Anda ingin cepat melompat kembali melalui
:w
perintah Anda , hal yang keren adalah mengetik:w
dan kemudian tekan panah atas Anda. Ini hanya akan menggilir perintah yang dimulai denganw
.sumber
Saya memiliki ini di .vimrc saya:
yang menyimpan buffer saat ini dan menjalankan kode dengan hanya menampilkan Esc + F9
sumber
Anda juga dapat menggunakan skywind3000 / asyncrun.vim . Ini mirip dengan yang terdaftar di @FocusedWolf.
sumber
Anda dapat memperluas untuk bahasa apa pun dengan 1 pengikatan tombol dengan perintah augroup, misalnya:
sumber
Pikirkan tentang menggunakan garis shebang, sehingga Anda akan dapat menggunakannya dengan bahasa apa pun, tidak hanya Python.
Menambahkan shebang:
Tambahkan ini ke baris pertama skrip Anda:
atau ini, jika Anda menggunakan Python 2:
Peta kunci Vim:
Tambahkan ini ke Anda
~/.vimrc
:Jadikan file dapat dieksekusi:
Ketik Vim:
atau di terminal:
Penjelasan:
Ketika F7 ditekan dalam mode normal, Vim akan mencoba menjalankan file saat ini sebagai skrip bash. Kemudian juru bahasa bash akan melihat baris shebang dan memahami, bahwa file ini harus diteruskan ke Python (atau program lain jika diperlukan).
Anda juga akan dapat menjalankan skrip Anda dari terminal menggunakan namanya:
alih-alih cara ini (itu juga akan berhasil):
sumber
Pemetaan .vimrc ini membutuhkan Conque Shell , tetapi mereplikasi perilaku Geany (dan editor X lainnya):
Jendela menutup secara otomatis saat keluar
:let dummy = conque_term#subprocess('gnome-terminal -e "bash -c \"python ' . expand("%") . '; answer=\\\"z\\\"; while [ $answer != \\\"q\\\" ]; do printf \\\"\nexited with code $?, press (q) to quit: \\\"; read -n 1 answer; done; \" "')
sumber
Letakkan kursor Anda di kode di suatu tempat. Klik kanan dan pilih salah satu pilihan "Pilih" untuk menyorot kode Anda. Kemudian tekan Ctrl: dan Anda akan melihat prompt baru '<,>'
Sekarang ketik! Python dan lihat apakah itu berhasil.
Saya hanya menghabiskan waktu berhari-hari mencoba mencari tahu masalah yang sama !!! Saya menggunakan pengkodean:
Setelah saya mencabut semua rambut saya, akhirnya saya melakukannya dengan benar!
sumber
:% !python
.%
hanya berarti semua baris.Alih-alih menempatkan pemetaan perintah di Anda
.vimrc
, letakkan pemetaan di~/.vim/ftplugin/python.vim
file Anda (Windows$HOME\vimfiles\ftplugin\python.vim
). Jika Anda tidak memiliki file atau direktori ini, buat saja. Dengan cara ini, kunci hanya dipetakan saat Anda membuka.py
file atau file apa pun denganfiletype=python
, karena Anda hanya akan menjalankan perintah ini pada skrip Python.Untuk pemetaan sebenarnya, saya ingin dapat mengedit di Vim saat skrip dijalankan. Keluar dari jawaban @cazyas, saya memiliki yang berikut ini di
ftplugin\python.vim
(Windows) saya:Ini akan menjalankan skrip Python saat ini di latar belakang. Untuk Linux ubah saja menjadi ini:
sumber
sumber