Подтвердить что ты не робот

Добавление команды в Vim

Наконец-то я решил попробовать Vim, так как я все больше разочаровываюсь редакторами графического интерфейса. До сих пор я люблю это, но я не могу найти никакой помощи для проблемы, которая у меня есть...

Я пытаюсь сопоставить команду :Pyrun с :!python % в Vim, используя cmap. Отображение отображается отлично, если я набираю :cmap. Однако при вводе :Pyrun я получаю это сообщение об ошибке:

Не команда редактора: Пирун.

Вот что я пытаюсь в .vimrc:

:autocmd FileType python :cmap Pyrun<cr> !python %<cr>
:autocmd FileType python :cmap Intpyrun<cr> !python -i %<cr>

Что я могу сделать для решения этой проблемы?

4b9b3361

Ответ 1

Я бы попробовал что-то подобное в вашем .vimrc или вашем ftplugin/python_ft.vim

command Pyrun execute "!python %"
command Intpyrun execute "!python -i %"

Тогда :Pyrun и :Intpyrun должны работать

Затем вы можете сопоставить функциональную клавишу с каждым

map <F5> :Pyrun<CR>
map <F6> :Intpyrun<CR>

Ответ 2

Я лично предпочитаю другой подход. Сначала создайте функцию, получающую аргументы команды, а затем создайте команду для вызова функции:

fun! DoSomething( arg ) "{{{
    echo a:arg
    " Do something with your arg here
endfunction "}}}

command! -nargs=* Meh call DoSomething( '<args>' )

Итак, это было бы как

fun! Pyrun( arg ) "{{{
    execute '!python ' . expand( '%' )
endfunction "}}}

command! -nargs=* Pyrun call Pyrun( '<args>' )

Но есть лучший способ сделать это в Виме. Используйте makeprg:

makeprg=python\ %

Просто введите :make, чтобы запустить текущий файл Python. Используйте :copen, чтобы отобразить список ошибок.

Ответ 3

G'day,

Как и у karoberts, я предпочитаю более прямой:

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

Если мой script создает какой-то вывод, мне также нравится записывать его во временном файле, а затем автоматически записывать содержимое файлов в другой буфер, например

:map <F9> :!python % 2>&1 \| tee /tmp/results

Затем я устанавливаю autoread, введя :set autoread и открывая файл результатов в другом буфере

:split /tmp/results<CR>

Тогда я легко вижу результаты запуска в буфере, который автоматически обновляется, когда файл результатов обновляется, запуская script в процессе разработки.

НТН

веселит,