品评 OS X Mavericks ——唯快不破(中)

Mavericks2

昨天发了上篇之后,很多人发来贺电说,Mavericks不就是达拉斯小牛吗?怎么成冲浪胜地啦。我建议大家去苹果官网看看 OS X 10.9的 logo,那一片大浪啊……实在不行去维基百科查查,总之,这里提到的Mavericks和达拉斯小牛的一根牛毛关系都没有,请大家暂时忘掉牛,想着浪。

小伙伴们看了昨天的文章之后说了句天津话,这有嘛?我说别急啊,时光都穿梭到2013年了,如果你还认为升级就是改改 UI/UE 那就太 Naive 了,事实上这次 Mavericks 真正动大手术的地方在底层的技术框架上。我们会在性能一章着重描述。今天讲讲应用软件的兼容性和新功能。

应用软件


1、兼容性

一看到这个标题估计就有童靴扔砖头了,不是说所有软件都不需要重新安装么?请注意,Mac 君在「所有」之前加了「几乎」二字,行走江湖……你们懂的。

所以,升级完成之后有几个地方还是需要修缮一下的。

首先,JDK 没了,这在前几个操作系统升级时是从未发生过的,最多默默的帮你把 JDK5升级为6,而这次是默默的把 Java 干掉了,难道库克大爷和 Oracle 的埃里森结下了梁子?总之,Java 在 OS X 上一直充当一等公民的日子结束了,但也没那么惨,当你需要运行 Java 相关的应用时,系统会自动提醒你安装 Java 框架,比如你想打开 IntelliJ 或 Eclipse,Mavericks就会问你要装 Java 么,你说是的,人家也不会为难你,分分钟就帮你装好了。装完之后,所有相关的程序就都可以正常运行了。

Python 比 Java 麻烦一些。Python 依然是 OS X 的一等公民,并且版本升级到了2.7.5,但这个升级导致的直接后果是以前安装的那些库统统都不见了。比如Django、ElementTree、Markdown、html5lib、MySQL-python等,甚至 bpython 和 ipython 两个增强型 shell 也需要重新安装,让人愤愤不平。这还不算,用easy_install安装时出现的编译错误是你躲不开的宿命,这时候是不就想骂娘了?别急这才刚刚开始……

发生编译错误是因为 Xcode 的 command line tools 没装,在 OS X 里玩命令行没有这货是万万不行的。这时你微笑着打开 Xcode,找到Preferences—Downloads—Components,发现,command line tools 的安装包不见袅!再一次,Mavericks 把 XCode 4.6.3的 command line tools 全部干掉了,而且你还找不到单独的10.9的 command line tools 安装包,当你想装10.8 的包时,系统会明确的告诉你版本不合适,想都别想。

在诅咒了这个万恶的强删制度以后,我决定使出杀手锏和 Plan B,在命令行输入xcode-select --install,这时会弹出一个选项框,问你是去下载 Xcode 还是直接安装,选择安装,你会发现,总会有解决方案的。 xcodeselect

我担心的Parallels Desktop 8和 Papers 2都可以正常使用,用来干活的 JetBrains 系列和 Eclipse、Xcode 4.6.3 都没什么问题。

Ruby 升到了 2.0,在经历了这些之后,我决定让别人去填坑,自己则无耻的跳了过去。

其他我用到的几十种软件大部分都能正常使用,兼容性测试到此结束,简单来说,这个预览版是可以投入日常工作使用的!

2、新成员和新改进

iBooks和地图是 Mavericks 新增的原生软件,尤其是iBooks,在第五个预览版首次发布。

(一)iBooks 的功能类似 Amazon 的 Kindle for Mac,支持云同步,支持打开本地文件,可以做笔记和书签,iBooks 对应的文件格式是 epub,Kindle 是 mobi。除了普通电子书,iBooks 还能够支持多媒体交互式电子书,比如那本著名的《Life on Earth》,在 Mac 版的 iBooks 上显示效果相当惊艳。

终于能够在 Mac 拥有 epub 书籍的完美体验,我感觉心满意足。当然,这个新版本问题也不少,崩溃、渲染问题、性能等都像最近的地震一样说来就来,期待最终版。

ibooks

(二)地图就没什么可说的了,就是一个原生的地图软件,大家去看官网介绍即可。

(三)Finder 新增了 Tab(标签) 和 Tag(标记)功能,标签这个功能已经被用户吐槽很多年了,在看到苹果迟迟没有动静的情况下,程序员们愤怒的开发出了 TotalFinder 和 XtraFinder这样的软件来告诉苹果,没有你妹一样可以用 Tab!Tag的功能可能创意来自互联网的标签云,现在我们除了可以为文件和文件夹标记颜色,还可以打标签,并把这些标记过文件一次显示出来,Mac 的文件系统也向着扁平化多纬度管理浩浩荡荡的进军了。目前Tag自身的管理比较弱,就一个列表,这要是有50个 Tag 基本会疯掉,期待改进。

(四)日历和备忘录的 UI 都重新设计了,尤其是日历的改进,除了设计简约清新之外,周视图可以左右滚动,月视图可以上下滚动,阅读和记录更加方便,事件还能直接与地图位置绑定。备忘录去除了拟物化设计,界面采用了白色和淡黄,字体用了手札体。

calendar_inspector_2x

(五)Safari 的性能、阅读器、边栏、Top Sites 都进行了重新设计。阅读器有了更好的阅读体验,基本不需要其他插件了,但取消了底部的设置和导出打印的功能,不知何解。边栏提供了书签、阅读列表和共享链接三个功能面板,和 iOS7的 Safari 一模一样。共享链接会列出你在微博、Twitter上跟随的那些小伙伴分享的链接,让你一个链接都不放过。

Safari 这次发布的版本是7.0,在高速缓存、页面解析和平滑滚动上做了很大的优化,如果网站和带宽足够,网页几乎没有刷新和加载的感觉,瞬间开启,让你产生一种MD出事了的错觉!长页面上下滚动几乎没有停顿感,我用Quartz Debug测试了一下,FPS 能达到60帧,相当强悍。

safari

(六)监视器的 UI 重新设计、功能增强,为 CPU、内存、网络、磁盘提供了更多图形化的系统信息,界面设计也隐约透出扁平化的味道。

(七)双屏或多屏支持放到最后说,是因为这个功能太赞了。这次多屏的改进并不是扩展或辅助屏幕,而是为扩展显示器增加了一个桌面空间,比如你的 Mac 原来有三个桌面空间,外接显示器时,系统会默认为你创建第四个桌面空间,并在扩展屏里显示,这个空间是完全独立的,除了没有 Dock,其他和主屏完全一样。这样做的好处就是两个屏幕是完全独立的,互不干扰,如果你的机器足够强悍,都可以当两台电脑使用,爱全屏全屏,爱切换切换,互不侵犯,各自为政。对于多桌面空间爱好者来说,吸引力这绝对是致命的。

通知和 iCloud Keychain 就不细说了,总之让通知和密码保存更加方便,大家届时自己体会吧。

本来想今天一把写完,结果发现自己太幼稚了,只好把「下」改成「中」,明天再谈谈性能和目前存在的一些问题。

品评 OS X Mavericks ——唯快不破(上)

Mavericks1

2013年6月11日,苹果的 WWDC 大会结束的第二天,我就升级了 iOS7,还写了两篇文章(回复 wwdc 回顾)。那时就读者问,为什么不顺手把 Mavericks 也升了呢?

其实无论是 iOS 的beta 版,还是 OS X 的开发者预览版,都是为了开发者测试和适配现有软件程序并提交 bug 的,苹果不会保证其可用性,尤其是前几个版本,系统崩溃、变砖、发热耗电、断网都非常可能,你看着千百个 App在你面前挥舞但一个也不能用时是不会有人同情你的,甚至可能有代码界的达人慢慢的踱过来安慰你说,「该,谁让你丫升级了!」,让你觉得世界残酷无比。那我为什么升级 iOS 7 呢?第一,我觉得出了问题自己能 Hold 住,第二,别看大家每天走路开车冒着被撞飞和撞飞别人的风险低头看手机,但是手机只要能够打电话和发短信,就不至于耽误大事。OS X 就不同了,那是工作和学习的必须品,我可不愿意冒风险花时间去折腾Mac,所以 Mavericks 一直没升。

前几天 Mavericks 的第五个预览版发布了,先问了几个朋友都说比较稳定,后外事不决问 Google,得知我必须用的几个软件都已经有新版本兼容了,遂决定周末花时间升级,并在微博上发布了这一消息。这时就看出人品了,马上有达人发来祝福,「无数事实证明了一个颠扑不破的真理——不作死就不会死啊,兄弟」,我毅然回复,「哥行走江湖靠的是个稳字,早就备份袅」。

插播一句,自从开通了 MacTalk,有无数的人跑来问文件误删除了怎么办,系统挂了怎么办,硬盘坏了怎么办?一问之下都是没备份过的,为什么不备份,一部分不知道,一部分嫌麻烦。在这里我只能通过MacTalk再次告诉大家,「苹果为 OS X 开发了一个叫做时间机器(Time Machine)的软件,不是让大家混不下去的时候穿越到清朝去找格格玩的,而是为了备份你的操作系统和重要文件的,Mac 君只能帮你们到这里了…」。

于是,我周末准备了茶、咖啡、啤酒和披萨,一边欣赏羽毛球世锦赛,一边完成了 Mavericks 的升级,整个过程无比顺利(人品好没办法),下面聊聊升级过程和使用体验。

Mavericks的命名


OS X 向来是用我心爱的大猫命名的,比如 Leopard,Lion等,这次不知道怎么发神经用了个加州冲浪胜地的名字,让我非常困惑,到现在也不知道中文名字是什么。而且这个名字似乎很难记,我发微博时把 rick 写成了 risk 居然没有被各类「错字控」和「错字党」发现,可见一斑。总之,大猫没了,让人伤感,而且,你不知道下一个版本会叫什么名字,难道找个攀岩胜地么?

安装


再说一次,安装之前先用Time Machine 进行系统备份,保证你可以随时恢复到现在的系统状态。

下载OS X Mavericks 10.9的第五个开发者预览版,把安装程序拖到应用程序文件夹,双击安装即可。因为是升级安装,所以过程傻瓜的令人发指,选择一下安装磁盘,剩下的事情就交给安装程序了。我看完一场羽毛球比赛后回来,发现系统已经升级完成。

有童靴问什么是升级安装?这么理解吧,有一天你很累,早早就睡下了,这时候一个装修队趁着夜色的掩护偷偷进入你的豪宅进行了一次升级装修。等早晨的闹钟轻轻敲醒沉睡的心灵,你慢慢张开自己的眼睛,发现一切似乎都不一样了,但所有的东西都在,家具和电器换了新的,但衣物、摆设、位置都没变,甚至你上次打开的电视频道都保留下来了,总之系统已经不是那个系统,但你的个人设置(Profile)都保存下来了。 OS X系统的每次升级都是如此,安装完成后几乎所有软件都不需要重新安装,甚至你打开文件的进度、Safari 的 Tab 页都会被作为状态保存下来。我从第一次使用 Leopard 之后再没有重装过系统,要么升级要么恢复,就是这样。

用户体验


升级完成登录系统,我的第一感受是「MD 被骗了,什么变化都木有啊魂淡」,接着才进入第二感受,以下均为第二感受的体验。

1、去材质化

其实看到登录界面就会感觉有所不同,但由于只是背景材质的改变,所以容易让人忽视。Lion 系列的登录界面背景是亚麻材质的灰黑色图片,苹果的 Logo 也带有镌刻的立体感,Mavericks 的登录则极为简洁,纯灰色的背景和白色的 Logo,登录用户头像也被妥妥的拍扁了。

通知界面的背景也做了同样的改变,由亚麻背景改为纯色。Launchpad 则彻底与当前桌面的色系融为一体,取消了二级文件夹打开显示纹理背景的设计,这一点与 iOS7 的毛玻璃效果有异曲同工之效。Dashboard 空间的背景也由原来立体的圆变成了横竖交织的线。

mvr1

至此,就我的观察,Mavericks 基本完成了所有背景材质的去除,从早期充满贵族气息的金属拉丝和近期沉稳含蓄的纹理设计,都不会出现在新的 OS X 中了,一个时代已经结束。

2、扁平设计

Mavericks 在 OS X 的扁平设计上做了一些尝试,比如登录界面,新应用 iBook 和地图的图标,日历、通讯录、备忘录和活动监视器的新设计,都显示了 OS X 的扁平化趋势,那为什么没有对所有的原生程序进行全新设计?我估计一个是时间上的问题,另一个是 OS X 的演进一直是潜移默化的,可能还不到大变脸的时候。老话,路要一步一步走,走的过大,容易扯着淡。另外,OS X 用了这么多年,我确实还没有产生类似 iOS 那样的审美疲劳,那就让扁平来的缓慢一些吧。

mvr2

3、细节改进

  • 手势:四指划开显示桌面的时候可以通过手指的动作实时控制程序的位置,目前只有显示桌面和桌面空间切换可以做到类似效果。
  • 万般委屈的 Finder 终于有了全屏功能,到现在我也想不通为毛原来就不让 Finder 全屏。另外,在 Finder 中选择文件列表时选择区域也变成大圆角了。
  • 原来按一下电源键就会弹出是否关机的窗口,现在按一下关闭屏幕,长时间按弹出关机窗口,再长时间按强制关机。
  • 点击顶边栏的电池状态,会显示使用大能耗的应用程序,如果你在用电池供电,可以把这些程序选择性关闭。
  • 可以离线听写了,不过需要下载语音包,大概700多M。
  • 勿扰模式增强,可以在系统选项设置—通知里设置勿扰的时间段、使用模式等,类似 iOS7里的勿扰模式。
  • 平滑滚动继续增强,无论是在 Safari、Finder、iTunes 里上下滚动都丝般柔滑,毫无停顿的感觉,明天我测试一下 FPS(每秒显示帧数),看看效果如何。

mvr5

大概就这么多吧,最后发现 iTunes 居然是英文的,我决定暂时不用它来同步手机,避免误伤友军。

明天讲讲应用软件的兼容性和新功能,iBook,Finder,Map,双屏等。最后是性能部分(高科技总是放在最后讲),这个主题就算完结了。

