Запуск кода Python в Vim

Я пишу код Python с помощью Vim, и каждый раз, когда я хочу запускать свой код, я печатаю его внутри Vim:

:w !python 

Это расстраивает, поэтому я искал более быстрый метод запуска кода Python внутри Vim. Возможно ли выполнить скрипты Python с терминала? Я использую Linux.

11 Solutions collect form web for “Запуск кода Python в Vim”

как насчет добавления autocmd , когда FileType python , создать сопоставление:

 nnoremap <buffer> <F9> :exec '!python' shellescape(@%, 1)<cr> 

то вы можете нажать <F9> чтобы выполнить текущий буфер с помощью python

У меня это в файле .vimrc:

 nnoremap <silent> <F5> :!clear;python %<CR> 

Когда я закончил редактирование сценария Python, я нажимаю <Esc> а затем <F5> . Сценарий сохраняется, а затем выполняется на пустом экране.

Я предпочитаю выход Python перенаправляться в новое окно Vim (и если это окно остается открытым, а затем обновлять его содержимое при следующем запуске кода Python с помощью этой функции):

 " Bind F5 to save file if modified and execute python script in a buffer. nnoremap <silent> <F5> :call SaveAndExecutePython()<CR> vnoremap <silent> <F5> :<Cu>call SaveAndExecutePython()<CR> function! SaveAndExecutePython() " SOURCE [reusable window]: https://github.com/fatih/vim-go/blob/master/autoload/go/ui.vim " save and reload current file silent execute "update | edit" " get file path of current file let s:current_buffer_file_path = expand("%") let s:output_buffer_name = "Python" let s:output_buffer_filetype = "output" " reuse existing buffer window if it exists otherwise create a new one if !exists("s:buf_nr") || !bufexists(s:buf_nr) silent execute 'botright new ' . s:output_buffer_name let s:buf_nr = bufnr('%') elseif bufwinnr(s:buf_nr) == -1 silent execute 'botright new' silent execute s:buf_nr . 'buffer' elseif bufwinnr(s:buf_nr) != bufwinnr('%') silent execute bufwinnr(s:buf_nr) . 'wincmd w' endif silent execute "setlocal filetype=" . s:output_buffer_filetype setlocal bufhidden=delete setlocal buftype=nofile setlocal noswapfile setlocal nobuflisted setlocal winfixheight setlocal cursorline " make it easy to distinguish setlocal nonumber setlocal norelativenumber setlocal showbreak="" " clear the buffer setlocal noreadonly setlocal modifiable %delete _ " add the console output silent execute ".!python " . shellescape(s:current_buffer_file_path, 1) " resize window to content length " Note: This is annoying because if you print a lot of lines then your code buffer is forced to a height of one line every time you run this function. " However without this line the buffer starts off as a default size and if you resize the buffer then it keeps that custom size after repeated runs of this function. " But if you close the output buffer then it returns to using the default size when its recreated "execute 'resize' . line('$') " make the buffer non modifiable setlocal readonly setlocal nomodifiable endfunction 

Имейте в виду, что вы можете повторить последнюю использованную команду с @: так что это все, что вам нужно будет повторить, это эти два символа.

Или вы можете сохранить строку w !python в один из регистров (например, "a например»), а затем нажать :<CR>a<CR> чтобы вставить содержимое регистра a в командную строку и запустить его.

Или вы можете делать то, что я делаю, и сопоставлять <leader>z с :!python %<CR> для запуска текущего файла.

Если вы не хотите каждый раз печатать « :exec python file.py », используйте это:

 nnoremap <F9> :echo system('python2 "' . expand('%') . '"')<cr> nnoremap <F10> :echo system('python3 "' . expand('%') . '"')<cr> 

Это тоже не испортило мой статус powerline / vim.

Простым методом было бы ввести : в обычном режиме, а затем нажать клавишу со стрелкой вверх на клавиатуре и нажать Enter. Это повторит последние введенные команды на VIM.

Если вы хотите быстро перепрыгнуть через свои команды :w , то классная вещь – напечатать :w а затем нажать стрелку вверх. Он будет работать только через команды, начинающиеся с w .

Для общего использования (запустите python / haskell / ruby ​​/ C ++ … из vim на основе типа filetype ) есть хороший плагин с именем vim-quickrun . По умолчанию он поддерживает многие языки программирования. Он также легко настраивается, поэтому при необходимости можно определить предпочтительные типы поведения для любого типа файла. Репозиторий github не имеет причудливого readme, но он хорошо документирован с файлом doc.

Для этого .vimrc-отображения требуется Conque Shell , но он реплицирует поведение Geany (и других X-редакторов):

  • Нажмите клавишу, чтобы выполнить
  • Выполняется в гном-терминале
  • Ожидает подтверждения для выхода
  • Окно автоматически закрывается при выходе

    :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; \" "')

У меня это на моем .vimrc:

 "map <F9> :w<CR>:!python %<CR>" 

который сохраняет текущий буфер и выполняет код с назначением только Esc + F9

Поместите курсор в код где-нибудь. Щелкните правой кнопкой мыши и выберите один из вариантов «Выбрать», чтобы выделить код. Затем нажмите Ctrl: и вы увидите новое приглашение '<,>'

Теперь введите! Python и посмотрите, работает ли это.

Я просто трачу дни, пытаясь понять ту же проблему !!! Я использовал кодировку:

 s='My name' print (s) 

После того как я вытащил все мои волосы, я, наконец, понял!

  • Редактор Bpython-like / IDE?
  • Задание интерпретатора Python для команды vim's: python
  • Список полезных команд python для Vim?
  • Автозаполнение для gtk3 и pygobject
  • автозаполнение vim-jedi не работает
  • Как изменить буфер Vim с помощью скрипта python?
  • Повторный код Python в Vim
  • Каков рекомендуемый способ использования Vim folding для кода Python
  • Python - лучший язык программирования в мире.