vimrc映射问题;执行python脚本映射无法从vimrc工作

时间:2011-03-27 12:28:38

标签: python map vim

GRR。我正在努力学习Vim的学习曲线 并尝试在我的vimrc中获取一个简单的映射来执行当前缓冲区的python脚本。 映射格式正确,并在我将其输入Vim中的命令行后工作。这是映射:
map <buffer> <S-e> :w<CR>:!usr/bin/env python % <CR>

但它不会从我的vimrc加载:(我使用的是基本的.vimrc_sample,只附加了这个映射。有什么奇怪的是我可以从vimrc获得不同的映射:
<buffer>
这个可行,但不是脚本执行者吗?是什么给了什么? Ubuntu 10.10 Python 2.6 Vim 7.2

非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

我怀疑你在map之前有一些东西:<buffer>参数意味着只为当前缓冲区定义了映射,因此在它之前将它添加到vimrc而没有类似autocmd FileType python之类的东西是奇怪的。也许这就是为什么它不起作用的原因:你在测试这个映射之前以某种方式切换到另一个缓冲区。

还有一些值得关注的事情:

  1. 切勿使用map代替noremap
  2. 您可能不希望为视觉定义此映射(至少在<C-u>之前没有w)和选择模式,并且绝对不希望为运算符挂起定义它模式,请使用nnoremap
  3. <S-e>E相同。
  4. 您可以使用竖线符号w在一个命令中合并!...:w | !/usr/bin/env python %<CR>
  5. 你在usr之前忘记了斜线。

答案 1 :(得分:0)

耶稣,墨菲定律。
在搜索了一个小时的答案后,发布此q后1分钟我解决了它。映射中的问题是<buffer> 删除它使映射工作,因此:
nnoremap E w:<CR>:!python % <CR>