Vim 维姆:在长线内快速移动
我启用了自动换行功能,而且往往有很长的行。 但是在一条实际上有4行高的线里面移动,加上“w”是很麻烦的。我一直在使用/跳转到我要找的词,但这似乎有点过头了 有没有关于如何在一条线内更快移动的提示 谢谢 MrBVim 维姆:在长线内快速移动,vim,Vim,我启用了自动换行功能,而且往往有很长的行。 但是在一条实际上有4行高的线里面移动,加上“w”是很麻烦的。我一直在使用/跳转到我要找的词,但这似乎有点过头了 有没有关于如何在一条线内更快移动的提示 谢谢 MrB 您可以使用$、0和^移动到线条端点,然后使用w和b。另外,在w和b中添加一个数值参数可以加快这个过程,因此使用6w而不仅仅是w可以帮助您找到需要的位置 使用f和t移动到单个字符也会有所帮助。(我通常将其与标点符号一起使用。例如,如果我在一条长线上有四个句子2f.将转到第二个句子的末尾) 使
- 您可以使用
、$
和0
移动到线条端点,然后使用^
和w
。另外,在b
和w
中添加一个数值参数可以加快这个过程,因此使用b
而不仅仅是6w
可以帮助您找到需要的位置w
- 使用
和f
移动到单个字符也会有所帮助。(我通常将其与标点符号一起使用。例如,如果我在一条长线上有四个句子t
将转到第二个句子的末尾)2f.
- 使用
和(
键是浏览整个句子的另一种方式)
- 将长行拆分为多行(手动或使用
[或80])可以简化编辑。您可以随时在以后使用set tw=72
加入它们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