2010-06-30 83 views
0

我創建了以下規則:如何使VIM替代<腳本<腳本類型= 「... 」></script>

iabbrev < LT>腳本<腳本類型=「 文/ JavaScript的」> < /腳本>

但是發射VIM期間表示:
線290::
E474:處理的.vimrc檢測

錯誤無效參數

指向該行。我無法解決這個問題,好像問題出現在左邊部分,就像「腳本」是保留字一樣。 有沒有辦法逃脫它?或者我在這裏做錯了什麼?

+0

提起這VIM-dev郵件列表希望他們能解決它在未來的某個構建 – ZyX 2010-06-30 12:31:27

回答

0

感謝@喬恩HORSTMANN和@詹姆斯維加(從VIM-dev郵件列表)的問題可能得到解決:只需添加<到「iskeyword」選項,例如使用

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

請注意'iskeyword'選項用於很多動作,所以這可能會導致一些負面影響。

+0

這是有效的,太棒了! :) 很酷,有一個學術解決方案,不好,它是如此之深,有副作用。不過非常感謝您的幫助! – 2010-06-30 19:04:39

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附帶的片段。而且創建自己的片段也非常簡單。

+0

謝謝暗示!請看看這個。 – 2010-06-30 12:27:48

2

經過幾次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

0

只需用兩個字符工作在gVim的(不知道爲什麼):

:iab <s <script> 

打字「