分享篇文章:为什么我会使用 Vim ?

2022-08-27 01:36:11 +08:00
 skywind3000

正文请点击:

18949 次点击
所在节点    Vim
195 条回复
lanlanye
2022-08-27 12:18:43 +08:00
Vim 这样的文本编辑器在代码重构上和 IDE 相比有天然劣势,接下来怎么样需要期待 LSP 的发展,如果 LSP 实现大一统,那 Vim 原生的编辑体验是强于 IDE 的。
格式化这种,集成现有的工具就够了,也不是非要自己写。
daveh
2022-08-27 12:25:34 +08:00
作为一个“老”vim 党(当然水平差勿喷),现已切 JetBrains 系,也来说说。主要还是号召大家有条件切成智能 IDE 去开发,节省折腾时间,把时间聚焦代码实现,早点写完回家陪老婆。
没有知乎账号,就回在这,有心 V 友也可以帮转给作者看看。

例子 1:格式化代码

> html 格式化
也表示还没看懂正则怎么就完成 html 格式化,只能说正则真强。
另外有个疑问他这个脚本,怎么格式化嵌在其他代码比如 JS 中的 html 片段?还有如果嵌入的是其他语言不能用正则去格式化怎么办?
而这用 JB 系的注入语言功能很容易完成,选择片段 Inject language ,接着格式化、代码智能提示等等都来了。

> 写 C++ 函数实现
同样他例子中已经有了类声明、怎么快速写 C++ 类函数实现头,其实根本不用这么复杂去处理文本,他需要的是一个智能 IDE ,能知道他还有一堆函数实现没写,例如在 JB 系中在 cpp 文件中按 Alt+Insert 生成代码,选对应函数,IDE 就自动把函数实现架子写好了,接下来就是填空。
倒是我想,他写个复杂脚本也完成了这个功能,有一天我要改函数参数怎么办?删除实现头再重新导一遍?那函数调用处怎么办?得一个个搜索出来去改?用 JB 系的重构功能改函数签名,很容易完成。

例子 2:功能完善

> 脚本 asyncrun.vim 异步执行编译
这个不知道该说什么?只能说他敲了这么多字,我一个鼠标点击、或者快捷键就完成。
甚至甚至,用 JB 系,我写代码都不用通过随时编译去检查代码写对没有,不管写 Java 还是 C++还是其他语言,你把 IDE 提示标红的 Error 改完,等到构建时一次性编译通过,就是这么爽。

例子 3:学习其他编辑器

> 代码实时格式化
这个他理解基本不准确,而且只学了个皮毛。
严格说 PyCharm 这个功能是代码语句的自动补齐,除了自动格式化之外,还能自动补齐代码块结束符,比如 " ) ; { } 等等;如果处于代码提示选函数阶段,还能一步补齐函数名及后续代码块结束;如果写了多行,也是一次性全部格式化补全。不太相信他脚本能学到了这个程度。
而且他也说错了,这个是 JB 全系标配功能,并不只是 PyCharm 的功能。

例子 4:界面扩展

> 加个主菜单目录
vim 比较方便地方就是命令,加个菜单还不如直接上完整 IDE 。

> 查看函数定义时,可以不跳转
函数定义可以看了,那接下来能直接预览函数实现吗?能预览 C++宏展开的内容吗?能预览宏定义 enum 定义取值多少吗?能预览 C++ auto 的实际类型吗?能预览 C/C++ struct/class 占用内存的大小吗?能在写代码自动提示时,直接看候选函数的介绍文档和详细参数吗?等等。
不是说费半天劲扩展了一个功能,其他功能也唾手可得,有些功能你是写脚本也写不出来。

例子 5:集成外部工具
这个集成没什么说的,基本功能。
关于文档说说,用 JB 甚至不用自己去集成,安装对应插件就行,如 man page viewer/dash 插件。
另外 IDE 自身也提供了大量丰富的文档集成,比如他例子中的 python ,直接鼠标放上去就能看,还不满意点提示中链接查看完整文档,都不用麻烦的切换到 Dash/Zeal 窗口去看。


例子 6:解决实际问题

> 远程服务器上临时编辑
这种就远程开发了,JB 的搞个 Gateway ,体验完整 IDE 的功能。


个人很钦佩钻研精神,放以前用 vim 时也会很赞他,但搞了这么多年开发下来,发现大道至简,还是不如用个功能齐全智能 IDE 省事。
广大 V 友 /vim 友有条件的,可以试试切换 JB 系,听老司机的没错,早点搞完回家陪女朋友 /老婆孩子。
dingwen07
2022-08-27 12:28:36 +08:00
我如何在服务器上编辑文本:
用 bitvise ssh client 连接
双击文件在 vsc 里编辑
ctrl-s 保存
daveh
2022-08-27 12:40:02 +08:00
@jdhao 其实我需要的功能基本上 IDE 自带的、要不就插件搞定。讲真 groovy script 写的比较少,不过体验了一下感觉很强,之前写过一个,在每行或选定的文本行前面加一个 1. 2. 3….这样子的序号,一般方法是三方插件,但我用脚本配合敲击下键就搞定了,思路你可以看看我以前回贴,脚本在公司服务器,不方便取出来。
20015jjw
2022-08-27 12:55:29 +08:00
我比较菜
所以 vim 只用 movement 和别人写好的无脑插件
所以 ide/vscode 开 vim 插件很香
LindsayZhou
2022-08-27 13:11:25 +08:00
@vopsoft #38
spacevim 或者 spacemacs
hxy100
2022-08-27 13:49:15 +08:00
膜拜大佬,一直在看楼主写的文章和脚本
XIVN1987
2022-08-27 13:59:42 +08:00
我记不住那么多快捷键,只能记住最常用的 Ctrl+C/V/X/Z 这些常用快捷键,,

