當我輸入:e時,MacVim會自動將其擴展爲:編輯。與此問題是,我不能放棄我的當前緩衝區:編輯!,因爲我收到一條錯誤消息說「!」是不允許的。MacVim:e擴展爲編輯和編輯!不會讓我放棄更改?
我有兩個問題:
- 爲什麼:編輯!工作而不是:編輯!
- 有沒有辦法在MacVim中禁用此自動展開功能,或者將其切換爲展開爲:編輯!而不是:編輯! ?
謝謝!
當我輸入:e時,MacVim會自動將其擴展爲:編輯。與此問題是,我不能放棄我的當前緩衝區:編輯!,因爲我收到一條錯誤消息說「!」是不允許的。MacVim:e擴展爲編輯和編輯!不會讓我放棄更改?
我有兩個問題:
謝謝!
如果在輸入e
後立即發生擴展,則可能是由於命令模式映射(即:map!
, :cmap
or :lmap
)。如果僅在輸入e
後跟一個空格(或輸入)才能擴展它,那麼它可能是一個縮寫(即:abbreviate
or :cabbrev
)。
通過在e
之前鍵入Control‑V或Control‑Q,可以暫時避免基於映射的擴展。另一個解決方法是在輸入命令行命令時輸入Control‑F(即您在:
提示符處;或者在啓動命令時鍵入q:
而不是:
)。這將彈出命令行窗口,以便您可以通過正常/插入模式編輯您的命令(這會避免所有命令行模式映射)。
一旦再有一種方法輸入e
到命令行,你可以使用:verbose
找到映射來源:
:verbose cmap e
(您必須使用命令行窗口中鍵入或者通過在每個e
前輸入一個Control-V或Control-Q在命令行輸入它。)
這將向您顯示映射的定義。此外,如果它來自一個插件,那麼源將被識別爲第二行,如Last set from /path/to/some/file
。
檢查的縮寫有一些技巧,因爲存在用於膨脹兩次機會(打字時並且當所述命令行被解析):
:verbose cab ^Ve
的^V
需要是一個實際控制-V。通常你通過輸入Control-V兩次(或Control-Q,然後是Control-V)來完成此操作。
對於Edit
命令本身,它是不是一個內置的命令,所以一些插件必須定義它。很少有內置命令以大寫字母開頭,所有「用戶定義」命令都必須以一個開頭;見:help E183
。
您可以再次使用:verbose
尋找到:Edit
定義:
:verbose command Edit
我懷疑映射/縮寫,可能來自同一個地方的命令。
可以手動禁用與:cunmap
一個基於映射的膨脹和與:cunabbrev
基於縮寫膨脹:
:cunmap e
:cunabbrev ^Ve
同樣,可能需要每個e
前型控制-V或控制-Q ,並且^V
必須是文字Control-V(鍵入Control-V兩次才能輸入)。
不幸的是,如果定義來自插件,則不能只將它們放入~/.vimrc
,因爲在~/.vimrc
之後加載了插件。您應該調查插件以查看它是否提供禁用侵入式映射的選項。有時插件會檢查:let
變量以查看它們是否應啓用某些功能。也許你的問題插件有一個「旋鈕」,可以讓你告訴它不要安裝它的e
- >Edit
擴展。如果沒有,您可能會報告有關:Edit!
無法正常工作的錯誤,並要求您禁用擴展。
謝謝,這正是我需要的!真棒回答克里斯! –
你使用TextExpander,Typinator還是一些文本擴展工具?如果是的話,那些可能是罪魁禍首。據我所知,MacVim不會像這樣擴展文本。
我不認爲'Edit'實際上是一個命令,你有一些插件使它成爲一個嗎? –