Vim技能修炼教程(6) - 行编辑器】的更多相关文章

在很久很久以前,计算机的运算能力还很弱,终端与主机的通信也不好.在没有显示器的时代,只能通过电传打字机跟主机通信.那时候只有行编辑器,编辑的时候只能在一行中进行.需要显示哪一行,就把哪一行或者哪几行打印出来看. Unix上使用的行编辑器是ed. 这个编辑器至今仍然在Unix/Linux/FreeBSD各系统中存在. ed的增强版是ex. ex最大增强之处就是提供了可以全屏编辑的模式.在ex中输入:visual命令,就会切换到全屏编辑模式.好吧,这就是vi.Vi本质上就是ex编辑器的visual模…
语法高亮速成 我们继续在人间修行Vim技能之旅.上一次我们学习了如何通过vundle安装插件,这次我们迅速向写插件的方向挺进. 我们先学习一个最简单的语法高亮插件的写法. 语法高亮基本上是由三部分组成: * 配色方案 * 正则表达式 * 配色方案和正则表达式的规则对应关系 简单的三步法写语法高亮 第一步,写匹配的正则表达式 我们举个最简单的例子,以Android的log为例,Android的log格式如下: --------- beginning of system 05-05 17:55:48…
程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第7讲可视模式,第8讲多窗口,第9讲缓冲区和标签页. 从这一讲开始,我们从通用功能向程序员常用功能挺进.首先我们从浏览代码最常用的跳转功能开始. 代码跳转 代码跳转,需要传说中的Exuberant Ctags工具,地址在:http://ctags.sourceforge.net/. 当然大家根据系统不同各显神通吧.比如我是macOS,就通过Homebrew来安装了.大家手头有什么"ap…
可视模式 可视模式是与正常模式.插入模式一起并列的模式.它的作用就像图形化编辑器下用鼠标来选择一个块. 在vim下,使用正常模式和ex命令,连搜带跳行的,未必就比用鼠标慢. 我们先做一个例子找找感觉,体验一下vim中可视模式的用法. 我们假设这样一段代码: #include <stdlib.h> int main(int argc, char* argv[]) { return 0; } 假设我们想把这段代码全注释掉,该如何做? 1. 在第一行首先用Ctrl-v进入列选择模式 2. G跳到最后…
基本功 前面我们学会了插件管理器和如何实现语法高亮,相信大家已经从中体会到了vim插件的强大功能.现在,是时候回来补一补基本功了. Vi有三种主要模式,正常模式,插入模式和可视化模式.正常我们推荐的方式是所有的移动命令只在正常模式下进行,只有在修改的时候再进入插入模式. 这个切换是如此频繁,所以Vi提供了很多快速切换模式的命令.Vim的难学之处之一就是命令太多. 模式切换的好处 如<Practical Vim>中第8条所说,正常模式和插入模式的切换,可以为撤销编辑带来方便.在没有模式切换的文本…
世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它们的地位,比如编辑器界的Sublime Text,Ultra Editor,Notepad++,pspad,Atom,Visual Studio Code,IDE界的Eclipse, IntellJ IDEA, NetBeans等等,但是它们的地位从未动摇过. 写C#的最好IDE一定是Visual…
写个ex命令吧 我们第二节开始就写了语法高亮的插件.这一节,我们学习第二种插件的写法,就是写个我们自己的ex命令. 自定义ex命令的命令是:command,我们在~/.vim/下建立一个plugin目录,然后创建一个test.vim之类的文件: :function Hello() :echom "Hello,World!" :endfunction :command Hello call Hello() 首先,我们定义一个函数.函数名的首字母必须大写.函数中调用:echom去显示一个字…
Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言都有很好的支持.既可以支持脚本内嵌在.vimrc中,也可以执行python等脚本语言的文件. 运行:version命令就可以看到当前的vim发行版本持哪些扩展语言: VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 22 2017 03:02:45)…
上一讲我们是程序员篇的第一讲,关于代码跳转.代码跳转是一个付出很少收获很大的功能.这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠. 代码折叠 折叠的类型 折叠有下面几种类型: * Manual: 手动创建折叠.但是退出vim后就一切都没了. * Marker: 基于特定的字符组合进行折叠. * Expr: 定义正则表达式来处理折叠,这是最终的解决方案. * Indent: 这个最简单也最基本,根据缩进来折叠. * Syntax: 根据程序语义进行折叠. 我们先看一个例子,左边是采…
多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上下切换窗口. 关掉一个窗口 跟退出vi一样.比如正常模式下的ZZ,再比如:q. 竖着切成两个 :vsplit 文件名 左右切换窗口 Ctrl-W加上左右键 循环切换窗口 Ctrl-W w 好了,欢迎进入多窗口的世界.基本功能就这么多,大家先把多窗口用起来吧. 再学一点 分割窗口 打开只读文件并水平分…