所以还是 sublime/vscode 里面的 command palette 适合我
QlanQ
2022-08-27 14:16:37 +08:00
vim 就是一个文件编辑器,不要让他干 ide 的活吧,真的太累了
QlanQ
2022-08-27 14:17:08 +08:00
而且这种没有图形化的,改一个文件还可以,改一个项目,那真就是痛苦
xuanbg
2022-08-27 15:25:51 +08:00
有和我一样只用 vi 不用 vim 的么?
justin2018
2022-08-27 17:43:23 +08:00
只会用

i dd wq! q!

平常就修改下 Nginx 的配置 😶
charlie21
2022-08-27 17:59:51 +08:00
单靠 “功能强大” 就能畅销的时代已经过去了

现在,信众多寡取决于谁门槛低 参考

为什么大家都认为惠能的“本来无一物”要比神秀的“时时勤拂拭”要高明?
http://web.archive.org/web/20220105181009/https://www.zhihu.com/question/31008439/answer/2075213934
akira
2022-08-27 18:12:24 +08:00
为啥你们要直接连服务器去改代码。。
charlie21
2022-08-27 18:13:46 +08:00
瑞典人不管畅销与否,只管东西是否好用。

“畅销东西,各有各的好

不畅销东西,它是有问题的。” 这是人们聊的

但是,不畅销东西,也有好的点 也是各有各的好,畅销东西 也有问题 也是各有各的问题。

甚至,不畅销东西的好的点正是基于它的问题:人们喜欢的是它定义问题的方式。

瑞典人认为:所有东西都有自己的好,所有东西都有自己的问题。瑞典人认为,从原理上,但凡东西就是有缺点的,这与畅销与否无关:畅销东西 —— 畅销东西并不是没有缺点,畅销东西恰恰是驾着自己的缺点而畅销起来的。

这个东西畅销,就是发生了这个东西驾着自己的缺点畅销起来的。这一点 很多人无法接受,人们认为 “只有没缺点的东西才能畅销” -- 如果人们真的这么认为,那么人们脑子有病!
v2defy
2022-08-27 20:09:29 +08:00
@vopsoft 推荐 astro nvim ,个人感觉这个是最实用最好看的,比什么 space vim ,lunar vim 好得多
lululau
2022-08-27 20:31:08 +08:00
vim 最受不了的是 vim script 的语法,所以我在 8 年前转到了 emacs 阵营,不过现在有了 nvim ,倒是也可以再尝试一下,不过我仍然建议真正的 vim 用户了解一下 emacs ,从 spacemacs 开始, 因为 spacemacs 默认集成了 evil ,一个在 emacs 里模拟 vim 的键绑定和其他操作方式的插件,你可以像使用 vim 一样使用 emacs 。org mode 和 magit 真是两个神器,可能这里说的大多数编辑器都可以通过插件扩展,你甚至也可能见过某个插件还有自己的插件扩展机制,但是你一定没见过某个插件的插件还有自己的插件,更没见过某个插件的插件的插件还有自己的插件吧,你也一定没见过一个计算器的手册页有二十万字吧

不过即便是对于 emacs 用户,vim 的 modal editing 和 text object 也是受用一生的财富
imycc
2022-08-27 20:57:18 +08:00
以前一直把 vim 当做主力编辑器,大概五六年。那会没有趁手的远程开发工具,直到 vscode 的 remote development 发布。然后我就彻底叛变到 vscode 了。

说一个最直观的改变。我给 php 配插件,浪费了几天时间,效果还不尽人意。而换 vscode 的那天晚上,在插件市场随便点点点,就配好了常用的插件。这才是效率,什么乱七八糟的“我随便就写出来一个插件”都是扯淡。

现在的开发部署流程决定了,在生产环境服务器上没有什么“重编辑”的工作。运维除了救火,也不会直接在生产环境改配置。vim 那常见几个命令学完就完事了。而开发环境装个 vscode-server 根本不是事,就算内存泄露了又能怎么样?

编辑效率上,vim 的编辑模式确实有独到之处,搞个插件就完事。至于那些正则替换和宏操作,sublime/atom/vscode 的多光标操作+正则的模式,我认为才是正道,用 vim 构思那些规则的时候,我用多光标早就操作完了。
haolongsun
2022-08-27 21:35:48 +08:00
我用 vim 的原因是笔记本经常外出,然后省电。。。,vim 一旦熟练掌握,自认为比 ide 效率高,不用点点点了。
我还见过最变态的,除了 java ,其他都用 vim ,只改几行某些默认配置,lsp 都不用的,裸写程序,这个师傅干了二十几年了,他说他开发要用的库函数他都记得一清二楚。
haolongsun
2022-08-27 21:42:51 +08:00
@v2defy astro 是我体验过最好的 nvim 开箱即用了,++,不过 helix 也很香,也开箱即用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875730

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX