【发布时间】:2011-03-29 21:06:49
【问题描述】:
我启用了自动换行,并且往往有很长的行。 但是在一条实际上是 4 行高的行内移动,并带有“w”是很麻烦的。我一直使用 / 来跳转到我正在寻找的单词,但这似乎有点过头了。
关于如何在一行内更快移动的任何提示?
谢谢,
B先生
【问题讨论】:
标签: vim
我启用了自动换行,并且往往有很长的行。 但是在一条实际上是 4 行高的行内移动,并带有“w”是很麻烦的。我一直使用 / 来跳转到我正在寻找的单词,但这似乎有点过头了。
关于如何在一行内更快移动的任何提示?
谢谢,
B先生
【问题讨论】:
标签: vim
$、0 和^ 移动到线端点,然后使用w 和b。此外,将数字参数添加到 w 和 b 可以加速该过程,因此使用 6w 而不仅仅是 w 可以让您到达您需要的位置。f 和t 移动到单个字符也会有所帮助。 (我通常将它与标点符号一起使用。例如,如果我在一长行中有四个句子2f. 将转到第二句的末尾)( 和 ) 键是浏览整个句子的另一种方法。set tw=72 [或80])可以使编辑更简单。您以后可以随时通过J 加入他们。gj 和gk 上下移动显示的 行。这样一来,您就可以将一个换行视为多行。如果您对正在编辑的数据类型发表评论,我们可能会更容易提出建议。
【讨论】:
gj 和 gk 也可以用等效的箭头来完成,即 g<arrow-up> 和 g<arrow-down>。非常感谢!
gm 转到屏幕中间的字符
gj 和gk 的提示!)
g 技巧是泛化的。 g0 会将您移至显示行的开头,g$ 会将您移至显示行的末尾。
( 和 ) 导航句子的提示。当您将 L 或 R 仅移位映射到它们各自的括号时,效果很好。
我认为你可以从 gk 和 gj 而不仅仅是 k 和 j 中受益。
另请查看'virtualedit' 中的一些选项,这些选项可让您在“空白”区域中进行光标移动,而无需将光标移至下一个最佳物理字符。
你可能想要(暂时)
nnoremap <buffer> k gk
nnoremap <buffer> j gj
省略<buffer> 部分以全局应用。
【讨论】:
您可以使用(和)进行逐句导航;它只是寻找.,但这非常有用,尤其是如果您不喜欢该句子并想更改它:(c) 将跳到当前句子的开头,然后更改整个句子。
您还可以使用带有计数修饰符的w 和e 来移动单词。 3w 将一次移动三个单词。
您还可以使用f 和F 向前和向后搜索特定字符。如果您要查找单词quite 或syzygy,这比the 更有用。 :)
【讨论】:
我在排长队时首选的策略是使用f F 和t T 将角色归零。使这一系列动作超强的原因在于您可以利用; 和, 动作,因此您不必计算字符相对于光标的位置,而只需单步执行即可(非常有用的
'".等)
假设我们有一条线:
reallyLongObjectName.longMethod().prettyPrettyLongMethod().burp();
如果我们需要跳到行首的第三个点,我们可以使用3f. 或f.;; 访问两个点并落在第三个点。
虽然; , 样式可以使用更多的击键,但我发现它整体上更加灵活和有趣。
【讨论】:
如果您选择重新映射这些路线:
nnoremap k gk
nnoremap j gj
这里还有几个类似的:
nnoremap 0 g0
nnoremap $ g$
nnoremap ^ g^
【讨论】:
我最近开始使用一个插件,我发现它非常适合在一行(或洞文件)内快速移动。
插件的名字是PreciseJump,你可以找到它here。
当你使用这个插件时,它定义了映射 _f 和 _F。
如果您键入 _f 后跟 x,它将突出显示所有 x 字符,并将临时替换为您可以按以跳转到该位置的其他字符。检查脚本页面以获取插图。
【讨论】:
您还可以使用W B 移动,这将跳到下一个空格:)
G 移动到文档末尾
【讨论】:
请注意,使用“g”后跟向上或向下箭头确实可以正常工作,但是如果您的行长且移动速度很快,您可能会错误地输入“gg”并最终出现在文本的顶部... ! (撤消不会把你带回来,而且AFAIK没有一键按下的方式回到你原来的位置。)
这种事发生在我身上太多次了。
我所做的是,我建议你修改(或创建)你的“~/.vimrc”并添加这两行:
map <C-Up> g<Up>
map <C-Down> g<Down>
这会将您的控制向上和控制向下映射到移动命令。将使错误输入“gg”成为不可能,并且与 control-right 和 control-left 完全一致,可以绕长线移动。
如果你添加这两行,你可以在插入模式下使用相同的命令(!)
imap <C-Up> <C-[> g<Up> i
imap <C-Down> <C-[> g<Down> i
(VIM 很棒!)
格雷格若
【讨论】:
ctrl+o 回到之前的位置
:marks然后'd移动到标记d来查看位置