分类 随笔 中的文章

Vim 异步运行 Shell 指令的插件 - AsyncRun

自制另一个新的 Vim 8.0 专用异步插件:asyncrun.vim,它可以让你在 Vim 里面异步运行各种 Shell 指令并且把结果实时输出到 Quickfix,需要 Vim 7.4.1829 以上版本。

安装方法

到插件首页 https://github.com/skywind3000/asyncrun.vim 下载项目,并拷贝 asyncrun.vim 到你的 ~/.vim/plugin。或者使用 Vundle 指向 skywind3000/asyncrun.vim 来自动更新。

基本教程

使用 gcc 异步编译当前文件:

:AsyncRun gcc % -o %<
:AsyncRun g++ -O3 % -o %< -lpthread 

该命令会在后台运行 gcc 并且把输出实时显示在 Quickfix 窗口,宏 % 代表当前文件名,%< 代表没有扩展名的文件名。

异步运行 make:

:AsyncRun make
:AsyncRun make -f makefile

异步调用 grep:

:AsyncRun! grep -R word . 
:AsyncRun! grep -R <cword> .

默认 :AsyncRun 运行命令后,输出添加到 Quickfix时 Quickfix 会自动滚动到最下面那一行,使用感叹号修饰符以后,可以避免 Quickfix 自动滚动。同时 <cword> 代表当前光标下面的单词。

编译 go项目:

:AsyncRun go build %:p:h

%:p:h 代表当前文件的目录

查询 man page,异步 git push ,以及把设置 F7异步编译当前文件:

:AsyncRun! man -S 3:2:1 <cword> 
:AsyncRun git push origin master
:noremap <F7> :AsyncRun gcc % -o %< <cr> 
……

阅读全文

如何禁止 Win7 强制更新到 Windows 10 ?

岳父岳母,爹妈的 Windows 7 纷纷被自动升级成 Windows 10 各种问题(一台画面变成非全屏,解析度被莫名奇妙降低,占不满显示器、运行卡,另一台台式机无线网卡不能用,还有一台某炒股软件跑不起来,按win键弹出菜单时会顿一下)。

花费了我两个整天的时间帮他们降级,找了很多方法,网上大部分都不能对新版 Gwx起作用

终于,找到了并且永久性锁定自动升级的最直接方式了:

regedit:
HKEY_LOCAL_MACHINE 下面
SOFTWARE\Policies\Microsoft\Windows 下面新建项目(目录)Gwx
然后在
SOFTWARE\Policies\Microsoft\Windows\Gwx 下面新建 DWORD 值:
DisableGwx=1

好了,Windows 结扎手术完成,不用当心一不留神弄出个 Windows 10 来给大伙惹麻烦了。

……

阅读全文

如何在不同平台下打开新窗口运行程序?

如果可以让自己的工作效率提升一点点,那么即便花费几天来开发一些工具也是值得的。在不同操作系统下自动打开终端窗口来运行指定的命令就是这样一件能提高工作效率的事情。

就像 Visual Studio 调试命令行程序的人都对打开一个新窗口运行命令行程序的模式情有独钟。EditPlus 也提供新窗口运行程序(可惜只限windows)。

而如果你在使用 Sublime/Atom/GEdit/GVim 之类的工具,你就会发现调试程序的时候程序基本上是在下面的面板中运行的,所有输出也是输出到下面的面板中。这时如果程序长时间运行是非常不方便的,又或者程序有交互(需要输入数据),基于GUI面板的运行方式也会显得十分笨重,而Vim/GVim之流更过分,一执行程序整个GUI就定住了,没法一边看代码一边查看一些长时间运行的程序状态,虽然Windows下的GVim可以用!start来解决(见Gvim !start),但十分遗憾,Linux桌面或者Mac下面的Vim都没有这个 !start功能。

……

阅读全文

钉钉真好用

自从用了钉钉,腰也不酸了,腿也不疼了:

  • 设置组织架构和通讯录,新同事根据部门自动入企业群。
  • 除了部门企业群外,跟微信一样随意建立临时会话,员工离职退出所有群。
  • 每个企业群配套“云盘”,可以把部门相关文档传到群的云空间里,供群成员查看。
  • 详细查看未读消息,长时间未读的人可以短信提醒。
  • 企业内部员工免费电话。
  • 全平台:windows,mac,iphone,android
  • 配套企业应用:请假,公章申请,报销申请,打卡,工资信息查询

试过:泡泡,RTX,QQ企业,米聊,飞秋 以后最终发现还是钉钉最好用

……

阅读全文

GVim 中更好的运行程序

GVim(Windows)下面使用!运行程序是非常恶心的事情,比如调用python运行当前脚本:

:!python %

你会发现,整个VIM界面被冻结了,然后弹出cmd窗口,退出cmd后,还要返回GVim中按任意键才能编辑状态。

比如你正在调试一个程序,这个程序运行起来不是一分钟能出结果的时候,你想边对照输出结果,边在 GVim 里面查看和修改你的代码,你就会发现傻逼了。正确的做法是:

:!start python %

这样就不会卡住 Vim了,但是这个做法有个问题,程序结束的时候窗口马上关闭,因此还需要再进化一下:

:silent !start cmd /c python % & pause

这时你会发现优雅的调用了 python 来跑当前程序,并且GVIM不会被挂起,照样可以编辑,当程序结束的时候,CMD窗口还会pause等待你按任意键一下,这就比较清爽了,你可以把这条命令map到你常用的快捷键上,和 EditPlus里面一样一键运行之。

……

阅读全文

更好的使用 Vim 标签(Tab)以及 Alt键映射

更好的使用 Vim7.0以后推出的标签(TAB)功能,同现代编辑器一样用标签(TAB)来管理多文件,代替传统 Buffer List:

