Vim 维姆:在长线内快速移动

Vim 维姆:在长线内快速移动,vim,Vim,我启用了自动换行功能,而且往往有很长的行。 但是在一条实际上有4行高的线里面移动,加上“w”是很麻烦的。我一直在使用/跳转到我要找的词,但这似乎有点过头了 有没有关于如何在一条线内更快移动的提示 谢谢 MrB 您可以使用$、0和^移动到线条端点,然后使用w和b。另外,在w和b中添加一个数值参数可以加快这个过程,因此使用6w而不仅仅是w可以帮助您找到需要的位置 使用f和t移动到单个字符也会有所帮助。(我通常将其与标点符号一起使用。例如,如果我在一条长线上有四个句子2f.将转到第二个句子的末尾) 使

我启用了自动换行功能,而且往往有很长的行。 但是在一条实际上有4行高的线里面移动,加上“w”是很麻烦的。我一直在使用/跳转到我要找的词,但这似乎有点过头了

有没有关于如何在一条线内更快移动的提示

谢谢

MrB

  • 您可以使用
    $
    0
    ^
    移动到线条端点,然后使用
    w
    b
    。另外,在
    w
    b
    中添加一个数值参数可以加快这个过程,因此使用
    6w
    而不仅仅是
    w
    可以帮助您找到需要的位置
  • 使用
    f
    t
    移动到单个字符也会有所帮助。(我通常将其与标点符号一起使用。例如,如果我在一条长线上有四个句子
    2f.
    将转到第二个句子的末尾)
  • 使用
    键是浏览整个句子的另一种方式
  • 将长行拆分为多行(手动或使用
    set tw=72
    [或80])可以简化编辑。您可以随时在以后使用
    J
    加入它们
  • 我刚刚发现,您可以使用
    gj
    gk
    上下移动显示的行。这样,您就可以将一条包装线视为多条线
如果您对正在编辑的数据类型进行评论,我们可能会更容易提出建议。

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

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


您还可以使用
f
f
向前和向后搜索特定字符。如果您正在查找单词
quite
syzygy
,那么这比
中的
有用得多:)

您还可以使用
W
B
四处移动,这将跳到下一个空格:)
G
移到文档末尾

我认为您可以从gk和gj中受益,而不仅仅是k和j

另请查看
'virtualedit'
中的一些选项,这些选项允许您在“void”区域中使用光标,而无需将光标移动到下一个最佳物理字符

你可能想(暂时)

nnoremap k gk
nnoremap j gj

省去
部分以全局应用此功能。

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

该插件的名称是PreciseJump,您可以找到它

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


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

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

nnoremap k gk
nnoremap j gj
以下是与此类似的其他几点:

nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^

当我在长行中跳跃时,我的首选策略是使用
f
f
t
t
将字符归零。这一系列动作之所以具有超强动力,是因为您可以利用
运动,因此您不必计算字符相对于光标的位置,只需一步一步地遍历它们(对于
等)

假设我们有一条线:

reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp();
如果我们需要跳到,比如说,从行首开始的第三个点,我们可以使用
3f.
f.;;
访问两个点并在第三个点着陆

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

请注意,使用“g”后跟向上或向下箭头确实可以很好地工作,但是如果您有很长的行并且移动很快,您可能会错误地输入“gg”,并最终出现在文本的顶部。。。!(撤销不会让你回到原来的位置,而且恐怕没有一个按键可以让你回到原来的位置。)

这件事发生在我身上太多次了

我所做的是,我建议您修改(或创建)您的“~/.vimrc”,并添加以下两行:

map <C-Up> g<Up>
map <C-Down> g<Down>
mapg
地图g
这将把你的控制向上和向下映射到移动命令。这将使错误输入“gg”成为不可能,并且与左右控制在长线上移动完全一致

如果添加其他两行,则可以在插入模式下使用相同的命令(!)

imap g i
imap g i
(维姆很棒!)


Greg Ruo

这是我使用的解决方案。非常方便。上下箭头仍然保留移动到上一行和下一行的传统行为。
gj
gk
也可以使用等效箭头来完成,即
g
g
。非常感谢!
gm
转到中间的字符感谢您的回答(特别是关于
gj
gk
!)注意
g
技巧的概括。
g0
会将您移到显示行的开头,而
g$
会将您移到显示行的末尾。感谢使用
的提示)
导航句子。当L或R shift仅映射到相应的括号时,效果很好。请尝试
ctrl+o
返回到以前的位置,或者您可以通过键入
:marks从正常位置查看位置
map <C-Up> g<Up>
map <C-Down> g<Down>
imap <C-Up> <C-[> g<Up> i
imap <C-Down> <C-[> g<Down> i