有一種未列在vim幫助文件(特別是:insert.txt)中的完成類型,但我本能地經常感覺需要它。假設我的文件中有「Awesome」和「SuperCrazyAwesome」兩個字。我發現Awesome的一個實例應該是SuperCrazyAwesome,所以我跳到單詞的開頭,進入插入模式,然後輸入「SuperCrazy」。vim中的內部代碼完成
我覺得我應該可以輸入「S」,創建「SCrazy」,然後只需點擊一個完成快捷鍵或兩個鍵,讓它找到光標左側的什麼(「S」),什麼是正確的(「Crazy」),將此文件與文件中的所有單詞(「/ S \ w * Crazy /」)進行正則表達,併爲我提供一個選項的完成彈出菜單,或者只有一個匹配時執行替換。
我想爲此使用實際的完成系統。存在使用函數的「用戶定義」完成,並且在從給定列表中替換的幫助中有一個很好的例子。然而,我似乎無法追查我需要做的事情的許多細節,包括:
- 如何從vim函數獲取文件中所有單詞的列表?
- 我可以列出所有緩衝區中的單詞(帶有文件名)嗎,因爲vim的完整嗎?
- 如何在插入模式下獲取光標前/後的單詞中的文本?
- 可以完成替換整個單詞,而不僅僅是光標?
我已經在這裏幾個小時了。我一直打到死角,像this one,它向我介紹\%#與光標位置匹配,這似乎不適合我。例如,搜索\ w * \%#只會返回單詞的第一個字符,無論我在哪裏。 \%#似乎不是主播。
不嚴格相關,但您可能會從[this](http://stackoverflow.com/questions/6548541/camelcase-expansion-in-vim-like-intellij-idea/6550628#6550628)得到一些提示。有一些示例函數可用於從當前文件生成單詞列表以及自定義完成功能。我會在今天晚些時候嘗試發佈答案。 –
您的鏈接看起來很有趣並且數據豐富。我會挖掘它。謝謝你的幫助。 –