Vim:在长线内快速移动

laawzig2  于 2023-03-02  发布在  其他
关注(0)|答案(8)|浏览(127)

我启用了自动换行功能,并且倾向于使用很长的行。但是在一个实际上有4行高的带有"w"的行中移动是很麻烦的。我一直使用/来跳转到我要查找的单词,但是这似乎有点过头了。
关于如何在一条线内更快地移动,有什么提示吗?
谢谢你,
B先生

j7dteeu8

j7dteeu81#

  • 您可以使用$0^移动到线条端点,然后使用wb。此外,向wb添加数字参数可以加快该过程,因此使用6w而不仅仅是w可以让您到达需要的位置。
  • 使用ft来移动到单个字符也会有所帮助。(我通常使用标点符号。例如,如果我有四个句子在一长行上,2f.将移动到第二个句子的末尾)
  • 使用()键是浏览整个句子的另一种方法。
  • 将长行拆分为多行(手动或使用set tw=72 [or 80])可以简化编辑。您可以随时在以后使用J将它们连接起来。
  • 我刚刚发现,你可以使用gjgk来上下移动一个显示的行。这样,你就可以把你的一个换行行当作多个换行行。

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

gcxthw6b

gcxthw6b2#

我认为你可以从gk和gj中受益,而不仅仅是k和j。
还可以查看'virtualedit'中的一些选项,这些选项允许您在“void”区域中移动光标,而无需将光标移动到下一个最佳物理字符。
你可能想(暂时)

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

忽略<buffer>部分,以便全局应用。

fcg9iug3

fcg9iug33#

您可以使用()按句子导航;它只查找.,但这会非常有用,特别是当你不喜欢这个句子并想修改它时:(c)将跳转到当前句子的开头,然后更改整个句子。
您还可以使用带有计数修饰符的we来移动单词。3w将一次移动三个单词。
您也可以使用fF向前或向后搜索特定字符。如果您要查找单词quitesyzygy,这比the更有用。:)

sqyvllje

sqyvllje4#

我的首选策略是使用fFtT来定位字符。这一系列动作超级强大的原因是你可以利用;,动作,这样你就不必计算字符相对于光标的位置。但是只需一步一步地通过它们(对`` '".等非常有用)
假设我们有一条线:

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

如果我们需要跳转到,比方说,从行首开始的第三个点,我们可以使用3f.f.;;访问两个点并停留在第三个点。
虽然;,风格可以使用更多的击键,但我发现它总体上更敏捷,更有趣。

d5vmydt9

d5vmydt95#

如果您选择走重新Map这些的路线:

nnoremap k gk
nnoremap j gj

以下是一些类似的例子:

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^
af7jpaap

af7jpaap6#

我最近开始使用一个插件,我发现它非常适合在一行(或整个文件)中快速移动。
该插件的名称是PreciseJump,您可以在here中找到它。
当你使用这个插件时,它定义了Map_f和_F。
如果你键入_f后接x,它将突出显示所有x字符,并将临时替换为其他字符,你可以按下这些字符跳转到该位置。请查看脚本页面的说明。

iaqfqrcu

iaqfqrcu7#

您还可以使用WB进行移动,它将跳到下一个空格:)G移动到文档末尾

4nkexdtk

4nkexdtk8#

请注意,使用“g”后面跟着向上或向下箭头确实工作得很好,但如果你有很长的行和快速移动,你可能会错误地输入“gg”,并结束了在文本的顶部...!(撤销不会带你回来,AFAIK有没有一键按下的方式回到你在哪里。
我经历过太多次了。
我所做的是,我建议你,修改(或创建)你的“~/.vimrc”,并添加这两行:

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

这将把你的向上控制和向下控制Map到移动命令上。将使错误输入“gg”成为不可能的,并且与向左控制和向右控制完全一致,可以在长的线上移动。
如果添加这另外两行,则可以在插入模式下使用相同的命令(!)

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

(VIM太棒了!)
格雷格·若

相关问题