在vim中移动的首选方式(普通模式)

时间:2011-10-06 18:15:47

标签: vim

我还没有在stackoverflow上看过这个问题,这是我在vim中最大的痛点:

你们如何在文件中导航?我发现自己使用hjkl太多,或者过于重复,我希望在这方面做得更好。当你在大型显示器上时,这很令人沮丧。

我安装了EasyMotion - 到目前为止它对我有好处 - 我只是想知道是否有更好的东西......

谢谢!

8 个答案:

答案 0 :(得分:20)

我喜欢cheatsheet of Ted Naleid。它就像一个十字线,因此您可以轻松找到水平和垂直运动。把它放在显示器旁边的墙上,你很快就会发现新的动作。

我最近喜欢的动作是:

  • ()和{}允许您在源代码中跳转功能
  • /和? + n / N只是搜索,你通常知道你想去哪里
  • fx和tx - 跳转到下一个字符x或之前 当然你可以做2fx跳到x的第二次出现,就像你可以做所有动作一样
  • %在开始和结束括号之间移动

答案 1 :(得分:9)

我使用bw分别在一行上左右移动。对于向上和向下,我分别使用Ctrl+uCtrl+d。 IMO Ctrl+uCtrl+d优于Ctrl+bCtrl+f,因为它们一次滚动半窗口,因此您不会丢失上下文。

到目前为止,我还没有真正使用任何插件在vim中移动。

忘了提及另外两个重要的击键,$^分别移到行尾和行的开头。

答案 2 :(得分:7)

几个移动命令:

b B e E f F ge gE gj gk go G h H j k l L M n N t T w W { } / ? ^ $ # * ` ' | % 

了解它们,加上所有以[开头的命令,如[{,这在编辑C风格的代码时非常有用......

请参阅:help index.txt以供参考。

答案 3 :(得分:3)

这取决于你想要如何移动,但一般来说,

  • A会让您在行尾的插入模式下
  • I开头
  • o
  • 下面插入一行
  • O以上

并且更有力,使用/<thing you want to jump to>进行搜索非常方便。在函数格式化的c文件中

int
funcname()

/^funcname将跳转到函数的开头。还有更多,但这对于vim的新手来说是一个良好的开端。

答案 4 :(得分:3)

大多数情况下,我使用以下(按频率顺序):

  • ' R 转到标记位置(`太离基线键盘使用太多了)
  • / 搜索 | 搜索 向前|向后搜索
  • n | N next | previous in search
  • H | L | M top | bottom |显示中间
  • G 转到文件末尾
  • 1G 转到第1行
  • {向后退'段'(通常是代码块)
  • } 前进一个'段'

大多数所有这些都可以在命令之前使用计数进行扩充。

答案 5 :(得分:2)

简单文档:
http://vim.wikia.com/wiki/Moving_around

定期运动:
hjkl /箭头键/页面向上/向下翻页
%将在打开/结束括号之间切换 gg / G移到顶部/底部

折叠:
对于折叠大块代码,您可以使用折叠 http://vimdoc.sourceforge.net/htmldoc/fold.html

搜索:
跳转到特定类型/searchstring的某些内容(与set inc一起使用,以便在输入时跳转到匹配)
*向前搜索光标所在的同一个词 #相同但向后搜索

您也可以使用标记 http://vim.wikia.com/wiki/Using_marks

我还使用ctags跳转来查找多个文件中的内容 http://vimdoc.sourceforge.net/htmldoc/tagsrch.html

我从来不需要任何其他东西。

答案 6 :(得分:1)

我在一般启蒙方面并没有多少添加,但我使用(根据我使用它们的次数排名):

w and b

向右和向左移动一个单词。

/ and ?

在底部或顶部搜索单词或图案。

G and gg

跳到缓冲区的底部和顶部。

<C-f> and <C-b>

跳转到下一个和上一个屏幕。

* and #

跳转到光标下单词的下一个和上一个出现。

f and F

在字符向右或向左跳转。

t and T

向右或向左跳跃角色。

何!和

$ and ^

也很多,跳到一行的结尾和开头。

答案 7 :(得分:0)

阅读http://www.viemu.com/a-why-vi-vim.html并运行vimtutor,同时:help motion.txt将非常有用。我建议始终保持正常模式 - 如上文所述。一般来说,学习vim是学钢琴 - 你必须多练习。