什么是最常用的vim命令/按键?

我是一个试图从Textmate切换到MacVim的Ruby编程,而且我无法浏览VIM中可以做的大量事情以及所有的按键。 我厌倦了听到“你可以用'I'来插入文字,或'a'用于在文字后添加文字,或者'A'用于在文字末尾添加文字,或者…'我无法想象每个人都使用全部20个不同的按键来浏览文本,10个左右的按键来开始添加文本,18个方式来直观地select一个内部的块。 或者你呢?

我的理想作弊表将是每个人每天用来编写代码的30-40个最常用的按键或命令,以及ruby主义者每天使用的绝对基本插件和10个最常用的命令。 理论上讲,一旦我有了这些,并开始像在Textmate一样精通VIM, 那么我就可以开始学习其他成千上万的VIM命令,这将使我更有效率。

或者,我是否完全错误地学习VIM?

这里有一个我曾经写过的小贴士,我经常使用的命令是:

参考

  • vim文档在线
  • 先进的vim技巧
  • 更有用的提示和graphics化的备忘单

一般

  • 几乎所有的命令都可以在一个数字前面进行重复计数。 例如。 5dd删除5行
  • <Esc>可以让你退出任何模式并回到命令模式
  • 前面的命令在屏幕底部的命令行中执行
  • :帮助任何命令

导航

  • 光标移动:← hjk l→
  • 用词:
    • 下一个单词(用标点符号); W下一个单词(按空格)
    • b后面的单词(用标点符号); B字(空格)
    • e结束词(用标点符号); E结束词(按空格)
  • 按行:
    • 0开始行; ^第一个非空白
    • $行结束
  • 按段落:
    • {前一个空行; }下一个空行
  • 按文件:
    • gg开始的文件; G结束的文件
    • 123G去特定的行号
  • 按标记:
    • mx设置标记x ; 'x去标记x
    • ”。 去上次编辑的位置
    • 跳回去之前的最后一点
  • 滚动:
    • ^ F全屏前进; ^ B向后全屏
    • ^ D下半屏; ^上半屏幕
    • ^ E滚动一行; ^ Y向下滚动一行
    • zz中心光标线

编辑

  • ü撤消; ^ R重做
  • 重复上次编辑命令

插入

所有插入命令都以<Esc>结束,返回命令模式。

  • 在光标处插入文字; 在行首插入文本
  • 游标后附加文本; 行结束后附加文本
  • o在下面打开新的行; O打开上面的新行

更改

rR以外的所有更改命令均以<Esc>结束以返回命令模式。

  • rreplace单个字符; Rreplace多个字符
  • 改变单个字符
  • cw改词; C改为行尾; cc改变整个行
  • c <motion>在运动方向上改变文本
  • ci(在圆括号内改变(更多示例请参阅文本对象select )

删除

  • x删除字符
  • dw删除单词; D删除到行尾; dd删除整行
  • d <motion>在运动方向上删除

剪切和粘贴

  • yy将行复制到粘贴缓冲区; dd剪切成糊状缓冲区
  • 在光标行下面的p贴上缓冲区; 在光标行上面粘贴缓冲区
  • xp交换两个字符( x删除一个字符,然后p把它放回光标位置之后)

  • v视觉块stream; V视觉阻挡线; ^ V视觉块列
    • 大多数运动命令将块扩展到新的光标位置
    • o将光标移动到块的另一端
  • dx将块剪切成粘贴缓冲区
  • y将块复制到粘贴缓冲区中
  • >缩进块; < unindent块
  • gv重新select最后的视觉块

全球

  • :%s / foo / bar / g 将所有出现的“foo” replace为“bar”
    • %是指示文件中每一行的范围
    • / g是一个标志,它改变了一行中的所有事件,而不是第一个事件

search

  • /向前search; 向后search
  • *在光标下向前search单词; 向下search光标下的单词
  • ñ下一场比赛在同一方向; N下一场相反的方向
  • fx转发到下一个字符x ; Fx返回到前一个字符x
  • ; 再次移动到相同方向的同一个字符; 再次移动到相反的方向相同的字符

  • :w将文件写入磁盘
  • :w name将文件写入磁盘作为name
  • ZZ将文件写入磁盘并退出
  • :n编辑一个新文件; :N! 编辑新文件而不保存当前的更改
  • :q退出编辑文件; :Q! 退出编辑而不保存更改
  • :e再次编辑相同的文件(如果在vim之外更改)
  • :e。 目录浏览器

视窗

  • ^ Wn新窗口
  • ^ Wj下到下一个窗口; ^上一个窗口
  • ^ W_最大化当前窗口; ^ W =使所有窗口大小相等
  • ^ W +增加窗口大小; ^ W-减less窗口大小

源导航

  • 如果加载语言模块,则跳转到匹配的括号/括号/括号或语言块
  • gd去光标下的本地符号的定义; ^ O回到以前的位置
  • ^]跳转到全局符号的定义(需要tags文件); ^ T返回到前一个位置(维持任意的位置)
  • ^ N (在插入模式下)自动完成字词

显示本地更改

