易燃物汇聚 YouTube 有声书与书评
Vim实用技巧 封面

Vim实用技巧

Drew Neil

1.5万人在读
19.3万字总字数
¥35.4定价

有声书与视频解读 YouTube视频解读 1

内容简介

Vim是程序员、网站开发人员及系统管理员的重要工具,其速度和效率令其他的文本编辑器难以望其项背。Vim能在几乎每一个系统上运行,并支持大多数编程语言和标记语言。《Vim实用技巧》包含了Vim的实用技巧和使用指南。全书概括了121个技巧,通过丰富的示例、清晰的体例和详细的讲解,展示了高效使用Vim的崭新方法。《Vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的Vim技巧的必由之路。全书共21章,包括121个技巧。每一章都是关于某一相关主题的技巧集合。每一个技巧都有针对性地解决一个或一类问题,帮助读者提升Vim的使用技能。《Vim实用技巧》示例丰富,讲解清晰,采用一种简单的标记方法,表示交互式的编辑效果,可以帮助读者快速掌握和精通Vim。

读者书评

★★★★★

敲代码时,有一个困扰我很久的问题,终于在最近的一次搜索中找到答案。这问题发生在Vim普通模式下: # 1. 选中并复制一个单词Avey# 2. 搜索单词bbbbb/bbbbb<CR># 3. 用单词A覆盖掉第一个单词bbbbb<Esc>vep# 4.继续覆盖下一个bbbbbn. 问题出在第4步,n.在此处没有反应,单词bbbbb并不变成A。我网上冲浪好多次,都没找到答案,直到某天在Stack Overflow上看到这样的一句: In 2023, you can use P instead of p, which will allow you to keep pasting the "yanked" selection.(粘贴时可以使用大写的P代替小写的p,这样复制的内容就不会变化啦。) 由此,我找到这问题的处理方式。 于此同时,我在其它回答中看到registry关键字:p操作会默认将被覆盖的内容复制下来,可以通过使用不同的寄存器来存储要粘贴的内容。我对Vim的寄存器一点不了解,导致这句话看不太懂,于是内心又突发奇想:“Vim是不是其实也有相关书籍的,不然找一本来看看?” 我找到《Vim实用技巧》然后看完了它,整个的阅读过程,是在不停发出“帅!”“赞啊!”之类感叹中度过的。作者于书中分享的那些操作方式,巧妙实用又有迹可循。 我初次接触Vim,是15年刚换到跟萌哥一个组时。萌哥对我敲Lua代码的方式(在Visual Studio中装一个BabyLua插件)感到好奇,经过一番讨论之后我发现:“萌哥敲代码的手法可太熟练了。” 见贤思齐,从那以后我敲代码,也都用Vim。(前两年,改成在VS Code中用Vim,为这切换,我还专门理了一篇小博客。) 正像使用Git一样,熟悉基本操作之后,这些年来,我使用Vim的方式是没有大的变化的,直到想要优化复制粘贴方式的今天。 正像阅读《Pro Git》一样,读完《Vim实用技巧》,我对Vim也新增许多认知、多出许多未来会常用的指令。 本篇读书笔记,便是这些认知与指令的整理。未来的我,将基于此,持续完善自己的编辑能力。(作者使用Vim写成本书,由此,未来的公众号写作,如果是电脑上操作,我将也用Vim。) 一、一些概念性认知1、Vim是什么? Vim是一种文本编辑方式,使用Vim编辑,我们可以保证手不离开键盘,快速做出自己想要的修改。熟悉Vim之后,我们敲代码时,会有一种行云流水之感,脑子怎样想,手便怎么做;手是绝不会拖脑子后腿的。 Vi是Visual单词的缩写,而Vim则是Vi improved(Vi增强版)的缩写。 2、Vim的操作机理是怎样的? 操作符与动作命令的结合形成了一种语法。这种语法的第一条规则很简单,即一个操作由一个操作符,后面跟一个动作命令组成。学习新的动作命令及操作符,就像是在学习Vim的词汇一样。如果掌握了这一简单的语法规则,在词汇量增长时,就能表达更多的想法。 假如我们已经知道如何用 daw 删除一个单词,然后又学到 gU 命令(参见 :h gU)。它也是个操作符,所以我们可以用 gUaw 把当前单词转换成大写形式。如果我们的词汇进一步扩充,学会了作用于段落的 ap 动作命令,就会发现我们可以进行两个新的操作:用 dap 删除整个段落,或者用 gUap 把整段文字转换为大写。 Vim的语法只有一条额外规则,即当一个操作符命令被连续调用两次时,它会作用于当前行。所以 dd 删除当前行,而 >> 缩进当前行。gU 命令是一种特殊情况,我们既可以用 gUgU ,也可以用简化版的 gUU 来使它作用于当前行。 执行、重复、回退,是Vim的编辑哲学。我们的终极形态,是完成一次“语法”执行之后,剩下的重复修改,只用.! 3、寄存器 此前的我,从没有了解过Vim的寄存器概念,或者说尝试了解过,但没有了解明白。 寄存器示例 其实Vim的寄存器概念很简单,它就是一个容器而已,它存储的,是我们复制的内容或一些类似文件名的固定配置。 Vim拥有很多个寄存器,每一个寄存器有自己的单独名字。如上图,在Vim普通模式下,按:后输入reg便能查看当前拥有值的所有寄存器。 下面是两个简单使用示例(注意:字符"是必须的): # 复制当前单词到寄存器a"ayw# 将寄存器a中的值粘贴出来"ap# 将当前单词复制到剪切板"+yw# 一个只读的寄存器,保存当前文件名"% 4、宏 正录制宏的提示 宏概念,与寄存器一样,都是以前了解过但不知道具体如何使用的,我甚至常常疑惑:上图中的那个提示到底是什么意思呢? 宏和.一样,都是为了方便的重复操作,以下是一个具体示例: # 1. 开始宏的录制,将指令存到寄存器a中qa# 2. 在行前插入var关键字Ivar <Esc># 3. 在行末插入一个;符号A;<Esc># 4. 结束宏的录制q# 5. 在下一行执行宏当中的内容,可太帅了啊!这会在下一行的行首行末分别加上var和;j@a 与宏相关的指令,还有下方两条: # 查看寄存器a中的指令内容:reg a# 在选中的区间内回放宏q(帅必须再加一):'<,'>normal @q 宏的具体指令内容存放在寄存器中,所以是可以直接将其内容复制进当前正编辑文件,编辑该条宏之后再将其复制进寄存器然后再执行宏的。 此处再加上一点自己的小想法:关于宏关于各种指令的详细阐述,建议大家看原书,我这里只记录自己不太熟悉但会常用的指令。正像书中所说: 就像黑白棋游戏一样,学会Vim的宏只需一分钟,但要穷其一生才能精通。不过从新手到高手,每个人都能从该功能中获益匪浅,因为它让我们的工作易于自动化。 二、那些将常使用但不太熟悉的操作1、普通指令 # 选中上次选中gv# 行末插入,代替$a。少输入一个字符也算进步A# delete a word,从前面从后面都可以删daw# 对数字执行加和减操作,也太太太太帅了吧!<c-a><c-x># 反转从当前光标到单词结束内字符的大小写g~w# 行内搜索,,逗号往前挪,;分号往后挪f# 放在某个字符上,可以查看这个字符的编码ga# 可视模式选择时,可以用o重新调整开头,用O调整结尾v# 大写的v,选中整行V# 进入Vim历史命令记录窗口q:# Ctrl+w是控制窗口的前置键,后面跟上jkhl(已经成为程序性记忆,手指知道但脑子不知道)是向对应方向切换窗口=将所有窗口等分,_最大化窗口高度,|最大化窗口宽度# 前面加g,是在屏幕行中操作,如果一行文本太长,在屏幕中可能会显示两行,这两行,就是屏幕行gj/gk# 移动到第一个实际行的第一个非空白字符^# 按照字串移动B/E/W# 将文本选中并复制到系统剪切板("+是系统寄存器)ve"+y# 选中大括号内部的内容(大括号可以换成"、小括号、尖括号等等)vi}# 选中大括号内部的内容并且包含大括号va}# 如上,将大括号内部内容删掉并开始输入新的内容(d和y是一样的,太强大了)ci}# 如上,选中xml标签内的文本vit# 标记当前位置,第二个m可以是a到z。mm# 跳转到标记位置(当前文件内)`m# 标记当前位置,第二个M可以是A到ZmM# 跳转到标记位置(多个文件间跳转)`M# 在当前文件的修改位置列表中来回跳转g;和g,# 从上次插入的地方继续插入gi# 文件名跳转(VS Code中还是老实用F12吧),g代表“当前一整行范围”gf# 搜索的时候,加上\V,可以搜到真正的.号/\V.# 搜索时候,加上\v,并在单词左右加上小于大于号,可以只匹配到完整单词/\v<the><CR 2、插入模式 # 加上寄存器名字则是粘贴ctrl-r" 3、命令行模式 # %代表整个文件,normal代表执行普通模式下指令 A;代表在行末插入一个分号(帅啊!但vscode vim未实现):%normal A;# 选中某区域后直接按:,命令行中会多出:'<,'>表示一个区间,之后再输入normal A;,则在选中部分每行末尾都加上;了# 缓冲区(打开的文件)列表正向移动:bn# 缓冲区列表逆向移动(我一般用:b1,切换到具体某个更多一点):bp# 删掉某个缓冲区:bdelete n# 在命令行模式下运行shell命令:! ls# 只显示当前正活动的窗口:only# 打开文件管理器,并显示当前工作目录:e.# 打开文件管理器,并显示活动缓冲区所在的目录:E# 打开循环查找:set wrapscan# 关闭循环查找(记在此处是为了告诉自己,设置bool值,可以直接在选项前加no):set nowrapscan# 顺序查找test/test# 逆序查找test?test# 统计当前匹配到的个数(映射快捷键,gc似乎是没有使用的;但vscode中默认有数量,好像又不太有必要哦):%s///gn# 在查找test后再跳转到匹配单词的最末处,这种情况下,可以很方便的n.出单词的完善,这个情况我遇见过很多次,此处很有用/test/e# 接上条,如果匹配之初忘记跳末尾,可以用这个换成末尾(帅!)//e 上面查找是否加e有些难以理解,此处配一张图: 匹配到单词的末尾 三、小结阅读本书时,我经历一个小小的情绪变迁。 刚开始学着使用Vim时,我超级超级佩服萌哥(现在当然依然佩服着)的熟练,到自己跟着本书学习之后,再体验一次之前已经有过的认知:其实这世界上的技能,都是可以花时间去了解去熟悉然后学会接着熟练的,一切都在于是否愿意去花时间学习。难怪萌哥会说:“没什么的啦,你学一学也就会了。” 练无止境,且持续熟练着,“不加思考就能用Vim完成很多操作”是我的目标。 最后,我当然要再安利一次:“程序员们,不然花两周时间试试看Vim?那种手不用离开键盘的敲代码体验,真不错的。待操作稍微熟练些再看《Vim实用技巧》,它会帮助我们完善关于Vim的认知,它让我们理解某个操作为什么会有效。”

