2013-01-23 12 views
2

我發現:23y會抽出整個第23行。 但我想要做的只是第23行的第一個字母。 我試過:23yw,但這不起作用。是否有捷徑可尋?從特定行中抽出第一個字

這樣做可以不先行,然後打開然後輸入`返回到我正在編輯的行?

回答

3

23ggyw將做到這一點。我不認爲有更快的方法。

說明:23gg將光標移動到第23行,yw跳過一個單詞。 請注意,這僅適用於您設置了startofline選項(這是默認設置)。否則,您需要明確移動到第一個非空白字符:23gg^yw

-1

23jyw應該能夠做到這一點,它會帶你到23日線和猛拉第一個字

+4

這不會帶你到第23行,將你移動到下方的起始位置第23行。 –

0

類型23Gyw在正常模式下應該做這項工作。

G   Goto line [count], default last line, on the first 
      non-blank character |linewise|. If 'startofline' not 
      set, keep the same column. 
      G is a one of |jump-motions|. 
1

我不認爲有沒有辦法做到這一點,沒有移動光標。

無論如何,這裏是另一種方式來做到這一點:

:23norm! yw 

擊穿:

  • :,因爲我們使用的是Ex命令,

  • 23是在其上線我們想做點什麼,它的範圍是1,

  • norm[al]在給定的範圍內執行正常模式命令,

  • yw猛拉的第一個字。

添加<C-o>回到你來自哪裏。

+0

在這種情況下,我認爲''或''''不起作用;之前的位置不會被添加到跳轉列表中。 –

+0

你說得對,的確如此。 – romainl

+1

通常使用':norm!'來避免與映射衝突,除非你有特殊的理由使用':norm'來代替。 –

1

:y是一個:yank Ex命令的縮寫,這就是爲什麼:yw不起作用;這是一個正常模式命令。正如其他答案已經顯示的那樣,您可以通過:normal yw從命令行觸發這些答案。

恐怕沒有辦法避免以實用的方式跳轉(但是,如上所述,<C-O>可讓您跳回原始位置)。你可以使用Vimscript:

:let @" = matchstr(getline(23), '^\w\+') 

但是,這是很容易輸入,只適用於一個功能。

0

以下方法可以在不移動光標的情況下按要求工作,但它很麻煩。

:23y|norm PJ0eld$ 

或者你可以嘗試制定一些與

:23t.|norm eld$ 
相關問題