文档章节

VIM编辑器学习精简教程

hosser
 hosser
发布于 2017/05/11 22:01
字数 2262
阅读 117
收藏 2

VIM编辑器学习精简教程技术

maybe yes 发表于2015-11-13 10:26

原文链接 : http://blog.lmlphp.com/archives/154/The_streamlined_tutorial_of_learning_vim_editor  来自 : LMLPHP后院

当今的互联网公司,都流行一个风气,就是 Linux 下编程。前几年大都数程序员还都是 Windows 下编程,这几年都转过来了吗,不知道他们是失业了呢,还是坚强并痛苦的转过来了,有些担心。

先谈谈作为一个程序员对 Windows 下编程和 Linux 下编程的看法。我个人认为,Linux 纵然优秀开源,但是桌面 UI 还不够成熟稳定,各种软件也都做的比较鸡肋,使用起来是不如 Windows 的(没办法,不愿意花钱买 Mac)。由于我个人对 Eclipse 和 Zend Studio 比较熟练,虽然 Vim 也比较熟练,但还是认为在 Windows 下使用 IDE 开发速度快的多的多。如果是我个人做项目,使用自己的框架,首选 Windows + IDE。也许有人会反驳,说 Windows 跑个 Shell 都不行,开发不是很麻烦吗?其实我说的只是编程。作为一个程序员,熟练掌握 Vim 不是仅仅为了编程,更多的为了运维和管理服务器 ^_^。

在 Linux 下编程,两个最重要的东西,就是 Git 和 Vim。本文主要讲述 Vim 的实际学习应用的精简教程,阅读此文需要您略懂 Vi 的基础知识。

先说下本人的情况,我自己对 Vim 的熟练程序自认为算中上的水平,谈不上精通,但是在日常操作中不会觉得不好使,算是比较习惯 Vi 了。所以,本文就以一个比较熟练的人来讲述初学者应该会碰到的问题和以及解决这些问题必须要熟练掌握的 Vi 命令。

光标移动

如何快速的将光标移动到文件的开头处?: gg

如果快速到达文件的最结尾?: G(shift+g),这个是回到最后一行,如果回到结尾需要: $ 。

到一行的最前面: 0。

到一行的最末尾: $(会忽略结尾的空格)。

向上翻半屏:ctrl+u (某些插件情况下可能会被占用,所以还得掌握向上翻一屏)。

向上翻一屏:ctrl+b 。

向下翻半屏:ctrl+d 。(这个用的比较多)

向下翻一屏:ctrl+f 。

向上滚屏:ctrl+e 。(很好用,光标保持不动,如果没有触碰边缘的话,适合近距离翻屏)

行内运动:f+(需要寻找的字符), ; (半角分号)键下一个,, (半角逗号)键前一个,必须在使用了 ; 键之后使用 , 键才有效。行内运动特别有用。

行内运动以单词为单位:w 下一个单词, b 上一个单词。

查找,搜索

命令行搜索:/ 光标自动运动到底部,支持正则搜索,n 下一个, N(shift + n) 上一个。

相同单词高亮:shift + * (其实就是星号,不知道我为什么这样写,可能为了让人知道必须要按住 shift),需要将光标移动到某个单词上执行,n 下一个, N(shift + n) 上一个。

括号匹配:shift + % ,需要将光标移动到括号或者大括号上执行。

替换

:(冒号)进入命令模式,%s/regexp/replacement/ 全部替换。vi 的正则引擎和 PHP 有很多不同,有很多情况下想不通为什么匹配不上,所以需要多次尝试。

删除

删除一行:dd。使用 . (点号,半角句号)重复前一个动作,这个非常有用。

向后删除一个单词:dw。

向前删除一个单词:db。

复制

我一直以为复制在 VIM 里面是最难的一个,特别是没人教的时候很难摸懂。刚开始我使用 Mac 和 Linux 下的时候,使用 yy 复制一行,或者选中模式选中后使用 y 复制都是只能复制到 Vim 的寄存器剪切板里面,在其他应用中使用 ctrl + v 是不能粘贴的。如要真正的复制到系统的剪切板上面需要安装 clipboard 软件,选中后使用 "+y 复制到系统剪切板,这里就不再叙述了。

粘贴

使用 P(shift + p) 粘贴,这个动作不能在编辑模式使用。

选择

使用 v 命令进入选择模式,方向键开始选择。使用 ctrl + q 进入区块选择模式,这个也非常有用。

向后选中一个单词,进入 v 模式后,使用 w 。向前选中一个单词,使用 b。不过这里有一个边界问题比较麻烦,往往光标会占一个字符。

进入 v 模式后,使用 i + ( 选中括号里面的部分,支持大中小括号。使用 a + ) 选中括号里面的内容并且包含括号的部分。前提是光标处向外能找到括号。帮助记忆,i in,a ahead。默认只向外找到第一个括号,如果需要找到第 n 个,需要额外指定,如 i 2 { 或 a 2 }。原生 vim 是没有语法分析功能的,特别是括号的匹配,如果在注释里面含有括号的话,会导致选中或者上文提到的匹配括号不是预期结果。

缩进

缩进使用还是比较频繁的,特别是写代码的时候,一般都是选中后,使用 shift + > 向后缩进,使用 shift + < 向前缩进,一般缩进都不是一次动作就能完成的,需要配合使用 . 重复上一次的动作,这个很重要。

快速的格式化代码,可以选择代码后,按下 = 号,这样可以更快的缩进代码。

分屏

我觉得分屏也是很重要的,但是我用的不多(可能是我屏幕不够大),个人习惯通过 b+数字的方式来切换文件,有些人习惯分屏。使用: sp 横向分屏,使用: vsp 纵向分屏。

帮助记忆

Vi 里面很多的命令,我觉得想不出很合适的英文单词来记忆。但是部分命令的还是可以找到比较合适的单词的。比如 w(walk), b(back), d(delete), d(down) 。

尾声

计算机是一门实践性质的科学,光看文章和理论上的东西是没有什么意义的。VI 要用的好需要特别的熟练,熟练就需要大量的练习。市面上有很多开源的 VIM 插件,用起来有点类似 IDE 的性质,但是做的好的不多,原因就是众口难调,所以,每个人都需要一套自己的 VIM。

作为技术人员,多一些交流会很有好处。很多技术都不愿意与人交流,特别是不愿意与技术人员交流,生怕别人学走他那一套,倒是喜欢和不懂技术的人,特别是妹纸长篇大论,这在上海的互联网公司普遍存在。很多东西虽然简单,但是你不知道就是不知道,但人家并不认为你不知道。前段时间一同事看到我使用 fg 命令后打开了 VI 编辑器,他问我是怎么弄的。后来交流了之后,我才知道他每次都是另外开一个 Tab 来编辑文件的。

本人写文字都是抽空写的,很多时候一篇文章会断断续续写了好多天,很多地方写的会有遗漏,本文以后还会更新。

补充应用场景

宏录制,使用宏录制简化 :Gblame 操作。达到 @g 打开 Gblame 窗口并且光标保持在当前窗口; @c 关闭 Gblame 窗口。这样可以很方便的查看代码的作者和更新日期。

按下 qg,进入宏记录模式,然后 :Gblame 回车,然后 Ctrl+w ,然后方向键 l 移动光标到右边窗口,然后按下 q 结束录制。达到 @g 的效果。同样使用 qc 开始录制, :bd 回车或者 Ctrl+w 然后 c 关闭 Gblame 窗口达到 @c 效果。

注释代码,使用块编辑模式注释文本,比如配置文件,代码什么的。使用 IDE 有个不好就是不同的 IDE 快捷键盘方式不一样,下面使用 VIM 块操作实现注释。

Ctrl + v 或者 Ctrl + q 进入块模式, 0 到达行首,h 键向下选择,当选择完需要注释的行后,按下 Shift + i 进入编辑模式,将第一行的行首加上 // 或者 #,按下 Esc 退出编辑模式,这个时候您发现刚刚选择的所有行的行首都加上了注释了。这个操作对配置文件的编辑或者代码的编辑非常有用。

阅(695)评(0)查看评论

 

本文转载自:https://blog.lmlphp.com/archives/154/The_streamlined_tutorial_of_learning_vim_editor

hosser
粉丝 192
博文 78
码字总数 4614
作品 3
徐汇
私信 提问
Vim简明教程【CoolShell】

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》...

Yomut
2016/07/07
76
0
2017-12-19Linux基础知识(18)vi编辑器

我们在上一节当中讲述了正则表达式(BRE, ERE),它们两个的正则表达式元字符书写方式有些不同,以及我们也讲述了grep和egrep和fgrep之间的关系也知道了如何使用,它是根据用户所指定的"PATTER...

刘祥宇
2017/12/20
0
0
Vim使用笔记之.vimrc配置

之前陆陆续续有用过一点vim,但基本上都没有详细地去了解这个强大的编辑器,最近开始重新学习一下Vim。刚开始使用Vim的感觉就是好简洁,可以说是什么东西都没有,无从下手。看了一些教程,慢...

whuer凌晨
2018/08/01
0
0
最简单的vim或gvim学习入门教程

1. vim或gvim下载 Windows版:地址1,地址2 2. 安装(很简单略过) 3. 开始使用vim 假设我有个文件叫“readme.txt”,你可以换成你的文件名称,以下命令环境在Linux终端,输入即可 编辑内容并...

BjarneCpp
2017/08/09
0
0
Vim学习再开(2)——Emmet for Vim

Vim学习再开(2)——Emmet for Vim 小憩之地2013-12-04442 阅读 toolsvim 昨天发现在Vim中的Emmet与我之前用过的编辑器(IDE),比如Sublime Text和Eclipse之流,不太一样。我并不是打算做前...

小憩之地
2013/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
21分钟前
2
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
53分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部