★★★★★

原文中有句话,大意说,学会Vim只需一分钟,但要穷其一生才能精通。 我们发出一个愿望,有了一个想法或者行事方向,就面对一生的复杂的实践。 前几日 Bram Moolenaar 这位vim创世神去世了,他的开源精神和对于乌干达儿童的支持,以及将一生奉献给vim的行为是我们的崇高榜样。也许在泥泞的世道上我们不得不使用一些技巧生存下去,但总有优秀的人以精神纯粹的方式给存在着 。vim如此多的代码编写者带来便利,和vim在一起的工作的时候,偶尔会想起bram,然后重新思考如何尽可能用善意对待整个世界。他和他的vim是实践者,也是一座精神信标。 我个人是希望自己高效优雅的解决问题的。学习双拼、vim都是想达到思维不受输出影响的状态。与此同时要提醒自己vim只是一项工具一种个人技巧,改变问题的是技术进步,处理问题靠的是哲学、政治。现在工具更新剧烈学什么都是屠龙之技。很多东西就是学会了,青春也没了。vim对与代码编写者就像老会计对于算盘,武林宗师对于宝剑。都是锦上填花的东西,也必将成为历史车轮上的尘埃,最终留下唏嘘叹息。如何处理好当下的优化,和未来发展的关系就是另一个问题了。也许你的工作要在垃圾袋上秀花,也不妨碍以刺绣垃圾袋的名义卖个高价,让自己生活好一点。或者让自己的工作给自己带来美的享受。无论如何,向往优秀是一种状态,和所处的环境无关。躺平摆烂是一种智慧,这能保证你在其他层面的优秀。 本书可以说完美的达到了著书的目的,我在阅读的时候感觉到vim的方法论和我之前操作Excel体会到的东西遥相呼应,传授知识的时候考虑到了对读者不了解的概念进行遮蔽,先讲.命令这类重复的哲学,再讲控制自己操作颗粒度使操作可重复的技巧,之后再具体写窗体控制正则、ctag,可以说深入浅出了。段落和标题也起的很利落,能直观的从目录中检索到自己需要查看的信息。只是现在其他ide也真的很香,pycharm、vscode都有兼容插件,当然,形式不重要,不管用什么,用的都是vim。 这本书很详细,即便你对vim以及很了解了,你也能从书中获得一些新的点子。我在读这种技术类的书的时候希望自己能够掌握整个书的框架,以便以后遇到对应请况的时候查询,但经常忍不住花费很多时间在了解具体细节上,这也从侧面说明这本书作者和翻译的语言水平还是很平易的很有水平的。 吹的这么神,其实vim本身还是有问题,使用vim最大的问题是,如何放弃vim。还有就是对于中文处理差一点意思,这么陡峭的学习曲线,这么狭窄的应用范围,沉没成本很大的,学了就是自己暗爽,没学也别惦记就是了。

