Vim:在长线内快速移动

我已经启用了自动换行function,并且往往有相当长的行数。 但是在“w”这个实际上是4行的行内移动很麻烦。 我一直使用/跳到我正在寻找的单词,但似乎过分了一点。

任何提示如何更快地行内?

谢谢,

MRB

  • 您可以使用$0^移动到行终点,然后使用wb 。 另外,向wb添加一个数字参数可以加速这个过程,所以使用6w而不是w可以把你放到需要的地方。
  • 使用ft移动到单个字符也将有所帮助。 (我通常用这个标点符号,例如,如果我在一条长长的一行上有四个句子,就会到第二个句子的末尾)
  • 使用()键是导航整个句子的一种替代方法。
  • 将长线分成多行(手动或者set tw=72 [或80])可以使编辑变得更简单。 你可以随时joinJ
  • 我刚刚发现的东西,可以通过使用gjgk上下移动显示的一行。 这样,你可以把你的一个包装行作为多行。

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

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

另外看一下'virtualedit'的一些选项,允许你通过“空白”区域的光标,而不用将光标轻弹到下一个最好的物理字符。

你可能想(暂时)

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

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

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

你也可以使用we和count修饰符来移动单词。 3w会一次移动三个字。

您也可以使用fF向前和向后search特定的字符。 如果你正在寻找比the词更syzygy或者更syzygy的词,那么这会更有用。 🙂

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

 nnoremap k gk nnoremap j gj 

这里还有其他一些其他人:

 nnoremap 0 g0 nnoremap $ g$ nnoremap ^ g^ 

我的首选策略是在使用f Ft T来调整angular色的时候。 是什么让这个运动家庭超负荷的是,你可以利用; 和运动,所以你不必计算相对于光标的angular色的位置,而只是通过他们(与非常有用的 ' "等)

假设我们有一条线:

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

如果我们需要跳到从行首开始的第三个点,我们可以使用3f.f.;; 前往两点,落地第三。

虽然; ,风格可以使用更多的击键,我发现整体更加灵活和有趣。

我最近开始使用一个插件,我发现非常快速地在一行(或孔文件)内移动。

插件的名字是PreciseJump,你可以在这里find它。

当你使用这个插件时,它定义为映射_f和_F。

如果您键入_f后跟x,则会突出显示所有x个字符,并将临时replace为您可以按下以跳转到该位置的其他字符。 检查脚本页面的插图。

您也可以用W B移动,跳到下一个空格:) G移动到文档的末尾

请注意,使用“g”,然后使用“上”或“下”箭头确实可以正常工作,但是如果您有很长的线条并且很快就会移动,您可能会错误地input“gg”,并在文本的顶部结束。 (撤消不会让你回来,而且AFAIK没有一个按键的方式可以回到你所在的位置。)

这发生在我身上太多次了。

我所做的是,我build议你修改(或创build)你的“〜/ .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很棒!)

Greg Ruo