Я работаю над небольшим скриптом Python, который требует частого выполнения для отладки и дальнейшего развития.
Могу ли я разделить экран vim и выполнить мой скрипт на одной части нажатием клавиши?
источник
Я работаю над небольшим скриптом Python, который требует частого выполнения для отладки и дальнейшего развития.
Могу ли я разделить экран vim и выполнить мой скрипт на одной части нажатием клавиши?
Добавьте эту строку в ваш .vimrc:
command R !./%
И тогда вы можете просто набрать ": R" в Vim для запуска скрипта ( vim-run-current-file )
Vim не поддерживает и никогда не будет поддерживать встроенную оболочку, такую как emacs или kate (если вы это имеете в виду), см. Этот вопрос о переполнении стека .
Дэвид Спиллет прав, вы можете запустить vim внутри экрана gnu:
$ screen vim foo.txt
Но это только даст вам нечто, отдаленно напоминающее оконный менеджер в терминале, - ОЧЕНЬ полезно, когда используется через ssh или в окне без X, но локально вы можете просто открыть другой xterm и переключаться между ними. *
В любом случае, если вы можете согласиться с тем фактом, что вы не увидите редактируемый файл, глядя на вывод, который он производит, совет Джека М хорош, но может быть короче:
:map ;e :w<cr>:!python %<cr>
Для той же цели у меня есть это в моем ~/.vimrc
:
au BufEnter *
\if match( getline(1) , '^\#!') == 0 |
\ execute("let b:interpreter = getline(1)[2:]") |
\endif
fun! CallInterpreter()
if exists("b:interpreter")
exec ("!".b:interpreter." %")
endif
endfun
map <F5> :call CallInterpreter()<CR>
Это запускает любой файл, который имеет shebang ( #!
) в первой строке. Он использует интерпретатор для запуска файла, поэтому ему не нужно иметь разрешения на выполнение.
* (экран имеет некоторые другие очень удобные функции, такие как копирование и вставка из вывода, мониторинг скрытых окон на активность / отсутствие активности, возможность одновременного использования сеанса с разных терминалов, возможность выхода из всех программ. Бег - это мощный инструмент).
:map ;e :w<cr>:!python %<cr>
хочет отобразить что-то в моем буфере vim, чтобы «подтвердить» (?), что команда была выполнена Как мне заставить его просто выполнить команду без вывода сообщений?:map <silent> ...
не похоже на работу.Наименее подробный способ (который требует, чтобы ваш скрипт был исполняемым):
источник
:!./%
чтобы скрипт находился в текущем каталоге.!
vim говорит выполнить все, что следует, как команду bash, так что вы можете это сделать!echo "Hello"
.%
Расширяются , чтобы быть именем текущего файла.Это может быть не разделенный экран, но это работает довольно хорошо для меня:
Это сопоставляет,
;e
чтобы выписать текущий файл и выполнить его, используя python (предполагается, что python находится у васPATH
).источник
Bexec ВИМ плагин делает именно то , что вы хотите. Сочетания клавиш включены.
источник
Есть похожий вопрос StackOverflow .
источник
Это то, что я использовал, пожалуйста (F5 запускает текущий скрипт).
Для превращения vim в мощную среду разработки Python я рекомендую этот урок:
источник
Поместите этот небольшой фрагмент в ваш .vimrc, чтобы выполнить текущий файл одним нажатием клавиши (например
F5
) и отобразить результат в новом буфере разделенной панели.:!
Это нормально, но вам нужно переключиться на свой терминал, чтобы увидеть результат.Хотя вы можете сделать это с помощью
ctrl-z
vim и вернуть его обратно,fg
это все равно означает, что вам нужно много переключать контекст.Этот фрагмент работает так: сначала угадывает исполняемый файл на основе,
filetype
а затем запускает его с текущим файлом в качестве аргумента.Затем удобный полезный метод берет вывод и сбрасывает его в новый буфер.
Это не идеально, но очень быстро для обычных рабочих процессов.
Вот фрагмент, скопированный ниже:
источник
Я не знаю о vim напрямую, но вы можете разделить экран таким образом, как правило, с помощью
screen
утилиты. ctrl+ a, S(обратите внимание, что это заглавная буква S) разделит экран, и вы можете переключаться между ними с помощью ctrl+ a, tab(если окно пустое, используйте ctrl+ a, nчтобы перейти в другое открытое окно или ctrl+ a, cчтобы создать новое) ,Вы также можете разделить отображение на более чем два, и изменить размер разбиений с помощью ctrl-a,: resize. Я часто использую экран таким образом, и хотя это не единственное решение, которое вы запрашиваете, оно может быть очень удобным.
источник