我經常使用.
鍵來重複我最後的vim命令。我想知道是否有一種方法將它與使用標記執行的命令一起使用。這裏有一個簡單的例子:vim標記可以使用重複鍵嗎?
- 馬克使用
m'a
- 向下移動幾行文本的線,例如
5j
- 縮進使用
>'a
線 - 縮進6線 - 按
.
重複上面的命令在相同的6號線 - 只會影響一號線
有沒有一種辦法使用.
命令時,vim可以應用前一個命令的相同標記範圍嗎?
ps。我知道6>>
與.
一起工作,上面的例子會更容易,我只是用它作爲例子。我經常使用標記來製作更復雜/更長的命令。
我經常使用.
鍵來重複我最後的vim命令。我想知道是否有一種方法將它與使用標記執行的命令一起使用。這裏有一個簡單的例子:vim標記可以使用重複鍵嗎?
m'a
5j
>'a
線 - 縮進6線.
重複上面的命令在相同的6號線 - 只會影響一號線有沒有一種辦法使用.
命令時,vim可以應用前一個命令的相同標記範圍嗎?
ps。我知道6>>
與.
一起工作,上面的例子會更容易,我只是用它作爲例子。我經常使用標記來製作更復雜/更長的命令。
的問題是,你重複命令>'a
,但因爲規則(從:help operator
),>'a
「應用操作光標大多留在這是操作的文本開始後」的如果光標位於起始位置以上,則光標停留在標記a
處。然後,當您重複>'a
時,您最終會從該行到它自身產生一個逐行移動,它只會重新縮進一行。
既然你在文本塊的起始處,影響文字的同一塊你可以再次使用']
(面向行)或`]
(charwise)運動,其移動到的該年底文字塊受到影響。因此,您可以使用>']
再次縮進同一個塊,並且由於此時光標在同一位置開始和結束,因此您可以使用.
重複附加次。
但是,更簡單的選擇是使用V5j>
而不是ma5j>'a
。 V
在當前位置啓動可視模式(linewise),5j
向下移動5行,然後>
縮進。當您重複使用.
時,同樣的視覺選擇仍然適用,因此無論您向上還是向下移動,都可以獲得理想的效果。
您的評論「...開始操作的文本」給了我一個線索。儘管我比使用標記更喜歡你的解決方案,但是我發現'反向+'會移動到先前操作的文本的末尾。因此,使用'backtick +] .'將在同一標記範圍內重複最後一個命令。 – bejonbee
@somethingkindawierd這是非常棒的,新的我。我將把它融入到我的答案中。 – hobbs