2011-03-29 43 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是伟大的!)

格雷格若