什么是最常用的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>
可以让你退出任何模式并回到命令模式 - 前面的命令:在屏幕底部的命令行中执行
- :帮助任何命令
导航
- 光标移动:← h ↓ j ↑ k l→
- 用词:
- 下一个单词(用标点符号); W下一个单词(按空格)
- b后面的单词(用标点符号); B字(空格)
- e结束词(用标点符号); E结束词(按空格)
- 按行:
- 0开始行; ^第一个非空白
- $行结束
- 按段落:
- {前一个空行; }下一个空行
- 按文件:
- gg开始的文件; G结束的文件
- 123G去特定的行号
- 按标记:
- mx设置标记x ; 'x去标记x
- ”。 去上次编辑的位置
- “跳回去之前的最后一点
- 滚动:
- ^ F全屏前进; ^ B向后全屏
- ^ D下半屏; ^上半屏幕
- ^ E滚动一行; ^ Y向下滚动一行
- zz中心光标线
编辑
- ü撤消; ^ R重做
- 。 重复上次编辑命令
插入
所有插入命令都以<Esc>
结束,返回命令模式。
- 我在光标处插入文字; 我在行首插入文本
- 游标后附加文本; 行结束后的附加文本
- o在下面打开新的行; O打开上面的新行
更改
除r和R以外的所有更改命令均以<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将光标移动到块的另一端
- d或x将块剪切成粘贴缓冲区
- 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备忘单 :
大多数人所做的就是从最基本的东西开始,比如我 , yw , yy和p 。 您可以继续使用箭头键移动,使用鼠标select文本,使用菜单等。然后,当某些事情正在放慢速度时,您会查找更快的方式来执行此操作,并逐渐添加越来越多的命令。 你可能会每天学习一个新的命令一段时间,然后它会滴stream到每周一个。 一个月后你会觉得很有成效。 一年后,你会有一个非常稳固的曲目,2-3年之后,你甚至不会有意识地去思考你的手指是怎么打字的,而且如果你需要为某人拼写,那看起来很奇怪。 我在1993年学习了vi,每年仍然拿起2到3个新命令。
你有没有通过Vim的内置教程? 如果不是,请拖放到命令行并键入vimtutor
。 这是学习初始命令的好方法。
Vim拥有令人难以置信的灵活性和强大的function,如果你像大多数vim用户一样,你将学到许多新命令,忘记旧命令,然后重新学习它们。 内置的帮助很好,值得定期浏览学习新东西。
在互联网上有几个好的常见问题和vim表。 我build议searchvim + faq
和vim + cheatsheet
。 Cheat-Sheets.org#vim是一个很好的来源, Vim Tips wiki也是如此 。
@Greg Hewgill的cheatsheet是非常好的。 几个月前我开始从TextMate转换。 现在我和TM一样富有成效,并且一直为Vim的力量所惊叹。
这是我如何切换 。 也许它对你有用。
格罗索莫多,我不认为这是一个好主意,做一个彻底的开关。 Vim是非常不同的,最好逐步进行。
而回答你的问题,是的,我每天都用iaIAoO
来进入插入模式。 起初看起来很奇怪,但过了一段时间你就没有真正想过。
一些命令对于任何编程相关的任务都非常有用:
-
r
和R
来replace字符 -
<Ca>
和<Cx>
来增加和减less数字 - 改变HTML标签的内容,及其变体(
cat
,dit
,dat
,ci(
等) -
<Cx><Co>
(映射到,,
)omnicompletion - 用
<Cv>
可视化块select - 等等…
一旦习惯了Vim的方式,在编辑其他编辑器或文本框中的文本时,一直都不会碰到o
或x
。
我无法想象每个人都使用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”的结尾),但是只花了一个星期的时间才得到高效。 我仍然觉得它是最快捷的编辑器,能够完成任务。