Vim:在长线内快速移动

MrB*_*les 51 vim

我启用了自动换行,并且往往有很长的行.但是在"w"实际上是4行高的线内移动是很麻烦的.我一直在使用/跳到我正在寻找的那个词,但这似乎有些过分了.

关于如何在一条线内快速移动的任何提示?

谢谢,

MRB

yan*_*yan 96

  • 您可以使用$,, 0^移动到行端点,然后使用wb.此外,添加一个数字参数wb可以加速该过程,因此使用6w而不是只是w可以让你到达你需要的地方.
  • 使用ft移动到单个角色也会有所帮助.(我通常使用标点符号.例如,如果我在一条长行上有四个句子2f.将转到第二句末尾)
  • 使用()键是导航整个句子的另一种方法.
  • 将长行拆分为多行(手动或set tw=72[或80])可以使编辑更简单.您以后可以随时加入J.
  • 这是我刚刚发现,你可以上下移动一个显示用线gjgk.这样,您可以将您的一条包裹线视为多条线.

如果您对正在编辑的数据类型发表评论,可能会使我们更容易提出建议.

  • `gm`转到屏幕中间的字符 (11认同)
  • 'gj`和`gk`都可以用等效箭头完成,即`g <arrow-up>`和`g <arrow-down>`.非常感谢! (9认同)
  • 谢谢你的回答(特别是关于`gj`和`gk`的提示!) (2认同)

seh*_*ehe 23

我想你可以从gk和gj中受益,而不仅仅是k和j.

另请'virtualedit'参阅一些选项,这些选项允许您在没有将光标移动到下一个最佳物理角色的情况下光标通过"void"区域.

你可能想(暂时)

nnoremap <buffer> k gk
nnoremap <buffer> j gj
Run Code Online (Sandbox Code Playgroud)

省略<buffer>部分以全局应用.


sar*_*old 6

你可以使用()按句子导航; 它只是寻找.,但这可能是非常有帮助的,特别是如果你不喜欢这个句子并想要改变它:(c)将跳到当前句子的开头,然后改变整个句子.

您还可以使用wand e和count修饰符来移动单词.3w将一次移动三个字.

您还可以使用fF向前和向后搜索特定字符.这是更为有用的,如果你正在寻找的字quitesyzygythe.:)


Nic*_*son 6

如果您选择重新映射这些路线:

nnoremap k gk
nnoremap j gj
Run Code Online (Sandbox Code Playgroud)

这里有几个沿着同样的路线:

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^
Run Code Online (Sandbox Code Playgroud)


dne*_*ets 5

跳过长线时我首选的策略是使用f Ft T对角色进行归零.使这一系列动作增压的原因在于你可以利用;,运动,所以你不必计算角色相对于光标的位置,而只需逐步通过它们(非常有用 ' " .等)

假设我们有一条线:

reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp();
Run Code Online (Sandbox Code Playgroud)

如果我们需要从线的开头跳到第三个点,我们可以使用3f.或者f.;;访问两个点并着陆到第三个点.

虽然; , 风格可以使用更多的按键,但我发现它整体上更加灵活和有趣.