VIM——帮助和配置(兼谈微信5.0)

2013-08-05 21.16.56

昨天文章的篇首语似乎把很多老鸟的时间指针拨回到了十年以前的青葱岁月,在那代码与Vim齐飞、键盘共鼠标一色的日子里,每个人要么是井底之蛙,要么是夜郎自大,每个成长和蜕变都值得现在的我们细细回味。所以我说,你们以为我在写 VIM,其实我是在致青春!

有人说这不是致青春,这是致坑。我说,生活就是由一个坑接着下一个坑组成的,什么时候所有的坑都平了,长出了自己的草,才算完结。


今天微信5.0终于发了,万众期待比肩苹果。网络上各类雄文一坨坨的,我本不想趟这个浑水的,不过有铁杆读者非让说说,那就说几句。

微信距离上次发布有近4个月的距离,在移动互联网唯快不破的原则下,这简直是个奇迹。有人说微信发个版本又不会怀孕,我说如果你上一版怀孕了,现在孩子已经4个月了……

几点感受:

  1. 4.5发布时进来就听老崔的一无所有,5.0发布时进来就打飞机,从文艺到节操的转变说明了微信增加了游戏中心。
  2. 各种小道消息说微信5.0扁平了,结果是只有图标被拍扁了,整体框架依然保持了4.5的风格,只是四个功能菜单从「微信、通讯录、朋友们、设置」变成了「微信、通讯录、发现、我」。
  3. 公众账号分为服务号和订阅号,服务号每月只能推送一条消息,但菜单和 API 功能丰富,订阅号的功能保持不变。
  4. 原以为服务号和订阅号在微信频道都会被折叠,结果发现只有订阅号被折叠了,而且订阅号的消息不会有提醒,大爷的!不过做为一个宽容乐观的老同志,我觉得这样有利于去伪存真,只有好的内容才能吸引读者去打开订阅号寻找并点击,让垃圾内容去见鬼吧。
  5. 游戏中心在「发现」频道,朋友圈排最上,游戏中心排最下,目前游戏有「打飞机和天天爱消除」(感觉还是没节操)。
  6. 扫一扫功能增强了,还能扫条码、封面、翻译,还有街景功能,很酷。
  7. 所有的设置信息被归并到「我」这个频道,除了你见过的,还增加了我的收藏(想收藏啥收藏啥)和表情商店(想要好表情,请掏雪花银)。
  8. 添加朋友增加了按住按钮找的功能,我没找到。语音识别增强了。
  9. 文本消息双击可以大字体全屏阅读(妈妈再也不担心你的近视眼问题了)。
  10. 4.5在 iOS7上的大部分 bug 没了,但是仍然无法把其他应用的东西分享到朋友圈,比如音乐、微博等,应该是 API 变了。
  11. 最后说说支付,如果你和我一样土鳖的认为有这样一个独立功能你就 OUT 了,这玩意是集成在服务号里的,比如你订阅服务号「QQ充值」,会发现这货有充话费的功能,点击充话费,就会让你绑定银行卡,然后就能充值了。那么有多少类似的服务号呢,好吧目前就这一个。

蜻蜓点水,就这几句。大家升级后自己体会吧,我觉得创业机会还是有的,MacTalk 呢,也可以继续写下去。


好吧回到正题,今天是 Vim 系列的第三篇,想看前两篇的,回复 172、173,直接去 macshuo.com上读也好。

今天我们介绍帮助和配置内容。

使用帮助


Vim 本身提供了非常详细的帮助系统,初学者可以通过帮助手册学习Vim的基础内容。在Vim中输入命令:help,即可进入帮助页面,默认是英文帮助,如果你喜欢看中文,可以通过以下方式安装中文帮助内容:

  • 下载中文帮助的文件压缩包
  • 解压,把doc目录下的文件复制到~/.vim/doc下
  • 确认在.vimrc中设置了set helplang=cn
  • 输入命令:help即可进入中文帮助
  • 输入命令:help user-manual直接进入用户手册

用户手册的界面是这样的:

vim3

如何浏览帮助呢?请牢记如下秘籍:

  • 移动: 使用光标键,或者用 h 向左,j 向下,k 向上,l 向右。
  • 退出: 使用 :q<Enter>
  • 跳转到一个主题: 将光标置于标签 (例如 usr_01.txt) 上然后输入 CTRL-]。
  • 跳回: 键入 CTRL-T。
  • 翻页:键入 CTRL-F/B

当然,大家也可以从如下网址下载用 PDF 版本的户手册和帮助文档:下载「须翻墙」

配置

Vim以简洁的方式提供了丰富的配置功能,主要配置体系由一个文件和文件夹组成。在一台安装了Vim的OS X/Linux/Unix机器上,进入用户主目录,可以找到.vimrc文件和.vim文件夹,这就是Vim所有的配置信息。

1、.vimrc

用户目录下的.vimrc文件就是Vim针对当前用户的主配置文件,该文件不是必备的,没有的话就创建它。文件位于当前用户的主目录下,可以用~/.vimrc找到,Vim启动时会自动运行文件中的每条命令。
通过.vimrc我们可以为Vim进行个性化配置,包括使用方式、显示风格、编写函数和运行插件等,.vimrc中所有的命令都可以在Vim运行时通过类似:comm args[=args1]的方式动态运行,即时生效。
以下是一个.vimrc的样例脚本,包含了一些常用配置,后面的注释是简要说明。

.vimrc的注释用双引号(”)表示 ,样例中的大括号仅表示功能区,属于注释的一部分,无其他含义
.vimrc的配置非常丰富,可以定义各种宏、函数、插件和映射,我见过最长的.vimrc配置有1000多行,这里的示例比较简单,适合入门级用户

syn on                      "语法支持

"common conf {{             通用配置
set ai                      "自动缩进
set bs=2                    "在insert模式下用退格键删除
set showmatch               "代码匹配
set laststatus=2            "总是显示状态行
set expandtab               "以下三个配置配合使用,设置tab和缩进空格数
set shiftwidth=4
set tabstop=4
set cursorline              "为光标所在行加下划线
set number                  "显示行号
set autoread                "文件在Vim之外修改过,自动重新读入

set ignorecase              "检索时忽略大小写
set fileencodings=uft-8,gbk "使用utf-8或gbk打开文件
set hls                     "检索时高亮显示匹配项
set helplang=cn             "帮助系统设置为中文
set foldmethod=syntax       "代码折叠
"}}

" conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等
let mapleader = ','
nnoremap <C-l> gt
nnoremap <C-h> gT
nnoremap <leader>t : tabe<CR>

"conf for plugins {{ 插件相关的配置
"状态栏的配置 
"powerline{
set guifont=PowerlineSymbols\ for\ Powerline
set nocompatible
set t_Co=256
let g:Powerline_symbols = 'fancy'
"}
"pathogen是Vim用来管理插件的插件
"pathogen{
call pathogen#infect()
"}

"}}

2、 .vim

.vim是Vim的主配置文件夹,位于当前用户的主目录下,可以用cd ~/.vim进入。该文件夹一般用来放置插件和相关的帮助文档,常用的目录结构包括:

doc                           //帮助文档目录
autoload                      //Vim启动时自动加载的插件目录
plugin                        //插件目录,一般在使用Vim时通过命令呼出

当然,如果你已经安装了足够多插件,那么这个目录下就会变得五花八门,syntax、snippets、indent等文件夹都会冒出来了。一个插件所包含的文件往往会分布在多个文件夹下,管理起来比较麻烦,稍后我们会介绍两个管理插件的插件,让这个目录变得干净整洁,容易管理,这两个插件的名字叫pathogenVundle

今天就到这儿,后续文章会介绍 Vim 的Buffer、Window和 Tab,敬请期待。


文章内容来自微信公众账号:MacTalk · 微信号:sagacity-mac · 回复 m 可以查阅所有历史文章和Mac Tips · 网站:https://macshuo.com

如果希望持续听MacTalk,请点击首页的赞助

VIM——为效率而生

vim1

现在回想早年用 Vim 编程的场景,当可体现「专注」二字,那个年月的网络没有这么多诱惑,编写代码时差不多只开一个终端工具,噼噼啪啪的敲击键盘,累了就躺在办公室外的沙发上休息,也可以站起身看看窗外,舒缓一下疲惫的眼光就能延展到清华东门上空。五道口还地属荒凉,没有高楼,夕阳可以直接从窗口进入室内,光影打在办公桌上让人感觉非常温暖。

时过境迁,现在靠着硬盘的快、内存的大,我常常同时开几十个程序,用 command+tab 一切,屏幕中央一排几毫米见方的小图标一字排开,看着它们我有时候茫然若失,不知道自己到底想点开哪个,估计它们看着我也郁闷,「这孙子把我们都打开想干什么?」环境变好,硬件充沛,软件强劲,我们的效率是下降了呢,还是下降了呢?

而Vim,正是为效率而生的。

历史


Vim 源于 Vi,但不是 Vi,Vi 作为计算机的文本编辑器历史极为悠远,它是由美国计算机科学家比尔·乔伊编写并于1976年发布的,同年苹果公司成立。我在「传统的黑客——史蒂夫·沃兹」中提到过比尔·乔伊,他是 Sun 公司的联合创始人和首席科学家,一位传奇的技术天才,我个人以为他最伟大的贡献是独立编写 BSD 操作系统,开发 Vi 编辑器,创立 Sun 公司,当然,他还是 Java 语言的主要贡献者之一,任何人有幸完成其中一项工作已经足以名垂计算机发展史,而乔伊则通过一己之力完成了这些科技成果,推动了整个计算机科技的发展。