让 Minibufexplor/tabbar 这些上个世纪的插件都退场吧,直接使用标准的标签功能会更加舒服。 快捷键切换 TAB 第一件事情就是要搞定标签快速切换问题, 不管是:tabn X还是 Xgt都十分低效,我们需要更快速的在各个文件之间切换。最简单的是设置 0-9 来快速切换tab(默认leader是反斜杠,即先按下\键,再按数字键),不管终端还是GVIM都兼容:

noremap <silent><tab>m :tabnew<cr>
noremap <silent><tab>e :tabclose<cr>
noremap <silent><tab>n :tabn<cr>
noremap <silent><tab>p :tabp<cr>
noremap <silent><leader>t :tabnew<cr>
noremap <silent><leader>g :tabclose<cr>
noremap <silent><leader>1 :tabn 1<cr>
noremap <silent><leader>2 :tabn 2<cr>
noremap <silent><leader>3 :tabn 3<cr>
noremap <silent><leader>4 :tabn 4<cr>
noremap <silent><leader>5 :tabn 5<cr>
noremap <silent><leader>6 :tabn 6<cr>
noremap <silent><leader>7 :tabn 7<cr>
noremap <silent><leader>8 :tabn 8<cr>
noremap <silent><leader>9 :tabn 9<cr>
noremap <silent><leader>0 :tabn 10<cr>
noremap <silent><s-tab> :tabnext<CR>
inoremap <silent><s-tab> <ESC>:tabnext<CR>

其次,GVIM/MacVim 下设置 ALT-0-9 来切换TAB:

……

阅读全文

后端工程师招聘启示

创业一年多,走过不少弯路,公司最近终于开始有了点收入,说起来有点老泪纵横。虽然没有完全覆盖成本,但证明产品方向没有大问题,运营开展后,后端团队急需进一步扩大,方向是两个: 第一是游戏社交,陪玩竞技的APP,提供游戏用户专有的沟通工具。 第二是为云技术,为游戏或者其他应用开发商提供更好的即时通讯云技术,这点我在知乎里面阐述过:https://www.zhihu.com/question/32228281/answer/55844291 公司坐落在广州市科韵路,现在团队规模35人左右,后端主要技术是java/python/c,熟悉任意即可,有需要用别的语言学就是。 公司是有很强技术基因的公司,后端团队我会亲自带,创造和分享是我们一直以来秉持的理念。希望同更多有识之士共同进步和成长。 具体需求如下:

……

阅读全文

使用 Markdown 写 Wordpress

使用 Markdown 来再命令行写 WordPress 的感觉很不错,我整合了两个 Python 库,一个叫 blogpost, 另外一个叫做 markdown2,前者可以用来命令行发送 WordPress 文章,但是只支持 .html 或者 asciidoc 格式来写 WordPress,因此又引入了 python 的 markdown2,合成项目:

https://github.com/skywind3000/markpress 但是标准 Markdown转换出来的 html 再 wordpress中高亮不正确,因此费了点时间修改了一版 markdown2 为 markdown3 ,调整了相关的样式,可以很好的在 wordpress 中显示,同时使用了 metadata,再文章中 可以指定标题和类别,使用很简单,首先克隆项目:

 $ git clone https://github.com/skywind3000/markpress.git

然后创建你的工程目录 myblog(用来保存文章和相关中间数据,推荐提交到版本管理系统上来),目录为:

myblog +- wordpress.ini  # 站点配置文件,url,用户名,密码
       +- doc            # 存放 markdown 文章源文件的目录
       +- data           # 自动生成的 postid/html等,丢失会导致重新发文
       +- images         # 保存图片的目录,文章中图片都用 "../images/*" 引用
……

阅读全文

ATOM 同 Vim/Emacs/Sublime 的深度比较

用过不少编辑器:UltraEdit / EditPlus / (G) Vim / GEdit / NotePad++ / TextMate / ProgrammerPad / Sublime 。确实是工作上用他们写过代码的。而 VSC / Emacs 只是体验了一下基本使用方法,算不上真用。用下来的结论是:Atom 比 Vim 更 Vim,比 Emacs 更 Emacs,同样,比 Sublime 更 Sublime。

Atom 唯一的槽点就是“卡”,不过那是去年的情况了,1.0后性能数次大提升,比起sublime/vsc之类虽不算流畅,但同时编辑20个数千行的文件没有压力。如今让人感觉慢的地方主要是启动loading(也大大短于eclipse, idea),使用时并没察觉它比其他编辑器慢再哪。而文本编辑器的快慢,更重要的是“让你工作更快更有效率”。下面说说为何 Atom比其他更有效率:

……

阅读全文

Atom 编辑器的插件开发

老王卖瓜,自卖自夸,Atom 比较方便的地方是可以用 javascript/coffee 给 Atom写插件,并且写起来很简单,我刚按说明给 Atom 写了一个插件: atom-shell-commands 用户自定义 Shell 命令,类似 NotePad++ 中的 “Run Commands”,EditPlus/UltraEdit里面的”User Tool”,以及 GEdit 中的 “External Tool” 和 TextMate 里的 “Shell Command”。 1. 用户可以自定义工具,并且配置到 Atom 中,比如一键调用编译器,一键运行, 2. 输出结果会显示再底部的 bottom panel 中 3. 点击错误输出可以跳转到对应有错误的文件上去 4. 自定义正则表达式匹配错误输出中包含的文件名和行号。 5. 全平台支持,再 Mac/Ubuntu/Windows 下充分的测试过。 初始化时,再你的用户配置中(Atom File->Open Your Config或者 ~/.atom/config.cson),写入类似:

……

阅读全文