Vim有一些function,可以轻松地突出显示源代码控制中基本版本已更改的行。 我已经创build了一个小的vim脚本,这使得这个简单: http : //github.com/ghewgill/vim-scmdiff

这是一个伟大的vim备忘单 :

在这里输入图像说明

大多数人所做的就是从最基本的东西开始,比如ywyyp 。 您可以继续使用箭头键移动,使用鼠标select文本,使用菜单等。然后,当某些事情正在放慢速度时,您会查找更快的方式来执行此操作,并逐渐添加越来越多的命令。 你可能会每天学习一个新的命令一段时间,然后它会滴stream到每周一个。 一个月后你会觉得很有成效。 一年后,你会有一个非常稳固的曲目,2-3年之后,你甚至不会有意识地去思考你的手指是怎么打字的,而且如果你需要为某人拼写,那看起来很奇怪。 我在1993年学习了vi,每年仍然拿起2到3个新命令。

你有没有通过Vim的内置教程? 如果不是,请拖放到命令行并键入vimtutor 。 这是学习初始命令的好方法。

Vim拥有令人难以置信的灵活性和强大的function,如果你像大多数vim用户一样,你将学到许多新命令,忘记旧命令,然后重新学习它们。 内置的帮助很好,值得定期浏览学习新东西。

在互联网上有几个好的常见问题和vim表。 我build议searchvim + faqvim + cheatsheet 。 Cheat-Sheets.org#vim是一个很好的来源, Vim Tips wiki也是如此 。

@Greg Hewgill的cheatsheet是非常好的。 几个月前我开始从TextMate转换。 现在我和TM一样富有成效,并且一直为Vim的力量所惊叹。

这是我如何切换 。 也许它对你有用。

格罗索莫多,我不认为这是一个好主意,做一个彻底的开关。 Vim是非常不同的,最好逐步进行。

而回答你的问题,是的,我每天都用iaIAoO来进入插入模式。 起初看起来很奇怪,但过了一段时间你就没有真正想过。

一些命令对于任何编程相关的任务都非常有用:

  • rR来replace字符
  • <Ca><Cx>来增加和减less数字
  • 改变HTML标签的内容,及其变体( catditdatci(等)
  • <Cx><Co> (映射到,, )omnicompletion
  • <Cv>可视化块select
  • 等等…

一旦习惯了Vim的方式,在编辑其他编辑器或文本框中的文本时,一直都不会碰到ox

我无法想象每个人都使用20个不同的按键来浏览文本,10个左右的按键来开始添加文本,18个方式来直观地select一个内部的块。 或者你呢?

我做。

从理论上讲,一旦我有了这些,并开始像在Textmate一样精通VIM,那么我就可以开始学习成千上万的VIM命令,这将使我更有效率。

这是正确的做法。 从基本的命令开始,然后select提高您的生产力。 我喜欢关注这个博客 ,了解如何通过vim提高我的工作效率。

tuxfiles.org拥有一个相当不错的备忘单。 我认为有几点要学习命令:

  • 定期阅读备忘单。 不要担心使用它们,或者记住所有的键,只要知道该命令存在。 当你发现自己在做重复的事情时,查看命令并使用它。
  • 如果你发现自己经常做某些事情(比如在特定字符d$之后删除整行),请快速search一下,看看是否可以find它的命令。
  • 写下你认为有用的命令,并在编写代码时将该列表保留在可以看到的地方。 我会反对打印一些东西,而是鼓励你一次只用几个命令来使用便签。
  • 如果可能,请注意其他程序员使用vim,并询问他们正在使用什么命令,因为您看到他们做了一些有趣的事情。

除了这些提示,还有一些你应该理解的基本概念。

  • vim将使用相同的字符来表示相同的function。 例如,要在字符后面使用d$删除一行。 突出显示特定字符​​之后的行使用v$ 。 所以注意, $表示你将会在当前光标所在的行的末尾做一些事情。
  • u是撤消, ctrl+r是重做。
  • 把一个数字放在一个命令前面会反复执行它。 3dd会删除你的光标所在的行和3yy的两行,类似地3yy会复制光标所在的行和3yy的两行。
  • 了解如何浏览缓冲区,使用:ls列出缓冲区,以及:bn:bp来遍历它们。
  • 仔细阅读下面的教程:help这可能是“学习绳索”的最好方法,而其他命令则是通过使用学习的。

把它放在你的.bashrc中,用最后一次编辑的文件在最后编辑的行中打开vim

 alias vil="vim +\"'\"0" 

使用vim进行高效编辑,并学习你需要开始的东西。 并非所有页面上的内容都是必不可less的,所以樱桃select你想要的。

从那里,使用Vim的一切。 即使不是最有效的方法,“hjkl”,“y”和“p”也会让你走的很远。 当你面对一个你不知道要做什么的魔法关键的任务时(或者根本不可能),而且你发现自己已经做了几次以后,就去查看一下。 一点一点地成为第二天性。

我发现vim在很多个月前都变得艰巨(回来的时候没有“m”的结尾),但是只花了一个星期的时间才得到高效。 我仍然觉得它是最快捷的编辑器,能够完成任务。