2011-03-29 71 views
41

我已啓用了自動換行功能,並且往往有相當長的線條。 但在「w」實際上4行高的行內移動很麻煩。我一直使用/跳轉到我正在尋找的單詞,但似乎過分了一點。Vim:在長線內快速移動

有關如何在一條線內更快移動的提示?

感謝,

MRB

回答

77
  • 您可以使用$0,並且^移到線的端點,然後使用wb。此外,爲wb添加數字參數可以加速該過程,因此使用6w而不是僅僅w可以將您置於需要的位置。
  • 使用ft移動到單個字符也將有所幫助。 (我通常使用這個標點符號,例如,如果我在一條長線上有四個句子,2f.將會到第二句的末尾)
  • 使用()鍵是導航整個句子的另一種方法。
  • 將長線分成多行(手動或使用set tw=72 [或80])可使編輯變得更簡單。您隨後可以通過J加入。
  • 剛發現的東西,你可以上下移動一個顯示行使用gjgk。這樣,你可以將你的一個包裝行視爲多行。

如果您對您正在編輯的數據類型發表評論,可能會使我們更容易提出建議。

+2

我喜歡你的回答是最好的,所以我已經添加了我的建議,以及除去我自己的答案。 +1 – 2011-03-29 21:19:42

+13

感謝gj,gk提示。 – 2011-03-29 23:30:02

+8

'gj'和'gk'都可以用等效的箭頭完成,即'g '和'g '。非常感謝! – alexm 2011-06-03 13:52:35

5

您可以使用()按句子導航;它只是尋找.,但這可能非常有幫助,特別是如果您不喜歡該句子並想要更改它:(c)將跳轉到當前句子的開頭,然後更改整個句子。

您還可以使用we以及計數修飾符來移動單詞。 3w將一次移動三個單詞。

您還可以使用fF向前和向後搜索特定的字符。如果您正在查找單詞quitesyzygy而不是the,這會更有用。 :)

2

您還可以走動WB將跳到下一個空格:) G移動到文件末尾

19

我想你可以從GK受益GJ,而不是僅僅k和和學家

也期待在'virtualedit'一些選項,讓您通過「無效」區域光標不輕彈光標移動到下一個最好的物理特性。

您可能要(臨時)

nnoremap <buffer> k gk 
nnoremap <buffer> j gj 

離開了<buffer>部分在全球範圍內應用它。

+0

這是我使用的解決方案。很方便。向上和向下的箭頭仍然保留移動到前一個和下一個實際行的傳統行爲。 – gotgenes 2011-03-29 21:32:27

3

我最近開始使用一個插件,我覺得真的很高興快速移動線(或孔文件)中。

插件的名字是PreciseJump,你可以找到它here

當你使用這個插件時,它定義爲映射_f和_F。

如果鍵入_f其次是X將突出顯示所有x個字,並會與您可以按跳轉到該位置的其他角色暫時代替。檢查腳本頁面的插圖。

5

如果你選擇去重新定義映射的路線:

nnoremap k gk 
nnoremap j gj 

這裏是沿着相同的路線幾個人:

nnoremap 0 g0 
nnoremap $ g$ 
nnoremap^g^ 
4

我的首選策略,而跳來跳去排長是使用fFtT將人物歸零。是什麼讓這個家庭增壓運動的是,你可以利用;,運動,所以你不必指望相對於光標字符的位置,但只是通過他們步(有 '".非常有用等)

比方說,我們有一個線:

reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp(); 

如果我們需要從行的開頭跳轉到,比方說,第三點,我們可以使用3f.f.;;訪問兩個點和第三個着陸點。

雖然;,風格可以使用更多的按鍵,但我發現它更加靈活和有趣。

2

請注意,用跟隨向上或向下箭頭「G」確實工作得很好,但如果你有排長隊,快速移動,你可能會誤,並最終達到在文本上輸入「GG」 .. 。! (撤消不會給你帶來回來,據我所知沒有回到原來的位置一鍵按下的方式。)

它發生在我身上太多次。

我做什麼,我建議你,要修改(或創建)你的「〜/ .vimrc」和添加以下兩行:

map <C-Up> g<Up> 
map <C-Down> g<Down> 

這將映射你控制行動和控制 - 直至移動命令。會讓忘我的「gg」變得不可能,並且完全與控制權和控制權一致,從而在長線上移動。

如果添加這些兩行,你可以在插入模式下使用相同的命令(!)

imap <C-Up> <C-[> g<Up> i 
imap <C-Down> <C-[> g<Down> i 

(VIM是偉大的!)

格雷格若