如何使用vim替换<script with =“”<script =“”type =“...”> </script>

时间:2010-06-30 09:46:15

标签: vim scripting

我创建了以下规则:

iabbrev&lt; lt&gt;脚本&lt; script type =“text / javascript”&gt;&lt; / script&gt;

但在发布会期间,vim说:

处理.vimrc时检测到错误:
第290行:
E474:参数无效

指着那条线。我无法解决这个问题,似乎问题出在左侧,就像“脚本”是一个保留字。 有办法逃脱吗?或者我在这里做错了什么?

4 个答案:

答案 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>

输入“