我创建了以下规则:
iabbrev< lt>脚本< script type =“text / javascript”>< / script>
但在发布会期间,vim说:
处理.vimrc时检测到错误:
第290行:
E474:参数无效
指着那条线。我无法解决这个问题,似乎问题出在左侧,就像“脚本”是一个保留字。 有办法逃脱吗?或者我在这里做错了什么?
答案 0 :(得分:3)
考虑使用像SnipMate这样的东西:http://www.vim.org/scripts/script.php?script_id=2540
然后你手头有许多宏,例如
snippet script
<script type="text/javascript" charset="utf-8">
${1}
</script>${2}
在html.snippet
中要使用它,请在插入模式中键入以下内容:script<TAB>
- 将插入剪切片段(不包含${n}
个片段),光标将位于${1}
所在的位置。输入您的代码,然后再次按<TAB>
(仍处于插入模式),光标将在</script>
之后。
Snipmate为许多语言提供了更多的片段。而且创建自己的代码段也很容易。
答案 1 :(得分:2)
经过几次尝试并阅读文档后,我认为这种映射是不可能的。引自:help abbreviations
:
缩写有三种类型:
full-id“full-id”类型完全由关键字字符组成(字母 和'iskeyword'选项中的字符)。这是最常见的 缩写
Examples: "foo", "g3", "-1"
end-id“end-id”类型以关键字字符结尾,但所有其他字符结尾 字符不是关键字字符。
Examples: "#i", "..f", "$/7"
非id“非id”类型以非关键字字符结尾,另一个以非关键字字符结尾 字符可以是任何类型,不包括空格和制表符。 {这个类型 Vi}
不支持Examples: "def#", "4/7$"
不能缩写的字符串示例:“a.b”,“#default”,“a b”,“_ $ r”
所以像<script
这样的缩写似乎是不可能的。您当然可以像这样定义script
的缩写:
:inoreabbrev script <script type="text/javascript"></script>
这样,左括号不是缩写的一部分,因此在扩展中也不需要它。唯一的问题是,当您想要编写文本script
时必须小心。在这种情况下,您必须在单词的中间切换出插入模式或键入script<C-V><space>
。
将光标置于标签之间的另一个有用技巧是这样的映射,它会向后跳转到前一个开始括号:
:inoreabbrev script <script type="text/javascript"></script><C-O>F<
或者,将标记放在不同的行上,光标位于它们之间:
:inoreabbrev script <script type="text/javascript"><CR></script><C-O>O
答案 2 :(得分:0)
感谢@JörnHorstmann和@James Vega(来自vim-dev邮件列表),问题可能已解决:只需将<
添加到'iskeyword'选项,例如使用
set iskeyword+=60 " 60==char2nr("<")
请注意,'iskeyword'选项用于许多动作,因此可能会产生一些负面影响。
答案 3 :(得分:0)
只使用两个字符在gVim中工作(不知道为什么):
:iab <s <script>
输入“