vim 与 python: 如何映射 :silent make |处理 vimrc 中的功能键

vim with python: how to map :silent make | copen to function key in vimrc

就是这样,我的 vimrc 中有我希望它能工作的是:

set makeprg=python\ %
nmap <F5> :silent make | copen

它不起作用,它回显 :silent make 并且不 运行 或报告脚本中的错误。但是如果我只输入 Vim

:silent make | copen

我得到了我想要的结果。

我在 windows vista

上使用 GVim 7.4

我想是因为map命令不接受管道字符作为命令分隔符并将其作为输入,所以你可以用<bar>替换它,比如:

:nmap <F5> :silent make <bar> copen<CR>

您正在执行您的 python 代码而不是 linting。如果您想要更重的方法,快速 google 会显示 pylint and Python - check syntax and run script. There is also synstastic.vim

您的映射存在以下问题:

  • 管道 | 未转义。请改用 <bar>
  • 作为一般经验法则应该使用 *noremap 除非使用 <Plug> 映射
  • 执行命令需要在末尾加上<cr>
  • 可选择使用 :autocmd:make 之后执行 :cwindow/:copen。例如 autocmd QuickFixCmdPost * cwindow
  • 可选择为此操作创建一个新命令:command! -nargs=* Smake silent make <args>。现在你可以 :Smake 而不是 :make

您的新映射:

nnoremap <F5> :silent make <bar> copen<cr>

如需更多帮助,请参阅:

:h :map
:h <bar>
:h :au
:h QuickFixCmdPost
:h :cwindow
:h :cope
:h :compiler
:h write-compiler-plugin