★★★★★

我在2018年入坑的Vim,当时在看了各种教程、Blog、速查表、“字根表”后才开始看的这本书。看的时候发现这是一本内容相当全面,并且编排的特别好的书。但书毕竟是书,内容太详细,现代快节奏大家并不一定有耐心看。我的建议是,可以看短一点的教程先快速入门,等用Vim进入“存活期”后(也就是能用Vim进行无障碍编码),想进一步提高自己并系统的学习一遍时,可以看看此书。当然作为字典常备手边查询也不错。这本书我并没有看完,因为不可能有人真的把Vim学完,每个人都是用的Vim子集,挑一部分自己顺手的功能,存活下来后就一直用了。

★★★★★

我以前以为自己用vim已经很快乐了 直到看到这本书,才知道 以前的我,不是真正的快乐

★★★★★

超级棒的一本 vim 指导书,在这本书之前,我读过微信读书的另一本 vim8文本处理实战 ,感觉也蛮不错,那本书非常符合我对工具书的既有印象。但这本书相当不同,要技巧有技巧,要原理有原理,甚至还有一些历史。本书章节安排相当合理,每个章节的内容都刚刚好,从头到尾一气呵成,读完收获非常大,每一个对 vim 感兴趣的朋友都应该试着读一读。

★★★★☆

工具书,初次阅读建议使用网页版微读,边看边练过一遍即可,学核心理念,而非末枝细节。像工作模式,动作命令,寄存器,窗口缓冲等基础必须掌握,插件和正则适度掌握,宏对程序员而言没有必要太深入,毕竟不是做大量文档处理类的工作。自己做配置的话,主要考虑按键映射和常用插件:目录浏览,自动补全,符号跳转,编译调试,主题美化等。

★★★★★

- `《Vim实用技巧》, 这本书与其说是技巧不如说是Vim的哲学, 不断刷新你对"一个编辑器能做什么"的想象`, 简直神书 - Vim是一款可高度客制化的文本编辑器, 学习曲线很陡, 但没有程序员能够拒绝一个不需要移动双手的编辑器 - 像Vim高手一样思考问题, 能以与思考同步的速度编辑文本 - 存在大量重复性工作, .命令重复上次的修改, 点命令是一个微型的宏macro - 明确什么是一次修改, 普通模式中执行的命令, 进入插入模式时也会形成一次修改 - Vim的理想编辑模式, 一键移动, 一键执行, 减少无关的移动, 简化等效的操作 推荐的Vim路线, 先看完这个然后开始使用LazyVim作为主力编辑器, 体验超好

★★★★★

Vim我很久以前就在用了,但是一直用的磕磕绊绊,一方面学习成本确实比较高,另一方面现在的IDE真的是太香了,在这个时代学Vim,感觉就像部队给我发了把AK47,但我固执地试图研习传统刀法。但我觉得这是值得的,我相信没有程序员可以拒绝一个几乎不需要移动双手的编辑器。 这本书我觉得很适合新手来看,它虽然是按技巧方式组织的,但是很系统,每一章专注于一方面的内容,每几章结成一个部分,条理非常清晰,当成一个教材来看也未尝不可。而且几乎每个技巧都有例子的讲解,非常容易搞懂和复现。我是很认真地过了一遍的,其中有些部分现在看来可能没必要那么上心,比如宏的部分,我觉得除非是大型的修改,不然光是去思考怎么构造一个宏命令,就够我想半天的了;再比如ctags的部分,我用python尝试了一下,确实没有Vs code和IDE用起来那么丝滑,而且对于编辑器之外的修改始终束手无策,比较遗憾。书看完前半部分的时候我甚至想直接换到Vim上进行以后的开发,但是看完后半部分我觉得还是IDE用着比较香,hhh,或许把Vim作为一个插件来使用才是最适合我的方式吧。 看完还要多练习,相信我在Vim上花费的学习时间一定能大大增加我的开发效率,day day up!

