Как насчет добавления autocmd
в ваш ~/.vimrc
-файл, создания сопоставления:
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>
тогда вы можете нажать, <F9>
чтобы запустить текущий буфер сpython
Пояснение:
autocmd
: команда, которую Vim будет выполнять автоматически {event}
(здесь: если вы откроете файл python)
[i]map
: создает сочетание клавиш для <F9>
в режиме вставки / нормальном режиме
<buffer>
: Если открыто несколько буферов / файлов: просто используйте активный
<esc>
: выход из режима вставки
:w<CR>
: сохраняет ваш файл
!
: запускает следующую команду в вашей оболочке (попробуйте :!ls
)
%
: заменяется именем вашего активного буфера. Но поскольку он может содержать такие вещи, как пробелы и другие «плохие» вещи, лучше не писать :python %
, а использовать:
shellescape
: экранировать специальные символы. Эти 1
средства с обратной косой чертой
TL; DR: первая строка будет работать в обычном режиме, и как только вы <F9>
ее нажмете, сначала сохраните ваш файл, а затем запустите файл с помощью python. Второй делает то же самое, но сначала оставляет режим вставки
autocmd FileType python nnoremap <buffer> ....
nnoremap <buffer> <F9> :!python %<cr>
похоже, работает в Vim 7.4.1689. Зачем нужен шелковый пейзаж?Просто перейдите в нормальный режим, нажав
<esc>
и набрав:источник
У меня есть это в моем файле .vimrc:
Когда я закончу редактировать скрипт Python, я просто нажимаю
<F5>
. Сценарий сохраняется, а затем выполняется на пустом экране.источник
m
клавишу плюс,
вместоF5
клавиши?Insert
режиме. Для выполнения вNormal
режиме используйтеnmap
вместоimap
.Я предпочитаю перенаправлять вывод Python в новое окно Vim (и если это окно остается открытым, обновите его содержимое при следующем выполнении кода Python с этой функцией):
источник
.vimrc
? Если нет, как передать этот скрипт в vim? (ЗдесьОсновываясь на предыдущих ответах, если вы хотите увидеть код, глядя на его вывод, вы можете найти полезную команду
:ter
(:terminal
).Использование
vert
во второй строке запускает код по вертикали, а не по горизонтали.Отрицательным является то, что если вы не закроете разделенное окно, в котором выполнялся код, у вас будет много разделений после нескольких запусков (чего не происходит в исходном python IDLE, где одно и то же окно вывода используется повторно).
(Я держу эти строки внутри
/home/user/.vimrc
)источник
Имейте в виду, что вы можете повторить последнюю использованную команду
@:
, так что все, что вам нужно будет повторить, это эти два символа.Или вы можете сохранить строку
w !python
в один из регистров ("a
например, как), а затем нажать,:<C-R>a<CR>
чтобы вставить содержимое регистраa
в командную строку и запустить его.Или вы можете делать то , что я делаю , и карту ,
<leader>z
чтобы:!python %<CR>
запустить текущий файл.источник
Если вы не хотите, чтобы
:exec python file.py
каждый раз печатался " ", используйте следующее:Это не испортило мою строку состояния powerline / vim-Airlines.
источник
Плагин: jupyter-vim
Таким образом, вы можете отправить строки (
<leader>E
), визуальное выделение (<leader>e
) в рабочийjupyter-client
(заменуipython
)Я предпочитаю разделить редактор и интерпретатор (каждый в своей оболочке). Представьте, что вы отправляете неверную команду чтения ввода ...
источник
Для общего использования (запускайте python / haskell / ruby / C ++ ... из vim на основе
filetype
) есть хороший плагин vim-quickrun . По умолчанию он поддерживает множество языков программирования. Его также легко настроить, поэтому при необходимости можно определить предпочтительное поведение для любого типа файла. В репозитории github нет навороченного readme, но он хорошо документирован с помощью файла документации.источник
Принятый ответ работает для меня (в Linux), но я хотел, чтобы эта команда также сохраняла буфер перед запуском, поэтому я немного изменил ее:
Он
:w <bar>
сохраняет буфер, ЗАТЕМ запускает в нем код.источник
Самый простой способ - ввести
:
текст в обычном режиме, а затем нажать клавишу со стрелкой вверх на клавиатуре и нажать Enter. Это повторит последние набранные команды на VIM.источник
Если вы хотите быстро вернуться к своим
:w
командам, лучше всего набрать текст:w
и нажать стрелку вверх. Он будет перебирать только команды, которые начинаются сw
.источник
У меня это на моем .vimrc:
который сохраняет текущий буфер и выполняет код с сохранением только Esc + F9
источник
Вы также можете использовать skywind3000 / asyncrun.vim . Это похоже на то, что перечислил @FocusedWolf.
источник
Вы можете расширить любой язык с помощью 1 привязки клавиш с помощью команды augroup, например:
источник
Подумайте об использовании строки shebang, чтобы вы могли использовать ее на любом языке, а не только на Python.
Добавление shebang:
Добавьте это в первую строку вашего скрипта:
или это, если вы используете Python 2:
Раскладка Vim:
Добавьте это в свой
~/.vimrc
:Сделать файл исполняемым:
Введите в Vim:
или в терминале:
Пояснение:
При нажатии F7 в нормальном режиме Vim попытается выполнить текущий файл как сценарий bash. Тогда интерпретатор bash увидит строку shebang и поймет, что этот файл нужно передать Python (или любой другой программе, если это необходимо).
Также вы сможете запустить свой скрипт из терминала, используя его имя:
вместо этого (это тоже сработает):
источник
Для этого сопоставления .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; \" "')
источник
Поместите курсор куда-нибудь в код. Щелкните правой кнопкой мыши и выберите один из вариантов «Выбрать», чтобы выделить код. Затем нажмите Ctrl: и вы увидите новую подсказку '<,>'
Теперь введите! Python и посмотрите, работает ли это.
Я просто провожу дни, пытаясь решить ту же проблему !!! Я использовал кодировку:
После того, как я вырвал все свои волосы, я наконец получил это право!
источник
:% !python
.%
просто означает все строки.Вместо того, чтобы помещать отображение команд в ваш
.vimrc
, поместите отображение в свой~/.vim/ftplugin/python.vim
файл (Windows$HOME\vimfiles\ftplugin\python.vim
). Если у вас нет этого файла или каталогов, просто создайте их. Таким образом, ключ отображается только тогда, когда вы открываете.py
файл или любой файл с помощьюfiletype=python
, поскольку вы будете запускать эту команду только в сценариях Python.Что касается фактического сопоставления, мне нравится иметь возможность редактировать в Vim во время выполнения скрипта. Исходя из ответа @cazyas, у меня в
ftplugin\python.vim
(Windows) есть следующее :Это запустит текущий скрипт Python в фоновом режиме. Для Linux просто измените его на это:
источник
источник