转载:http://linux.chinaunix.net/techdoc/desktop/2009/01/03/1056322.shtml

一步一步学习Vim 全图解释
以下注释,根据图示和自己实践自己阐述,能力有限,错误之处,诸位可以提醒更正,谢谢~
Whole 英文版

Whole 中文版 感谢 fdl 的翻译工作


以下是学习这些基本的VIM命令的基本步骤,在学习完之后,可以依照上图进一步的学习和使用!!
步骤1
注释1:
1) h j k l为光标键,分别左下上右
2) i 插入键进入编辑模式,Esc键退出到一般模式
3) x 删除当前光标所在字符,X删除当前光标前的一个字符
4) A 在一行的末尾添加text,a在当前光标后添加text
5) u 执行Undo操作,Ctrl+R表示Redo
6) 0 跳到行首,$ 跳到行尾 ^跳到行首(类似正则式$和^的意义)
7) w b e移动一个单词word(全部是字符或者符号)
8) W B E移动一个单词WORD(以空格隔开)
9) R 进入插入编辑模式,并且对被编辑位置进行覆盖
10) :w 保存 :q 退出 :q! 强制退出

步骤2
注释2:
1) f 移动光标从当前位置到下一个f后跟的字符的右边,包含此指定字符,F 方向相反为前一个,需要和操作(operator)配合操作
2) t 和 T类似f 和 F,只是它们一直到指定的字符左才停,即不包含指定的字符。
3) d 删除操作 与上面 w f t 等配合:例如"dw"删除下一word,"df-"从当前位置一直往前删除到字符"-",不保留"-","dt-"删除直到"-"但是保留"-"
4) c 删除且进入编辑模式(类似d和i的结合),同样可以与f t T w 等motion结合
5) j k 可以和c和d结合,删除所有末尾或开头的所有行
6) . 可以重复最后一次编辑的所有操作,注意是在一般模式下重复最后一次编辑操作
7) 操作和motion可以和数字组合,"d2w" 删除后2个单词word "d2t,"删除知道这一行的第2个","
8) cc 和 dd 删除当前行
9) v 进入可视模式

步骤3
注释3:
1) y 后面跟任意的motion执行copy操作
2) p (paster)粘贴,如果复制的是字符形式,则粘贴到右边,行形式粘贴到下面
3) P 同上p操作,但是粘贴方向相反,在左边或上面
4) yy 复制当前行
5) y 也可以在可视模式(visual mode)下工作,同时,d,c,x..等text删除操作也将被删除内容进行复制(这一点要注意)
6) "和a-z字符如果在复制/删除/粘贴命令前表示选择一个寄存器暂存
7) 在复制/删除前的A-Z 寄存器意味进行叠加复制,就是多个复制操作的内容将被加起来
8) "*操作或者"+操作选择系统的剪贴板
9) o 在当前行下新其一行进入插入模式,O 操作类似o,只是在当前行的上新起一行

步骤4
注释4:
1) / 是基本的查找motion,可以和operation结合执行操作,也可以单独使用,直接查找匹配后面的正则式
2) ? 与/相同,但是方向相反backward,/ 方向forward
3) n 重复最后一次查找方向, N 重复最后一次查找的相反方向
4) * 和 # 查找当前光标所在的实体相同的实体,前者方向向前,后者方向向后,两者仅在vim下有效(vi not support)

步骤5
注释5:
1) m 操作后跟a-z字符用来设置一个标记mark
2) ` 后面跟a-z字符可以去这个字符表示的标记处
3) ' 和一个字符可以到所在行的第一个非空处
4) A-Z 标记为全局标记 a-z仅在每个buffer内可见
5) `. 表示到最后一个修改的地方
6) q 后跟字符a-z用来记录宏
7) @ 后跟字符用了重放宏,@@ 重放最后一个宏


步骤6
注释6:
1) % 在配对的( 和 ) [ 和 ]等 之间跳动
2) H M L 直接跳到整个屏幕的最上面,中间和最下面
3) G 跳到文件的末尾,G 前面跟行号表明跳到指定的行
4) - 或者 + 直接跳到前一行 或 后一行
5) K 跳到帮助
6) ( 和 )跳到当前句子的最前和最后
7) { 和 }跳到前一个空行 或 后一个空行
8) [[ 跳到前一个第0列是{的位置(必须{为第0列)
9) ]] 跳到下一个第0列是}的位置


