如何使VIM替代<脚本<脚本类型= “... ”>

问题描述:

我创建了以下规则:如何使VIM替代<脚本<脚本类型= “... ”></script>

iabbrev < LT>脚本<脚本类型=“ 文/ JavaScript的”> < /脚本>

但是发射VIM期间表示:
线290::
E474:处理的.vimrc检测

错误无效参数

指向该行。我无法解决这个问题,好像问题出现在左边部分,就像“脚本”是保留字一样。 有没有办法逃脱它?或者我在这里做错了什么?

+0

提起这VIM-dev邮件列表希望他们能解决它在未来的某个构建 – ZyX 2010-06-30 12:31:27

感谢@乔恩HORSTMANN和@詹姆斯维加(从VIM-dev邮件列表)的问题可能得到解决:只需添加<到“iskeyword”选项,例如使用

set iskeyword+=60 " 60==char2nr("<") 

请注意'iskeyword'选项用于很多动作,所以这可能会导致一些负面影响。

+0

这是有效的,太棒了! :) 很酷,有一个学术解决方案,不好,它是如此之深,有副作用。不过非常感谢您的帮助! – 2010-06-30 19:04:39

考虑使用类似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附带的片段。而且创建自己的片段也非常简单。

+0

谢谢暗示!请看看这个。 – 2010-06-30 12:27:48

经过几次trys和阅读文档,我不认为这种映射是可能的。从:help abbreviations举例:

有三种类型的缩写:

全ID的“全-id”类型完全由关键字字符(字母 和人物从“iskeyword”选项)。这是最常见的 的缩写。

Examples: "foo", "g3", "-1" 

端-id,将“终端ID”类型中的关键字字符结尾,但所有其它 字符不是关键字的字符。

Examples: "#i", "..f", "$/7" 

非标识符在非关键字字符“非-id”类型结束时,其它 字符可以是任何类型,但不包括空间和标签。 {这种类型 Vi不支持}

Examples: "def#", "4/7$" 

例子字符串,不能缩写: “AB”, “#def”, “AB”, “_ $ 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 
+0

即使你认为这是不可能的,在你写完脚本之后,是什么阻止你添加' 3Fs ZyX 2010-06-30 11:52:08

+0

谢谢,不过这很奇怪,<脚本不能是缩写。一切正常例如<脚本>。 – 2010-06-30 12:26:52

+0

@Denis Chmel在试图找到解决方法时,我注意到两件事:1. ZyX 2010-06-30 12:35:18

只需用两个字符工作在gVim的(不知道为什么):

:iab <s <script> 

打字“