繁体   English   中英

Vim:在长线内快速移动

[英]Vim: move around quickly inside of long line

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

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

谢谢,

MRB

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

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

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

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

你可能想(暂时)

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

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

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

您还可以使用带有计数修饰符的we来移动单词。 3w将一次移动三个单词。

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

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

nnoremap k gk
nnoremap j gj

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

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^

跳过长线时我喜欢的策略是使用f Ft T来对齐字符。 是什么让这一系列的运动增压是你可以利用; 并且,运动,所以你不必计算角色相对于光标的位置,而只是逐步通过它们(非常有用的 ' ".

假设我们有一条线:

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

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

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

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

该插件的名称是PreciseJump,你可以在这里找到它。

当您使用此插件时,它定义为映射_f和_F。

如果您键入_f后跟x,它将突出显示所有x个字符,并将暂时替换为您可以按下以跳转到该位置的其他字符。 查看脚本页面以获取插图。

请注意,使用“g”后跟向上或向下箭头确实可以正常工作,但如果你有很长的行并快速移动,你可能会错误地输入“gg”并最终在文本的顶部......! (撤消不会让你回来,而AFAIK没有一键式的方式回到原来的位置。)

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

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

格雷格若

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM