Random Posts
Tags
Categories
Recent Comments
- 小肥 on GDB 从裸奔到穿戴整齐
- flandre on 异步事件模型的 Self-pipe trick
- inv on 异步事件模型的 Self-pipe trick
- skywind on 异步事件模型的 Self-pipe trick
- skywind on 异步事件模型的 Self-pipe trick
Links
Meta
Category Archives: 随笔
Vim 文本过滤/文字处理插件
我经常有文本处理的需求,例如将 html 转换成纯文本,或者移除 markdown 里的所有连接,或者繁体转换简体。因此我做了一个插件来管理和执行各种外部文本过滤器。 所谓 “文本过滤器” 是一个命令行程序,它从标准输入读取文本,然后进行一些处理后写到标准输出,在 Vim 里可以用原生的 :{range}! xxx 命令将选中文本发送给 xxx 命令的标准输入,然后用该命令的标准输出替换选中文本,这个命令很有用,但每次输入一长串命令略显繁琐,并且过滤器多了以后也很难管理。 因此我做了这个插件来统一管理文本过滤程序,并且提供接口来执行他们: 比如上图演示了将 HTML 转换成文本,以及去除 markdown 中的连接,使用命令 :{range}TP {name} 就能调用名为 {name} 的文本过滤程序了。这些程序可以用你喜欢的语言编写,放到统一的目录,加上可执行属性就行,该插件就能找到它。
笔记软件为何需要本地存储?
不要忘记历史: Evernote:导出备份的 .enex 文件, 再导入时提示有几篇日志图片 太多,没有会员无 法导入。 印象笔记:用户因为从 Evernote 导入到印象笔记时触发了一个 BUG,五年笔 记丢失。新版本禁止导出公开格式的 .enex 文件,只能导出自己加密的 .note 格式,别的软件无法识别,只能映像笔记自己导出导入。 Notion:因为服务器在境外,偶尔会有无法访问的情况。未来有被墙的风险。 Wolai:CEO 公开声称用户上传非法信息要报警。CEO 公开声称自己审查用户笔记。公开挂程面试序员的隐私信息。 百度:百度盘扫描用户上传文件并做精准广告推送(上传证件图片的人被推荐电子证件钱包) 百度盘替换用户视频,换成净网行动的宣传视频。 某在线文档:用户用在线编辑的文稿,因为保存到在线云盘,数日后触发关键字被删除。 语雀:本来免费的,近期突然宣布新的收费策略,规定免费用户总文档数量不能超过 100 篇(包括小记、文档、数据表、表格、画板等),见这里:如何看待语雀付费策略?遭到大量投诉后又改为:免费用户每月 100篇,还是无法分享。 当年 github 就是天天被码云投诉,然后被墙掉了(不一定全是因为它,但它投诉了不少);现在码云又在投诉仅有的 gitlab ,oschina 上天天看得到 gitlab 的黑文章,比如: 扒一扒极狐 GitLab 的底裤 – OSCHINA … Continue reading
Posted in 随笔
7 Comments
我为什么使用 Vim?
很多人说用 Vim 是因为键位比较方便,其实这只是部分原因,不知道你思考过没,为什么今天大部分 Editor/IDE 都支持 vim keymap 的情况下,还有那么多人用 Vim 呢?如果仅仅因为键位原因,他们大可以用其他东西啊,为何还继续用原始的 Vim 呢? 也许在你看来,有的人配置 Vim 一半天最后就是类似 IDE/Vscode 的样子,既然如此,那么为啥那些人不直接去用 IDE/Vscode 呢?(二者也都支持 vim keymap),为什么他们还抱着原版的 Vim 不放呢?难道真的是他们没听过/没用过时下最先进的 Editor/IDE 么? 事实可能恰恰相反,很多 vimer 都是非常热衷尝试各种新的编辑器的,我给 vscode 写过不少高赞回答,也给 atom editor 开发过插件,不少 vimer 机器上 terminal/gui based 的 editor 加起来都有十多个,对主流 … Continue reading
VSCode 有哪些让人眼前一亮的插件?
VSCode 里很多插件看着很好玩,但装上看一下你就不会再用了,还有些插件所有人都推过,一堆人推来推去还是那么几个,越看越无聊,因此再说这些也没什么意思,还不如直接看下载排行榜去。 我选插件就一个标准:提升工作效率!分享几个我自己用的能让生活变得更容易的插件: 1)Project Manager: 用 vscode 经常在项目里切换来切换去,Open Directory 效率太低,命令行 code . 用着也不方便,这个 Project Manager 是解决这个痛点存在的: 左上是项目收藏面板,点击 “软盘”图标可以收藏当前项目,下次直接点击就切换。 左下是项目扫描,设定几个目录,会自动扫描这几个目录下面所有 svn/git 项目,双击切换。 有了这两个面板,项目切换随心所欲,想切就切。 2)Notes 笔记插件,安装后,设置一个存储笔记的地方,然后该路径下的 markdown 文件会专门显示在 Notes 插件的面板里,集中管理。当然有更专业的笔记软件,这个插件的优势是就在 vscode 的侧面板里,非常容易访问到,不需要多开一个软件,不影响当前 vscode 正在打开的项目,适合随手记录一些比较零碎的东西。 尤其适合记录一些代码相关的东西,然后设置保存在 onedrive 目录里,多台电脑云同步。搭配其他 markdown 插件,可以方便的实现笔记内链(按 CTRL+鼠标左键跳转),图床之类的功能。 (点击 more/continue … Continue reading
我在命令行下学日语
同一个动作重复 300 遍,肌肉就会有记忆,重复 600 遍,脊柱就会有记忆,学完五十音图不熟练,经常遗忘或者要好几秒才想得起来一个怎么办?没关系,我做了个命令行下的小游戏 KanaQuiz 来帮助你记忆: usage python3 kanaquiz.py <operation> operations: python3 kanaquiz.py {-h} play hiragana only python3 kanaquiz.py {-k} play katakana only python3 kanaquiz.py {-a} play all kana quiz python3 kanaquiz.py {-d} play dakuon quiz python3 kanaquiz.py {-t} … Continue reading
我在命令行下剪辑视频
是的,你不需要格式工厂,你也不需要会声会影,更不需要爱剪辑这些莫名其妙的流氓软件,命令行下视频处理,包括剪辑,转码,提取,合成,缩放,字幕,特效等等,全部命令行搞定,这不是疯狂,而是效率: MP4 转换 GIF 知乎可以发 MP4,但对桌面录屏这种十多二十秒的小短片远远没有 GIF 来的便捷,GIF 在很多软件里支持的也比 MP4 要广泛,转换命令为: ffmpeg -i in.mp4 -an -c:v gif out.gif 参数 -i 的指明输入文件 “in.mp4” ,-an 代表禁用音频,-c:v 的意思是指定视频编码为 gif,最后是输出文件名。 那么效率在哪里呢? 别急,我们写完善点,做个脚本:video_convert_to_gif.cmd @echo off if “%1” == “” goto HELP set “IN=%1” set “OUT=%~dpn1.gif” … Continue reading
学习 Vim 的三个阶段
学习使用 vim 有三个阶段: 首先是孩童时期,刚刚开始接触 Vim,觉得非常别扭,这里也不顺畅,那里也不够高效,表现为在知乎上问,“Vim 到底好在哪里?”,或者“学完 vimtutor 以后该干嘛?” 接下来是青春期,感受到 Vim 的爽点,开始欣喜若狂的探索 Vim 的边界,表现为疯狂的尝试各种 mapping 和插件,阅读网上一切关于 Vim 的文章和内容,尝试一切可能的事情。 最后进入成熟期,开始移除所有无用的东西,真正变得高效起来。表现为开始冷静思考自己的工作流程,逐步针对性定制 vim ,让 vim 越来越顺手。 只有对编辑器足够挑剔的人,才会使用 Vim。真要尝试,你要先问问自己是不是对编辑器有很高的要求,是不是对身边的编辑器都有不满意的地方,还是只是好奇,并不希望投入多少时间: 当你真的决定入坑了,那么主要问题就是怎么完成第一个阶段到第二个阶段的切换呢。 (点击 more/continue 继续)
Vim 8 中的 C/C++ 编译运行:类 vscode 的任务系统
谦卑的向大家介绍我的新插件:asynctasks.vim,一套类似 vscode 的 tasks 系统,用于解决 vim 下长期没法轻松优雅的编译/运行 C/C++ 程序的问题。这个插件我去年酝酿了很长时间了,今年打算给他做一点宣传。 最近两年 Vim/NeoVim 发展非常迅速,各种:异步补全/LSP/查错,DAP 等项目相继出现,就连 vimspector 这样以前只能奢望 emacs 的项目如今都出现了。 然而 Vim 任然缺少一套优雅的通用的任务系统来加速你的内部开发循环(编辑,编译,测试)。很多人在处理这些 编译/测试/部署 类任务时,任然还在使用一些比较原始的方法,所以我创建了这个插件,将 vscode 的任务系统引入 Vim。 vscode 为每个项目的根目录下新建了一个 .vscode 目录,里面保存了一个 tasks.json 配置文件来描述针对该项目的各类:编译/运行任务。而 asynctasks.vim 采用类似的机制,在每个项目的根文件夹下面放一个 .tasks 配置文件来描述针对该项目的任务,同时维护一份 ~/.vim/tasks.ini 的全局配置,适配一些通用性很强的项目,避免每个项目重复写 tasks 配置。 说起来好像很简单?其实这是概念简单,很多好的设计从概念上来讲往往非常简单,但是用起来却十分灵活强大,这不是我设计的好,而是 … Continue reading