2010-01-04 2 views
36

Наконец-то я решил попробовать 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> 

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

+0

Прочитайте 42 PDF в этом URL-адрес HTTP: // zmievski.org/conversations/ –

ответ

35

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

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

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

Затем можно отобразить функциональную клавишу для каждого

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

Это работает! Благодаря! –

+2

Буфер-локальная команда (-b) будет еще лучше. –

+0

, чтобы добавить команду buffer-local, используйте ': command -buffer' ...': command -b' не работает – tbhartman

24

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

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>') 

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

makeprg=python\ % 

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

+0

Звучит как более масштабируемый подход. Я, вероятно, сделаю что-то вроде этого, если мне потребуется более одной команды. –

6

G'day,

Подобный karoberts ответ, я предпочитаю более прямой:

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

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

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

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

:split /tmp/results<CR> 

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

НТН

веселит,

Смежные вопросы