步骤7
注释7:
1) J 连接当前行和下一行在一般模式,或所有行在可是模式
2) r 后跟任意字符替换当前字符
3) C 为c$的简写,表示删除当前位置到行结束并进入插入模式
4) D 为d$的简写,表示删除当前到行结束
5) Y 为yy的简写,复制整个行
6) s 删除当前光标所在字符并进入插入模式
7) S 清除当前行,并进入插入模式
8) > 和一个motion 表示缩进一行或多行
9)  >表示缩进整个当前行

一步一步学习Vim 全图解释的更多相关文章

  1. (转) 一步一步学习ASP.NET 5 (二)- 通过命令行和sublime创建项目

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 注:昨天转发之后很多朋友指出了vNext的命名问题,原文作者已经做出了修改,后面的标题都适用 asp.net 5这个名称. 编者语 : 昨天发了第 ...

  2. 一步一步学习SignalR进行实时通信_5_Hub

    原文:一步一步学习SignalR进行实时通信_5_Hub 一步一步学习SignalR进行实时通信\_5_Hub SignalR 一步一步学习SignalR进行实时通信_5_Hub 前言 Hub命名规则 ...

  3. 一步一步学习JNI

    本文来自网易云社区 作者:孙有军 前言 本篇的主要目的就是JNI开发入门,使大家对JNI开发流程有一个大致的了解,后续再进行深入学习. JNI不是Android特有的,JNI是Java Native ...

  4. 12.Linux软件安装 (一步一步学习大数据系列之 Linux)

    1.如何上传安装包到服务器 有三种方式: 1.1使用图形化工具,如: filezilla 如何使用FileZilla上传和下载文件 1.2使用 sftp 工具: 在 windows下使用CRT 软件 ...

  5. (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csd ...

  6. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  7. 一步一步学习SignalR进行实时通信_8_案例2

    原文:一步一步学习SignalR进行实时通信_8_案例2 一步一步学习SignalR进行实时通信\_8_案例2 SignalR 一步一步学习SignalR进行实时通信_8_案例2 前言 配置Hub 建 ...

  8. 一步一步学习SignalR进行实时通信_9_托管在非Web应用程序

    原文:一步一步学习SignalR进行实时通信_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信\_9_托管在非Web应用程序 一步一步学习SignalR进行实时通信_9_托管在非We ...

  9. 一步一步学习SignalR进行实时通信_7_非代理

    原文:一步一步学习SignalR进行实时通信_7_非代理 一步一步学习SignalR进行实时通信\_7_非代理 SignalR 一步一步学习SignalR进行实时通信_7_非代理 前言 代理与非代理 ...

随机推荐

  1. DedeCms当前位置导航去掉最后的分隔符>

    DedeCms的当前位置导航调用标签{dede:field name=’position’ /},在栏目页里调用的当前位置导航,最后会出现分割符号“>”,如:主页 > DedeCms 模板 ...

  2. Python静态代码检查工具Flake8

    简介 Flake8 是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强.Flake8是对 ...

  3. restful的设计风格

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...

  4. 三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 纳什均衡(或者纳什平衡),Nash ...

  5. Mysql学习之order by的工作原理

    在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求.假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前 1000 个人的姓名.年龄. 查询语句为: ; 全字段排序 为 ...

  6. SQL Server 数据库优化剖析

    一.SQL Profiler 事件类 Stored Procedures\RPC:Completed TSQL\SQL:BatchCompleted 事件关键字段 EventSequence.Even ...

  7. js获取或设置当前窗口url参数

    直接上代码 // 获取当前窗口url中param参数的值 function get_param(param){ var query = location.search.substring(1).spl ...

  8. mysql函数积累

    group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组, ...

  9. c#后台线程更新界面

    参考文章<C# 线程更新UI界面> 主窗口 public frmMain() { InitializeComponent(); } /// <summary> /// 主窗口加 ...

  10. 如何监控GPU使用情况并杀死指定其中进程

    仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 有时候我们常常会有一个需求是监控GPU指定情况,并且需要根据需要杀死GPU进程 这里介绍几个与之相关的指令: ...