★★★★★

非常全面,而且引导性非常好的书。虽然大模型几秒内就罗列出各种vim命令了,但这本书依然能启发一些思考。第六部分工具之前的内容,都是经典的vim操作,至今不过时。但如今neovim时代,最后那部分工具就没必要看了,安装一个Lazyvim带来的体验对第六部分的内容简直是降维打击。书的内容不错,但微信读书排版稀烂,代码和命令的阅读体验很差。

★★★★★

非常好的一本书,我最开始用了一段时候的Vim后面转到Neovim,用了也有好几年了。这本书依然会让我学到很多之前不知道的知识,而且自己也在尝试运用这些学到的知识。 不过这本书的排版确实有很大问题,里面的代码应该要放在代码块里面,简短的命令应该要可以复制,部分命令还存在错印。 Vim的作者去世后我才第一次了解到Vim作者的经历,他是一个很有大爱的人,非常佩服他。 Vim 的安装许可证与众不同,它是作为慈善共享软件发布的(参见:h license )。这意味着它可以被免费使用,但它也鼓励你为 ICC 荷兰基金会提供捐款,该基金会旨在帮助乌干达的贫困儿童。该捐赠项目值得你的付出,并可借此向Vim的作者们表达谢意。 相信这个世界不会变好,但是我希望它变好。

书籍信息

作者Drew Neil
译者杨源 车文隆
出版社人民邮电出版社
出版时间2014-05-01
ISBN9787115338693
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数36