2013-07-31 157 views
10

我真的很喜歡YankRing的行爲,它可以讓我訪問我最後幾件事情y anked或d eleted或c絞死而沒有想到。Vim重複點(「。」)命令緩衝區?

但是像這樣的互補特徵爲.重複命令完全丟失,最常見的,當我輸入的時候我真的不想重複,然後按x清理東西了意外覆蓋該編輯。

通常可以通過視覺模式取回我剛輸入的內容,但這並不理想。

應該很容易記住過去的幾個命令。

現在的問題是,從Vim中提取最後一個指令包含在.之前的最後一個指令代表的可能性有多大?

如果它是我所害怕的,唯一的辦法是讓一個插件綁定到每一個可以編輯某些東西的命令,並以存儲我們自己的重複緩衝區的方式進行測試。這實際上並不實際,因爲我已經可以想象會有多少其他插件會中斷。但是,如果可能的話,我仍然真的很想要這個功能。

+0

相關問題[更強大的點(重複)版本](http://stackoverflow.com/q/16722566)。 – glts

+0

@glts我寫道...它是相似的,但需要通過開始記錄準備 –

+0

只要學會使用[寄存器](http://stackoverflow.com/questions/1497958/how-to-use-vim-registers? rq = 1)和其他內置的vim功能imo。很多插件可以「修復」那些不需要修復的東西。點運算符與寄存器完美配合。例如,你可以''qp'來粘貼'q'寄存器並用'.'來重複,但是任何編輯如'x'都不會改變你在非默認寄存器中保存的內容。 另一個偉大的帖子閱讀[這裏](http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim?rq=1) –

回答

1

插入模式中的關鍵字完成和/或ctrl-a應該可以滿足您的需求。

應該可以採取更加類似yankring的解決方案,但正如您所說,可能有點過於侵入性。在請求其他人爲你做之前,你是否親自看過vim.org?

+0

是的,我的意思是Vim甚至沒有提供找出'''會做什麼的方法。我真的希望有人有一個源補丁來使用命令暴露它。 –

+0

。重複你最後的改變。這很簡單,真的。 dot命令並不是真的被設計用來執行很久以前的一系列命令,所以實際上,你不必猜測它會做什麼。如果您想要更長期的解決方案,請使用宏和映射。 – romainl

2

不幸的是,在.命令後面無法獲取和重放命令。唯一的解決方法是永久在宏記錄模式,並使用宏寄存器作爲.命令的替代品。

這種策略是由RepeatLast plugin僱用的,這可能會提供你想要的。