vim 从嫌弃到依赖(23)——最后的闲扯
截止到上一篇文章,关于vim的基础操作都已经讨论完了,这篇我主要就是闲扯,瞎聊。就想毕业论文都有一个致谢一样,这篇我们就作为整个系列的致谢吧
学习vim到底能给我们带来什么
学习vim到底能给我们带来什么呢?工作中很少有用会用vim来做主力编辑器,现在有各种现代化的编程工具,像JB 全家桶、visual studio 系列。它们从上手难度和集成化程度来说,都做的比较好,离开vim也能编程。而且vim本身也不能给你的简历带来什么亮点,没有公司招人的时候会要求熟练掌握vim、也没有人在简历上写自己熟练使用vim。面试时也没有面试官会问你vim相关的内容,反倒是你用学习vim的时间去学一门新的编程语言,像 go、rust 之类的能给你带来一份新的工作,能带来涨薪。从这个上面看,学习 vim 似乎变得有那么些鸡肋甚至有一种耽误时间的感觉。
我最开始学习vim的初衷是,我需要在linux下进行一些环境的搭建,例如Apache、nginx、或者其他的服务。在linux的终端中,vim算是标配,几乎每个linux服务器都会安装vim。那个时候我只会按 i 进入插入模式、按方向键移动光标。它对我来说就是一个linux上比记事本还麻烦的一个文本编辑器。
后来我看了 《程序员修炼之道》、《程序员的呐喊》这两本书,书中提到:我们程序员平时会花大量的时间与代码、文本编辑器打交道,如果每天抽出一些时间花在优化编辑器上将会大有好处。而且《程序员的呐喊》这本书十分推崇emacs。我遵照书中的意思学了一段时间的emacs ,发现emacs 中最高效的编辑方式是一个叫做 evil 的插件,它是一个 vim 的模拟器。而且后续我了解到很多编辑器都有相关的vim插件。这个时候我开始意识到vim并没有我之前想象的那么简单。
随着emacs 的学习和使用进入瓶颈,我意识到要想用好 emacs 首先还是得学会如何使用 vim。这个时候我立马入了 vim 的坑。而且通过学习 vim,我越来越觉得 vim 给我带来的好处大于学习任何一种编辑器。
首先,vim 最被推崇的是它的一套文本操作方式,例如为了减少快捷键的按键次数以及为了更好的抽象现实中编辑文本的场景,它使用了分模式的办法,不同模式下不同按键有不同的功能。在这它将文本进行分级,分为字符、单词、字串、句子、段落并且提出了文本对象的概念,极大方便了我们处理文本的速度。同时它也有 . 命令和 宏的操作,进一步简化了重复操作。
再者它极大的继承了 unix 的哲学,专门的软件做专门的事并且将这个事做到极致。它很方便的和外部程序做集成,扩大了功能范围。
最后就是它的高可定制性,使用者可以方便的根据自身的工作场景做定制,做出符合自己的编辑器。
如今 vim 已经不单单指一个软件了,而是一整套完善的文本编辑技术,学好了这个,后续在任何编辑器上都可以用到,例如各种编辑器IDE都支持vim 快捷键或者vim 插件。可以做到无缝切换编辑环境。
另外学习 vim 给我培养了一种解决问题并从中学习的思路:根据实际场景提出问题-->找到解决办法--> 寻找更好的办法-->学到新知识-->将新知识-->使用新的知识更好的解决之前的问题。我想我通过前面的一些文章已经传递了这一思想,例如根据所学知识不断的完善 在每行最后添加分号 这一操作。使用 . 或者 宏来操作重复内容等等。甚至还有小伙伴在评论区给出更好的解决方案,这些都是这一思路的体现。
由于不断有新知识,而且知识可以很快的运用到工作中。学习vim的过程有很好的正反馈,以前需要不停用鼠标点或者需要自己手工完成的操作,现在只需要几秒钟或者几分钟就由vim自动完成的这一喜悦使我在学习vim的过程中一直乐在其中。
我想这就是我学习vim和使用vim的意义和快乐所在吧
写这一系列文章的心路历程
最开始学习vim的时候我很困惑,读vim的用户手册显的干巴巴的,读的头昏脑涨,记得的不多,基本合书就忘。网上的教程很多都是直接罗列命令,跟用户手册差不多。或者直接写一堆配置告诉你vim可以配置的很好用。这些充斥着网络,但是又不是我这种初学者需要的。我希望的是有一个教程在实际使用中循序渐进的帮我掌握vim这些知识点,需要一个教程跟着它进行操作我就能理解并在实际中使用vim。我需要一个vim手册和实际使用的一个桥梁。很遗憾的是我没有找到我想要的教程。那么我就自己写吧,我相信肯定有vim的初学者跟我当初遇到的情况一样,我想把我心目中认为最适合我的教程写出来,没准它也适合其他人。
在写这一系列文章的过程中,我深刻体会到,在如今互联网环境中,一旦写出什么东西,这个东西马上就不属于你。当然这个并不是再说有人抄袭之类的。我只是在感叹互联网中的内容传播速度,从我更新第一篇注水的内容开始,马上就有人关注并且给我评论说支持我。这无疑给我了很大的勇气,让我慢慢更新完这一系列文章。中间也有白天上班、晚上整理资料、写博客,白天在抽时间发表的时候,有时候也挺累,偶尔也想休息一下或者断更,中间有想法更新我觉得更有意思的内容。但是想想那些因为我的这些文章而关注我的人,不知道他们看到我在断更之后会是怎样的失落,这种好不容易找到适合自己的本想好好跟着学习,结果却被迫中断的这种心情,我很能体会。既然如此那就硬着头皮更新吧。这一系列的文章一旦开始立项、更新,那么它就不属于我自己,而属于各位希望通过这些文章学到点东西的小伙伴。我有义务将它们一一发布出来。
中间也有不少小伙伴私行我,告诉我他们通过我的文章学到很多东西,也重拾了对 vim 的兴趣。这些鼓励的声音给了很大的帮助。特别是 知乎的用户 @ugvibib。最开始是他一直在给我评论分享自己的学习心得,也是他不停给我私信提醒我某些地方有错别字或者排版有错误。这些文章有他一部分的功劳,感谢 @ugvibib 负责给我校对。
在写这些文章的过程中,我真的体会到“您的点赞关注评论是对我最大的支持”这句话并不完全是骗赞,骗流量的空话。我在更新这一系列文章的过程中也真心的希望得到反馈,得到关注,让我知道我写的这些破玩意还是有人看的,有人能从中获益,这些并不是我自己在这自说自话,自嗨,这些也并不是网络垃圾。有人关注、有人评论和点赞给我了继续更新下去的动力。
后面该干什么
关于vim的基础操作到此为止就全部更新完了,但这并不是vim的全部。后面该如何学习vim呢?
- 通读vim用户手册,相信通过这些文章的学习各位小伙伴再重读vim手册也不会感到无所适从。我们可以从vim手册中找到比我介绍的更适合自己的操作方式。形成一套只适合自己的操作流程
- 开始学习
vimscript慢慢定制自己的vim - 并不是所有的场合都允许使用
vim的。下面可以考虑将vim的操作方式转移到其他编辑器上,例如visual studio code、emacs等等。
最后感谢各位关注和鼓励我的小伙伴,下一个专栏我想继续写vim相关的。暂时定为写 vimscript 和vim配置相关的内容吧。
vim 从嫌弃到依赖(23)——最后的闲扯的更多相关文章
- VIM插件攻略
工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.好吧,我知道这是废话...不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样 ...
- Vim篇
Vim编辑器中的一些常用命令: 1:shift+* , 选取光标所在处的整个字符,并查找.(十分方便),快捷键gd 2:set nu , 显示各行行号,使得基于行的命令更方便. 3:shift+% , ...
- ctagst简单应用,将Vim改造:Ctags,Taglist,Cscope,OmniCppComplete,SuperTab,Winmanager,NERDTree,MiniBufExplorer,vimrc
vim + ctags $ ctags #给同一个目录下的所有文件建立tags 这时在tags文件所在的目录下打开源文件阅读,vim就会自动调用tags文件.如果tags文件不在当前目录下,能在命令模 ...
- 【转】将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
原文网址:http://blog.csdn.net/bokee/article/details/6633193 工欲善其事,必先利其器.一个强大的开发环境可以大大提高工作效率.好吧,我知道这是废话.. ...
- How do I close a single buffer (out of many) in Vim?
I open several files in Vim by, for example, running vim a/*.php which opens 23 files. I then make m ...
- 用VIM查看编辑二进制文件
用VIM查看编辑二进制文件 vim可以很方便地编辑二进制文件,个人认为它比emacs的二进制编辑方式更好用.vim中二进制文件的编辑是先通过外部程序xxd来把文件dump成其二进制的文本形式,然后就可 ...
- [转]Vim插件管理工具Vundle
原文:http://www.linuxzen.com/vimpei-zhi-xi-lie-cha-jian-guan-li.html 当转载成为一种习惯.. 最近对Vim进行了一番较大的配置变动,所以 ...
- .vimrc快捷键设置
$ cat ~/.vimrc,centos7是在/etc/vimrc文件中配置. nmap <C-_>s :cs find s <C-R>=expand("<c ...
- LAMP动静分离安装(源码安装)
环境: 版本 IP地址 源码包版本 Centos7.5_mysql 192.168.111.3 mysql-5.7.24.tar.gz,cmake-3.13.1.tar.gz,boost_1_59_0 ...
- Linux常用shell命令
1.>>>>>刚安装好的ubuntu需要为root创建密码[解决]passwd root 2.>>>>>安装完ubuntu后需要更新[解决] ...
随机推荐
- Solon 开发进阶,二、体外扩展机制
Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 Solon 的一个特色:体外扩展机制,用于解决 fatjar 模式部署时的扩展需求.比如 ...
- Jenkins Pipeline 流水线 - withCredentials 使用
添加凭证 Pipeline script pipeline { agent any stages { stage('withCredentials 使用凭证') { steps { withCrede ...
- Kubernetes(K8S) Deployment 升级和回滚
创建部署详见 Kubernetes(K8S) Deployment 部署 Pod 传统应用升级,一般是V1.0的jar包,有一个应对 1.0 的 shell 启动脚本.升级时,传 2.0 的 jar包 ...
- Oracle 删除唯一约束
1.查出有哪些约束 SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS FROM USER_CONSTRAINTS WHERE TABLE_NAME ='D_D ...
- Python 基于深度学习的 opencv 车牌识别系统,可以准确识别车牌号
大家好,我是程序员徐师兄,6 年大厂程序员经验,点击关注我 简介 毕业设计基于Opencv的车牌识别系统 车牌搜索识别找出某个车牌号 对比识别车牌系统 车牌数据库认证系统 车牌图文搜索系统 车牌数据库 ...
- 销售订单BAPI增强
一.需求背景 在销售订单批导时,需要调用BAPI:BAPI_SALESORDER_CREATEFROMDAT2维护成本中心字段, 二.增强实现 BAPI中没有该字段,需要通过增强的方式导入.通过BAP ...
- IntelliJ IDEA项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
IntelliJ IDEA项目导入时报错: The import javax.servlet.http.HttpServletRequest cannot be resolved 翻译一下错误信息是说 ...
- 【调试】sysRq按键使用方法
SysRq键简介 SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用.CPU任务处理.进程运行状态等系统运行信息. ...
- vue-cli3title标签中的htmlWebpackPlugin.options.title
https://blog.csdn.net/weixin_56650035/article/details/119355625
- ReentrantLock 可重入锁总结
本文为博主原创,未经允许不得转载: ReentrantLock 是一种内置锁,也叫可重入锁(ReentrantLock),它允许线程再次获取已持有的同步锁,这样防止死锁的发生.在使用Reentrant ...