我最终决定尝试Vim,因为我越来越感到GUI编辑的沮丧。到目前为止,我很喜欢它,但我找不到任何有关我正在解决的问题的帮助......
我正在尝试使用:Pyrun
将命令:!python %
映射到Vim中的cmap
。如果我键入:cmap
,映射会显示正常。但是,在输入:Pyrun
时,我收到以下错误消息:
不是编辑命令:Pyrun。
以下是我正在尝试的内容.vimrc:
:autocmd FileType python :cmap Pyrun<cr> !python %<cr>
:autocmd FileType python :cmap Intpyrun<cr> !python -i %<cr>
我该怎么做才能解决这个问题?
答案 0 :(得分:40)
我会在你的.vimrc或你的ftplugin / python_ft.vim中试试这样的东西
command Pyrun execute "!python %"
command Intpyrun execute "!python -i %"
然后:Pyrun
和:Intpyrun
应该有效
然后,您可以将功能键映射到每个
map <F5> :Pyrun<CR>
map <F6> :Intpyrun<CR>
答案 1 :(得分:28)
我个人更喜欢另一种方法。首先创建一个接收命令参数的函数,然后创建一个命令来调用该函数:
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
显示错误列表。
答案 2 :(得分:10)
天儿真好,
类似于karoberts的答案,我更喜欢更直接的:
:map <F9> :!python %<CR>
如果我的脚本正在创建一些输出,我也想在临时文件中捕获它,然后自动将该文件内容自动复制到另一个缓冲区,例如。
:map <F9> :!python % 2>&1 \| tee /tmp/results
然后我输入:set autoread
并在另一个缓冲区中打开结果文件
:split /tmp/results<CR>
然后,我可以通过运行开发中的脚本轻松查看缓冲区中运行的结果,该结果将在结果文件更新时自动刷新。
HTH
欢呼声,