Vim 则诞生的要晚一些,它的第一个版本由布莱姆·米勒在1991年发布,这个兄弟也是一位声名显赫的程序员,80年代买了一台Amiga电脑,打开电脑一看,米勒鼻子差点气歪了,居然没有他最常用的 Vi编辑器!对于米勒来说这是不可接受的。

愤怒的米勒决定自己开发一个文本编辑器,完全复制 Vi 的功能,并起名为Vi IMitation(模拟)。事实证明,牛X的程序员都具备这种德行,感到不爽了,就会写出个什么东西,要么完善一下,要么创新一下,要么是你写,要么是我写,于是很多伟大的软件程序就发明出来了。随着 Vim 的不断发展,更多更好的功能被加了进来,正式名称改成了Vi IMproved(增强),也就形成了现代的 Vim,目前最新的稳定版本是7.3,Vim 的开发语言是 C 和 VimScript(后续我们还会谈到这门语言)。

理念


Vim 是一款完全面向程序员的软件,活了三十多年我还没有见到过用 Vim 编辑文字的普通用户,如果你是,你一定要告诉我。

写过程序的人都知道,编程的时候双手大部分时间都放在键盘上,或编码、或插入、或移动、或定位、或查找,这种连续操作的时间和频率远远大于阅读、翻页、设置字体、摆弄样式等文案工作,而二者往往产生很多停顿和间隙,而编程时的停顿是非常影响编程效率的,所以 Vim 的设计理念就是通过模式的转换、命令的组合和数以万计的插件,保证程序员在编程的过程中,双手尽可能保留在键盘中央的区域,并且,不需要鼠标。

想用好 Vim,先要理解 Vim 的模式转换。Vim 常用的模式有四种:

  1. 普通模式:Vim 启动后的默认模式,用来移动光标、删除文本、覆盖输入文本、恢复操作、粘贴文本等等。
  2. 插入模式:输入 i 或 a 进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通编辑器的编辑模式。
  3. 可视模式:选择文本,可以行选、块选和依次选择,选择后可以进行复制、删除、排序等操作。
  4. 命令模式:执行内部和外部命令,通过「: 」「/」「?」「!」可以进入命令模式,分别对应的是:执行内部命令、向上或向下搜索、执行外部命令。

Vim 的模式和普通的编辑器有所不同,而且命令繁多千变万化,所以初期的学习曲线较高,一旦你坚持练习并且度过了最早的平台期,就会领略 Vim 的妙和全键盘的好。事实上 Vim 除了能够快速编辑文本文件之外,还能够通过简单的命令做更多的事情,所以,「如果你认为Vim只是一个文本编辑器,你就输了!」

举几个例子,大家领略一下 Vim 的风采:

1、如果你想在 Vim 打开的文本中插入一个1到100的序列,执行如下命令:

:r!seq 100

2、如果你想在当前的每一行文字前面增加「序号. 」,那么执行如下命令:

:let i=1 | g /^/ s//\=i.". "/ | let i+=1

3、如果你想把当前目录下(包括子文件夹)所有后缀为 java 的文件中的 apache 替换成 eclipse,那么依次执行如下命令: 在当前目录下执行:

