发自己写的几个 vim 玩具脚本, 有类似需求的可试用, 也欢迎意见,建议,修改等

2016-06-13 17:09:49 +08:00
 KentY

用 vim 10 好几年了, 应该说日子不算短了, 有时候使用时遇到一些机械性的重复工作或特殊需求, 就想弄个脚本来做, 所以陆续写了些脚本. 代码量不是很大的, 就放自己的 vimrc 里了. 稍微多点的, 就另写了个脚本, 但基本都属于玩儿票玩具水平. 如果有类似需要的, 可以查看试用, 但凡能减轻你的工作量, 我会很高兴. 因为自己做的东西有第 2 个人受益也是个让人欣慰的事.. 同时也欢迎各种意见建议.

所有脚本都有 readme 详细解释, 可点进去看, 基本都有截图, 大多数有 gif 动图:

4372 次点击
所在节点    Vim
29 条回复
itfanr
2016-06-13 17:27:24 +08:00
mark 。大神啊
HaoC12
2016-06-13 19:21:44 +08:00
很酷的样子~
bramblex
2016-06-13 19:27:49 +08:00
https://github.com/bramblex/BlxVimrc

我造了个这个玩具
SpicyCat
2016-06-13 19:30:16 +08:00
收藏了
congeec
2016-06-13 19:30:18 +08:00
虽然用不着,不过要顶你一下
KentY
2016-06-13 19:42:39 +08:00
@bramblex 对于 vimrc 的管理, 各人有不同倾向性. 有那种按功能分成各种不同小文件, 再 source 的, 觉得那样便于管理修改的. 可能你就是这样的人群中一员. 我个人还是倾向一个 vimrc 文件. 因为这个文件再大也大不到哪去, 我个人的就不算很小的了. 包含注释行数大概 900 多吧. 但是通过 fold 什么的我觉得查找, 修改挺方便的. 我不排斥你那种多配置文件的方式, 但是各有各的便利和不足, 主要看个人习惯了. 自己用着方便顺手就好. 毕竟配置文件一旦弄好了, 也不总去折腾了.
alexapollo
2016-06-13 19:51:47 +08:00
很细的一些功能,赞一个
xiaket
2016-06-13 20:00:24 +08:00
那我也蹭地方晒个玩具好了: https://github.com/xiaket/better-header
bramblex
2016-06-13 20:03:03 +08:00
@KentY

哎…… 看来你完全没有把 vimscript 当成一门编程语言啊……我的 require.vimrc 是给一个类似 python / ruby / nodejs 的模块机制, source 只是实现方式而已。

一个文件并不是单纯的一个配置,而是一个模块。并且引用一个模块的时候并不会影响全局。比如定一个模块,然后就能通过 let module = Require('<module path>') 得到这个模块。
7jmS8834H50s975y
2016-06-13 20:07:45 +08:00
@bramblex 听起来很不错,我之前 vimrc 3000+行,那看起来一个累啊,索性撕碎了, 碎了滞后就不知道怎么整合了,目前也没想到好方法,只能通过 source 解决.
bramblex
2016-06-13 20:08:44 +08:00
比如,这是我写的一个 Json Parser 的模块 https://github.com/bramblex/BlxVimrc/blob/master/utils/json.vimrc

调用它的时候是这样调用这个模块来解析 Json 字符串的时候只需要如下代码:
let json = Require('utils/json')
let ret = json.parse('{"aaa": "bbb", "ccc": "dddd"}')
7jmS8834H50s975y
2016-06-13 20:09:11 +08:00
@KentY bramblex 是不是 block 我啦?>_<
7jmS8834H50s975y
2016-06-13 20:12:54 +08:00
@bramblex func 内部可以再定义 func?
Tink
2016-06-13 21:17:01 +08:00
强!
KentY
2016-06-13 22:31:13 +08:00
@bramblex 或许我没有完全理解你做这个的初衷, 简单的以为就是根据特定情况 source 不同配置文件了. 不好意思. 大概看了下你的例子, 好像不完全是, 大约是针对不同功能你自己写了一些常用功能的函数组合, 然后通过 Require()来 load/source 你写好的具体有"通用接口"的函数组合. 或者说, 你把一些常用功能进行了 encapsulate (这个没想起来怎么翻译), 让这些功能有"模块"的样子. 希望这次我对你的 Require 理解没有大的错误. 应该说是一种新角度的尝试... 我个人觉得, 这样做了各个"模块"独立化挺好的, 但是作为配置文件的管理, 一旦修改什么, 可能成本有点高.当然这是我的主观臆断.

vimscript 是一种脚本语言, 而且设计的也挺有意思的, 但是弊端也明显, 只能 vim 能对它解释执行, 而且效率什么的完全是依靠 vim 自身的. 所以如果按编程语言来说, 说实话不怎么好用. 所以很早前就有人给 vimscript 写库, 做各种 encapsulation, 比如各种语言中 dot 操作符, foo(para).bar(...) like this. 但是这些只是在形式上接近, 本质上无法改变, 因为它是在 vim 的代码里实现的.

不管怎么说这个编辑器支持不同的语言接口, 扩展性就加强了, 同时, 也让不同的用户彻底展开想象去做各种尝试, 所以有了为数众多的有创造性的优秀插件.

@wsdjeg 你说的什么 block 你什么的, 我没明白.
xuboying
2016-06-13 23:22:30 +08:00
last256 里用的 tabbar 是什么插件?
KentY
2016-06-13 23:25:12 +08:00
@xuboying 我不能理解你的问题... sorry
bramblex
2016-06-13 23:27:21 +08:00
@KentY

之前我还想给 vim script 造一个面向对象系统,不过由于我弃了 vim 的坑,于是就算了……
xuboying
2016-06-13 23:34:20 +08:00
@KentY 我发了帖子以后我就想起来这是在 console 下显示的原生 tab 了(我一般用 gui 的版本),我以为高手都不用 tab 。。。
xuboying
2016-06-13 23:35:55 +08:00
last256 对 perl 语法支持不好啊,能提 issue 么

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

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

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

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

© 2021 V2EX