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

Cli*_*udy 101 vim keyboard-shortcuts macvim

我是一个试图从Textmate切换到MacVim的Ruby编程,而且我无法浏览你在VIM中可以做的庞大的事情列表以及它们的所有按键.我已经厌倦了"你可以使用'我'来插入文字,或者'a'用于在文字后添加文字,或'A'用于在文字末尾添加文字,或者......"我无法想象每个人都使用所有20个不同的按键来导航文本,10个左右的按键开始添加文本,以及18种方式来直观地选择内部块.或者你呢?

我理想的备忘单是30-40个最常用的按键或命令,每个人每天用来编写代码,以及rubyists每天使用的绝对必要插件和10个最常用的命令.从理论上讲,一旦我拥有它并开始像在Textmate中那样精通VIM,那么我就可以开始学习成千上万的其他VIM命令,这些命令会让我更有效率.

或者,我是否完全以错误的方式学习VIM?

Gre*_*ill 281

这是我写过一次的提示表,其中包含我实际使用的命令:

参考

一般

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

导航

  • 光标移动:← hjk l→
  • 用语言:
    • w下一个词(通过标点符号); W下一个字(按空格)
    • b背单词(用标点符号); B背单词(按空格)
    • e结束词(通过标点符号); E结束词(按空格)
  • 按行:
    • 0开始行; ^第一个非空格
    • $ end of line
  • 按段落:
    • {前一空白行; }在下一个空行
  • 按档案:
    • gg文件开头; G文件结束
    • 123G转到特定的行号
  • 按标记:
    • mx set mark x ; 'x去标记x
    • ".转到最后编辑的位置
    • "在跳跃之前回到最后一点
  • 滚动:
    • ^ F前进全屏; ^ B向后全屏
    • ^ D下半屏; ^ U半屏幕
    • ^ E滚动一行; ^ Y向下滚动一行
    • zz中心光标线

编辑

  • 撤消; ^ R重做
  • .重复上一个编辑命令

插入

终止所有插入命令<Esc>以返回命令模式.

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

更改

rR之外的所有更改命令都将终止,<Esc>以返回命令模式.

  • r替换单个字符; R替换多个字符
  • 小号改变单个字符
  • cw改变词; C改为行尾; cc改变整条线
  • c<motion>按动作方向改变文本
  • ci(在括号内更改(有关更多示例,请参阅文本对象选择)

删除

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

剪切和粘贴

  • yy复制线进入粘贴缓冲区; dd切割成粘贴缓冲区
  • p粘贴在光标线下面的缓冲区; P粘贴缓冲区在光标线上方
  • xp交换两个字符(x删除一个字符,然后p将其放回光标位置后)

  • v视觉块流; V视觉块线; ^ V视觉块列
    • 大多数动作命令将块扩展到新的光标位置
    • o将光标移动到块的另一端
  • dx将块切割成糊状缓冲区
  • y将块复制到粘贴缓冲区中
  • >缩进块; < unindent block
  • gv重新选择最后一个视觉块

全球

  • :%s/foo/bar/g 所有出现的"foo" 替换为"bar"
    • %是表示文件中每一行的范围
    • / g是一个标志,它可以更改一行中的所有匹配项而不是第一行

搜索

  • /向前搜索; 向后搜索
  • *向前搜索光标下的单词; #向后搜索光标下的单词
  • Ñ在相同的方向上的下一场比赛; N下一场比赛相反
  • fx前进到下一个字符x ; Fx向后回到前一个字符x
  • ; 再次朝同一个方向移动; ,再向相反的方向移动到相同的角色

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

视窗

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

来源导航

  • %跳转到匹配的括号/括号/括号,或语言块加载语言模块
  • gd去光标下定义局部符号; ^ O返回上一个位置
  • ^]跳转到全局符号的定义(需要tags文件); ^ T返回上一个位置(保持任意位置堆栈)
  • ^ N(在插入模式下)自动单词完成

显示本地更改

Vim具有一些功能,可以轻松突出显示源控件中基本版本更改的行.我创建了一个小的vim脚本,使这很简单:http://github.com/ghewgill/vim-scmdiff

  • 好的cheatsheet.我会添加**^ w ^ w**来循环浏览窗口,**:x**而不是**ZZ**以保持一致性,**tx**forward _before_ character和**Tx**back. (2认同)
  • 如果你想避免使用`Esc`键(和RSI?),你可以使用`^ [`.`^ c`也有效(但不扩展缩写).资料来源:http://vim.wikia.com/wiki/Avoid_the_escape_key (2认同)

Jus*_*mas 20

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

这是学习VIM最棒的事情.

  • 让我感到惊讶的是,发布一个链接(已经被发布到死亡已经btw)吸引了这么多的关注,而其他海报投入的额外里程不... (4认同)
  • 如果你没有qwerty键盘,"图形"部分是没用的. (3认同)

RDL*_*RDL 11

这是vim的一个很好的备忘单:

在此输入图像描述