2013-03-03 114 views
2

在vim幫助文檔中,它指出full-id類型的縮寫完全由關鍵字字符(來自iskeyword選項的字母和字符)組成。 而iskeyword項說字符串:什麼是VIM中Abbrevation中使用的關鍵字

Vim default for MS-DOS and Win32 
"@,48-57,_,128-167,224-235" 

否則:"@,48-57,_,192-255"

這是什麼意思?什麼是48-57, 128-167,224-235? 是@的人物之一?但我嘗試了一些像@tt,它不起作用!

而vim doc舉例-1下的條目full-id表示-是關鍵字之一。但我嘗試了我的vim。發現

-1工作

-11不起作用

看來,在我的VIM的-作爲一個非關鍵字字符處理。哪裏不對?我沒有設置任何自定義關鍵字。

回答

3

"@,48-57,_,128-167,224-235"是您的編碼表中的字符和範圍。看看ASCII表格,你會看到範圍48-57是從09的數字。對於128以上的字符,您可能需要轉到Unicode表格,請參閱set encoding?@是特殊的,並添加了所有字母字符。

關於不適用於您的示例:有三種縮寫,full-idend-idnon-id。所以任何縮寫都必須適合其中的一個組。 -1作品,它是一個end-id。它以isKeyword的字符結尾。 -11不是,因爲它在第一個關鍵字之後有另一個關鍵字,它既不是full-id,因爲-不是關鍵字。

+0

嗯,我不知道你是否正確。在unicode表或擴展ASCII碼中,128-167之間有許多奇怪的字符。但我試圖從表格中複製字符。例如,使用對應於128的歐元符號開始像€jj這樣的縮寫,但是我仍然收到了錯誤E474。 – user15964 2013-03-03 02:31:13

+0

並且在「-1」方面,它被用作vim doc中「full-id」條目下的一個例子。見http://vimdoc.sourceforge.net/htmldoc/map.html#abbreviations所以我只能假設這個例子在這個官方的vim文檔中是錯誤的。 – user15964 2013-03-03 02:31:43

1

讓我們基於對:help abbreviation規則檢查-11

  1. 它,因爲它包含-,這是不包含在您iskeyword選項值不是一個完整的-ID。
  2. 它不是一個結束標識符,因爲根據文檔,除最後一個以外的所有字符都不能是關鍵字字符,中間的1是。
  3. 它不是非id,因爲它以關鍵字字符結尾。

如果希望爲破折號是一個關鍵字字符,則必須有用於正在使用的編碼(45以UTF-8等)適當的值包含在它iskeyword