我已經開始使用vimdiff作為我的 git difftool,并且我不小心使用了命令dp(diff put) 將一些代碼放入另一個檔案中。但是,按u并不會撤消該操作,并且 vim 在底部說“已經是最舊的更改”
撤消do(差異獲取)命令可以完美運行,但奇怪的是不適用于dp!!
有任何想法嗎?
uj5u.com熱心網友回復:
這是嘗試以更圖形化的方式解釋該問題。
$ echo 1 > a && echo 2 > b
$ vim -d a b
a 是當前緩沖區:
-------- --------
| 1 | 2 |
| | |
| | |
| | |
-[a]---- --b-----
b是dpso的目標,之后dp,當前緩沖區不變,u無用。更改的是目標,并且您無法撤消一個緩沖區中另一個緩沖區的更改:
-------- --------
| 1 | 1 |
| == dp => |
| | |
| | |
-[a]---- --b*----
b必須成為當前u作業:
-------- --------
| 1 | 1 |
| | |
| | |
| | |
--a----- -[b]*--- do <C-w>w to change window
之后u:
-------- --------
| 1 | 2 |
| | |
| | |
| | |
--a----- -[b]----
現在,讓我們回到開始,a保持最新:
-------- --------
| 1 | 2 |
| | |
| | |
| | |
-[a]---- --b-----
之后do,更改的是當前緩沖區:
-------- --------
| 2 | 1 |
| <= do == |
| | |
| | |
-[a]*--- --b-----
并且u無需更改視窗即可撤消更改:
-------- --------
| 1 | 2 |
| | |
| | |
| | |
-[a]---- --b-----
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/360181.html
