我正在尝试配置 vim 以在缓冲区内运行 python 脚本。我尝试了 conqueterm,当我输入以下命令时,我设法得到了我想要的结果:
:ConqueTerm python -i test.py
现在我想将此命令绑定到一个键,以在另一个缓冲区中执行当前文件/缓冲区。但是当我运行:
:ConqueTerm python -i %
我得到一个空的新缓冲区,其中没有显示任何内容。我该怎么做才能执行该脚本?
我在 Windows 7 上使用 gvim 7.3 和 python 2.7
答案1
经过一些研究,我想出了以下解决方案:
map <F8> :exe "ConqueTermVSplit python -i " . expand("%")
该问题强制了 % 扩展。
答案2
一般使用其中一个:map
命令即可将一个键绑定到一个命令。
:map Q :ConqueTerm python -i %^V^M
您可以使用任何内容代替Q
,它类似于:
命令。来自 VIM 帮助文本:
{lhs} means left-hand-side *{lhs}*
{rhs} means right-hand-side *{rhs}*
:map {lhs} {rhs} |mapmode-nvo| *:map*
:nm[ap] {lhs} {rhs} |mapmode-n| *:nm* *:nmap*
:vm[ap] {lhs} {rhs} |mapmode-v| *:vm* *:vmap*
:xm[ap] {lhs} {rhs} |mapmode-x| *:xm* *:xmap*
:smap {lhs} {rhs} |mapmode-s| *:smap*
:om[ap] {lhs} {rhs} |mapmode-o| *:om* *:omap*
:map! {lhs} {rhs} |mapmode-ic| *:map!*
:im[ap] {lhs} {rhs} |mapmode-i| *:im* *:imap*
:lm[ap] {lhs} {rhs} |mapmode-l| *:lm* *:lmap*
:cm[ap] {lhs} {rhs} |mapmode-c| *:cm* *:cmap*
Map the key sequence {lhs} to {rhs} for the modes
where the map command applies. The result, including
{rhs}, is then further scanned for mappings. This
allows for nested and recursive use of mappings.
答案3
为了%
方便扩展,在 vim 中输入命令时,可以使用Ctrl+R然后%。这会将%
字符扩展为命令行。