vim
:n **/*.java
:argdo %s/apache/eclipse/ge | update 

后续还会为大家介绍一些 Vim 使用技巧,不过这个系列不会去讲如何通过 hjkl 移动光标,如何块选、行选,如何查找、定位,如何跳到行首行尾等等,我会告诉大家如何通过 Vim 自带的帮助去学习这部分内容,当然,如果大家有需要,我可以出一个常用快捷键操作列表。

下一篇 Vim 文章的内容是:「使用帮助」和「环境配置」。


文章内容来自微信公众账号:MacTalk · 微信号:sagacity-mac · 回复 m 可以查阅所有历史文章和Mac Tips · 网站:https://macshuo.com

VIM——缘起

玉簪花

MacTalk新增加了不少读者,如果你想学习一些 Mac 使用技巧和技术,建议通过 m 查看目录,从头看起,因为早期的几十篇文章中包含了大量的使用 Tips 和 Tricks,有心之人自有收获。

这次出差非常奇葩的没带电源,由于 iPhone 和 iPad 都可以通过Mac 充电,我外出一般只带 Mac 电源,此源一绝,基本上所有电子设备就都没有粮草了,当真是「此恨绵绵有绝期」。后果就是我开始极其吝啬的使用那块 Mac 电池和 iPhone 备用电池的配额,能用 iPad 就不用 Mac,能用 iPhone 就不使Pad,Mac 只用来写长邮件和产品演示,另外负责给 iPhone 充电。那篇「老兵不死,只能自我提升」自然是在 Mac 上完成的,不过由于很早就构思了这个主题,再加上电池的压力,写起来真是倚马可待,一气呵成,成文之后居然好评多多,也算奇事。回京的时候Mac 和 Pad 都已「筋疲力竭」,只有 iPhone 还有60%的电量,真是险到极点!

从湿漉漉的广州回来,兜头遭遇一盆大雨,大雨过后,整个京城变得清凉干爽,俗话说,环保基本靠风,清洁基本靠雨,此言非虚。傍晚从办公室出来,满园的白玉簪花散发出淡淡清香,碧叶莹润,花色如玉,新鲜的雨珠还挂在绿叶和白花上,一点一点,晶莹剔透,折射着夕阳的余晖,闪闪烁烁,煞是好看。

最近不断有 vim 的关键词在微信后台的回复中出现,好把,今天就开始给 Vim 系列搬家。

操作系统、编程语言和编辑器是程序员永恒的吐槽话题,技术发展了几十年,争论起来依然是「此恨绵绵无绝期」。在文本编辑器领域,Vim 和 Emacs 是永恒的焦点。我在「如何学习一门编程语言」里写道,「Emacs和Vim程序猿,大家沿着不同的道路和目标前进,但总是会在某个点交叉相遇,见面就扔石头和臭鸡蛋,砸得对方鼻青脸肿,然后擦擦眼泪和口水继续前行」。你们就知道,编程其实是个危险的工作,当真不是瞎扯。

工作十几年来我用过各种编程工具,用错过,也用对过,虽然每种优秀的编辑器都有传奇的故事,每个程序员都有自己的脾气,但这一次,我只想写一写 Vim……

为什么 Vim 总会和 Emacs 相提并论呢?因为 Vim 号称编辑器之神,Emacs 则是神的编辑器;Vim 编程唯快不破,插件遍天下,Emacs 则宣称自己是伪装成文本编辑器的操作系统,所谓针尖对麦芒,就是这样的效果,写完 Vim 这个系列,我希望还有机会写写 Emacs。

缘起


我从2000年开始接触 Vim,当时正值第一波互联网浪潮,我刚毕业不久,一如现在的热血青年,投身到互联网的大熔炉中(当然和现在的互联网弄潮儿不一样的,当年我们大部分都被熔掉了)。

当时的公司聚集了很多清华北大的兄弟,技术牛人扎堆,大家清一色使用 Vim 在服务器端编程,语法高亮都不设,内部BBS也是水木清华那种,通过终端访问,非常高端大气。走进办公室一眼望去,满目皆是黑漆漆的屏,绿瓦瓦的字,每个人都在那里噼噼啪啪的敲击键盘,韵律十足,我想,这简直酷毙了!

当时我还在使用 Editplus 编程,隶属菜鸟帮。别人的开发、编译和发布环境都在服务器端,而我则需要在本地编写好程序,通过 Editplus 的 ftp 功能上传到服务器端,再进行调试、测试和发布,非常麻烦。

所谓文人相轻,我这种行为遭到了小伙伴的无情嘲讽,当年的 Mac 君只好眼泪往肚子里咽,把愤怒都发泄在键盘上,每天在满天星斗的夜色中学习 Vim 技法,在清晨的微光中编译 Linux 内核,上午敲打键盘输出 Perl 程序,中午吃完五又四分之一口米饭之后开始研习 Vim 的多窗口和标签……由于单身住在公司,时间充裕到让你不好意思,很快小成,编码时鼠标锁进抽屉,双手敲击键盘上下翻飞,成就感十足,我对语法高亮情有独钟,经常把自己的界面配置的花花绿绿,没事看看也是件乐事。

自此以后,与 Vim 结下不解之缘,十几年过去了,工作一直没有离开过Vim,断断续续一直在用。到了2009年,我开始把工作环境完全切换到了 Mac 上,记得当时打开 Mac 的终端时,欣喜若狂的想,这不就是 Vim、Shell 和 IDE 的完美集成么?

场景


在不同的场景下采用最合适的工具,永远是最佳选择。这是就会有人问,Vim 适合什么场景呢?简单说来,Vim 比较适合 Unix/Linux 服务器端编程,当然这因人而异。我个人使用 Vim 主要用来进行 Shell/Python/C 编程。在 Unix/Linux 服务器端编辑和修改文件也离不开Vim,另外由于我个人工作环境是 Mac,所以改个文本文件查个代码的,也就用 Vim 顺手做了。

与很多程序员交流,大家会认为不用 Vim 一样能修改服务器端的文件,ftp拉下来,改好了再传上去。这当然是一种方案,但不是最优方案。而且极端情况下需要直接在客户服务器上解决问题,你总不能说「骚瑞,Sir,我不会在Linux下编辑文件,Down一份下来先」?这就像用Vim编写 Markdown 文件一样,能不能用,当然可以,甚至有人已经为 Vim 开发了 Markdown 插件,可以编写时通过快捷键查看转换的HTML文本,但是显然不如Mou/Byword。

编写 JavaEE、HTML/CSS/JS、Objective-C,最优方案可能是Eclipse、IDEA、XCode等,这些优秀的工具可以帮助我们提升效率,减少错误,但是如果你还想更进一步,那么Vim绝对值得拥有。

Vim用了很多年,也总结果过很多次,但不完整,我想这次在 MacTalk 能有始有终,完成这个系列。网络上介绍Vim的文章浩如烟海,各种精巧的用法数不胜数,看起来还是比较费时费力。Vim本身开箱即用,什么都不配置也可以使用其基本功能,如果大家掌握了基本操作,以下内容可以帮助提升效率,打造你的专属Vim。

待续……


*文章内容来自微信公众账号:MacTalk · 微信号:sagacity-mac · 回复 m 可以查阅所有历史文章和Mac Tips · 网站:https://macshuo.com

如果希望持续听MacTalk,点击{阅读原文}对作者进行小额赞助

Macintosh演化史(三)

machistory1

经常有读者提醒我,你还有好几个坑没填知道不?然后比着手指头说,第一个是你之前写过四篇「Vim」相关的文章,五呢?第二个是你在微信平台上写了「我和Mac」系列的前两篇,三呢?然后你债多不怕愁虱多不怕咬,居然又开了一个「Macintosh演化史」,你准备啥时把这些坑填平?

我通过测量坑的长宽深浅大小,发现确实是我挖的,真是此坑未平彼坑又陷,何日成坑爹?然后我就有两个疑问:

1、挖坑不填能算美德吗?总比不挖强吧……

2、有这么好记性的读者到底是好事还是坏事?

鉴于大家的热情,我决定把这几个系列接起来,Vim 系列也会搬过来,而且 Vim的一些内容也需要更新了,重新回回炉也是个乐儿。如果你们觉得哪个系列不好玩了,告诉我,我就会让城管对待小贩一样,让它们消失的像从来没有存在过!

Macintosh演化史(三)


1999年10月,Mac OS 9发布,这个版本是针对Mac OS 8的一个稳健的升级版本, 你们都知道这当然是一种文艺的说法,Mac OS 9相对于上一个版本并无突破性的改进,主要内容包括:改进了对AirPort无线网络的支持,改进了内存的实现和管理方式,允许AppleScript操作TCP/IP和网络设置,增加了简单的多用户功能,每个桌面用户可以拥有自己的数据和系统设置。

9系列的版本虽然延续到了2002年,但已是强弩之末,Mac OS X发布以后,技术架构发生了翻天覆地的变化,9系列最终只能做个承上启下者,已经不是Mac未来的方向。

写到这我不由得悲天悯人的想起公司和人的发展,一个公司从创立之出,三年后不死,必然会在战略、架构、人员、产品等层面不断进行调整和改变,可能某一个公司的支柱产品或中坚力量,突然就会不那么重要了,也有些默默无闻的产品和角色会突然崛起,这些都是正常的,无论你是崛起的甲方,还是没落的乙方,都没什么可抱怨和担忧的,世界在变,苹果不创新就会死去,人不进步就会退步,要么甘心没落,要么不断提升,就是这样!

无论多么不情愿,Mac OS终于到了退出历史舞台的那一天。2002年5月,史蒂夫·乔布斯在加利福尼的亚圣约瑟召开了全世界开发商会议,那一天他罕见的穿上了黑色西装,隐喻Mac OS 9的葬礼,事实上乔布斯已经迫不及待的想埋葬Mac OS系列了,因为 Mac OS X 已经横空出世!

Mac OS 9.2.2是Mac OS 9 的最终版本,至此,Mac OS 时代结束。

虽然我把System系列和Mac OS系列划分为了两个时代,但这两个系列的技术体系是一脉相承的,创新性的图形用户界面(GUI)、简陋的内存管理和协作式的多任务处理系统,以现代技术标准来看,这些技术和实现都是原始级别的,但在那个时代却是突破性的,尤其是在人机交互的使用体验上。

这两个时代还见证了苹果公司由盛及衰和重新崛起的商业奇迹,见证了苹果创始人乔布斯的放逐和回归,更重要的是,System和Mac OS系列为现代Mac操作系统提供了重要的技术基础和技术遗产,这不仅仅是设计和研发操作系统的丰富经验和组织架构,还包括一些具体的技术,例如包含了Finder的图形界面技术、支持分层的文件系统、虚拟内存、网络技术、脚本语言AppleScript等等,这些技术对后来的OS X产生了巨大的影响,直到今天!

技术的选择就像江湖上的优胜劣汰,你不停的向世界宣告,你依然优秀,你依然能打出各种眼花缭乱的地趟拳和大小洪拳,但是人们告诉你,我们知道你还很厉害,你还能打很多年,但是这儿已经不需要你了,因为这就是江湖!

Mac历史上最优秀的操作系统时代即将来临!