Running Python code in Vim
Just go to normal mode by pressing <esc>
and type:
! clear; python %
Step by step explanation:
!
allows you to run a terminal command
clear
will empty your terminal screen
;
ends the first command, allowing you to introduce a second command
python
will use python to run your script (it could be replaced withruby
for example)
%
concats the current filename, passing it as a parameter to thepython
command
How about adding an autocmd
to your ~/.vimrc
-file, creating a mapping:
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>
then you could press <F9>
to execute the current buffer with python
Explanation:
autocmd
: command that Vim will execute automatically on{event}
(here: if you open a python file)[i]map
: creates a keyboard shortcut to<F9>
in insert/normal mode<buffer>
: If multiple buffers/files are open: just use the active one<esc>
: leaving insert mode:w<CR>
: saves your file!
: runs the following command in your shell (try:!ls
)%
: is replaced by the filename of your active buffer. But since it can contain things like whitespace and other "bad" stuff it is better practise not to write:python %
, but use:shellescape
: escape the special characters. The1
means with a backslash
TL;DR: The first line will work in normal mode and once you press <F9>
it first saves your file and then run the file with python.
The second does the same thing, but leaves insert mode first
I have this in my .vimrc file:
imap <F5> <Esc>:w<CR>:!clear;python %<CR>
When I'm done editing a Python script, I just press <F5>
. The script is saved and then executed in a blank screen.