例如,在Vim中,如果當前緩衝區包含一個單詞「Random」,並且我鍵入「random」,那麼Ctrl-n將被更改爲「Random」。如何在emacs中實現Vim風格區分大小寫的自動完成?
但是在emacs中,它表示「沒有動態擴展」用於「隨機」發現。
有反正我可以達到同樣的效果嗎?
例如,在Vim中,如果當前緩衝區包含一個單詞「Random」,並且我鍵入「random」,那麼Ctrl-n將被更改爲「Random」。如何在emacs中實現Vim風格區分大小寫的自動完成?
但是在emacs中,它表示「沒有動態擴展」用於「隨機」發現。
有反正我可以達到同樣的效果嗎?
你不說你如何試圖擴大這個詞。我假設你正在使用dabbrev-expand
(M-/
)或dabbrev-completion
(M-C-/
)。
如果您不是,那麼請嘗試設置變量case-fold-search
,這是控制區分大小寫的主要變量。有關控制區分大小寫的更多信息,請參閱Emacs手冊。在手冊中,使用i
地發現,與case
開始索引條目,如這些:
case conversion
case in completion
case-fold-search
case-replace
case-sensitivity and completion
case-sensitivity and tags search
假設你正在使用dabbrev:
見變量dabbrev-case-fold-search
和dabbrev-case-replace
。使用C-h v
看到自己的文檔:
dabbrev-case-fold-search
是dabbrev.el
定義的變量。它的值是
case-fold-search
作爲文件局部變量使用時,該變量可以是有風險的。
文檔:
控制dabbrev搜索是否應該忽略大小寫。
值爲
nil
表示案件有意義。如果
case-fold-search
爲nil
,則值爲case-fold-search
表示案件有意義。任何其他非
nil
版本意味着案件不重要。您可以自定義此變量。
dabbrev-case-replace
是dabbrev.el
定義的變量。它的值是
case-replace
作爲文件局部變量使用時,該變量可以是有風險的。
文檔:
無論dabbrev縮寫的情況下,模式適用於擴張。
值爲
nil
表示保留擴展的案例模式。值
case-replace
表示如果case-replace
是nil
則保留它。任何其他非
nil
值表示通過將縮寫的大小寫模式應用於其中來修改擴展 。只有當值
dabbrev-case-fold-search
指定忽略大小寫時,此變量纔有效。您可以自定義此變量。您的評論在這裏後
更新 -
我想你說你要「完全」或「擴大」您輸入random
到Random
。 IOW,你想克隆已經在緩衝區中的情況。我不認爲dabbrev是這樣工作的。
但是,標準庫completion.el
(包含在Emacs中)也提供了一種類似於dabbrev的行爲選項,它至少會根據您的輸入提供大小寫強制(即反過來)。以下是圖書館評論說的:
STRING CASING
Completion is string case independent if case-fold-search has its
normal default of T. Also when the completion is inserted the case of the
entry is coerced appropriately.
[E.G. APP --> APPROPRIATELY app --> appropriately
App --> Appropriately]
感謝您的詳細解答!我已經嘗試了不同值的這些血統。我可以在「rando」之後使用dabbrev-expand來正確完成,但不能「隨機」。請注意這個詞現在是完整的,是否有可能只是自動完成案件?我當前的變量:case-fold-search t,dabbrev-case-fold-search t,dabbrev-case-replace nil,case-replace t – Arty