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 中正确使用 Alt映射
最简单的做法是:首先将终端软件的 “使用 Alt键作为 Meta键” 的功能打开,其次将 Alt的模式改为 ESC+字母,意思是如果你在终端下按下 ALT+X,那么终端软件将会发送 <ESC>x 两个字节过去,字节码为:0x27, 0x78。如果你使用过 NeoVim 或者 Emacs的话,这一步应该早就做过了。 XShell4 终端设置: SecureCRT:终端设置 其他终端软件里: Putty/MinTTY 默认ALT+X 就是发送 <ESC>x过去 Mac下面的 iTerm2/Terminal.app 需要跟 XShell / SecureCRT一样设置一下 Ubuntu 下面的 GnomeTerminal 默认也是发送 <ESC>x过去的 任意平台下面的 xterm 可以配置 ~/.Xdefaults 来设置这个行为。 这样的话,不管是 NeoVim … Continue reading
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 该命令会在后台运行 … Continue reading
Vim 异步编译插件 vimmake
推荐下自己写的用了好几年的编程插件:vimmake ?完美支持 vim的异步模式: GitHub – skywind3000/vimmake: Customize shell commands in vim 让用户自定义各种不同的编译或运行任务,并且在 Vim 中执行他们。类似 NotePad++的自定义 Commands 和 EditPlus/UltraEdit 的 ‘User Tool’ 或者 GEdit中的 External Tool 以及 TextMate 中的 Shell Command。完美支持 vim 7.4.1829 后已经稳定成熟的异步任务机制,不需要写任何 Vim Script 也可以很容易的体验到 vim 的异步任务机制,并且使用它来执行各种艰巨的编译任务,让你一边编辑代码,一边跑编译任务。 安装:拷贝 vimmake.vim … Continue reading
如何禁止 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 来给大伙惹麻烦了。 补充:本来上次回家时间就短,好些事情没办,好些朋友没见,好了,微软一个强制升级,就把你锁家里了。 自己的事情也算小事了,爹妈平常和岳父母平日和我们聚少离多,也就爱炒个股看个基金寻找下乐趣,你把人家弄的用不了了,不好用了,老人家自己不会弄,又舍不得花钱请人修,只能眼巴巴花好几个月的时间等着你回去帮他们解决。这样的感受是很不好的,就像公园里两个大爷正高兴的下着棋,过来个顽皮小孩一把把老人的棋盘掀湖里去了,周围的人都会觉得小孩有些缺乏教养,没有公德心一般。 很多喜欢宠物的人为了不给大家添麻烦都倡导给自己的狗或猫做节育手术,真爱宠物就要对它负责,所以我们也本着对windows负责的态度对它做个结扎,防止它趁你不留神在外面闯祸,避免给大家添麻烦,对,公德心嘛。
如何在不同平台下打开新窗口运行程序?
如果可以让自己的工作效率提升一点点,那么即便花费几天来开发一些工具也是值得的。在不同操作系统下自动打开终端窗口来运行指定的命令就是这样一件能提高工作效率的事情。 就像 Visual Studio 调试命令行程序的人都对打开一个新窗口运行命令行程序的模式情有独钟。EditPlus 也提供新窗口运行程序(可惜只限windows)。 而如果你在使用 Sublime/Atom/GEdit/GVim 之类的工具,你就会发现调试程序的时候程序基本上是在下面的面板中运行的,所有输出也是输出到下面的面板中。这时如果程序长时间运行是非常不方便的,又或者程序有交互(需要输入数据),基于GUI面板的运行方式也会显得十分笨重,而Vim/GVim之流更过分,一执行程序整个GUI就定住了,没法一边看代码一边查看一些长时间运行的程序状态,虽然Windows下的GVim可以用!start来解决(见Gim !start),但十分遗憾,Linux桌面或者Mac下面的Vim都没有这个 !start功能。 同时,哪天你切换到Mac/Ubuntu下开发了,你会发现这个问题十分恶心,这时候你往往需要写一些脚本来做这件事情。而在不同的平台下正确的escape并传递参数,正确的生成中间脚本(bash,applescript,batch)并且通过管道传递又是一项比较浪费时间的事情。 所以这两天写了: https://github.com/skywind3000/terminal 这个脚本来做这些,满足了我如下需求: 在 Windows 下打开 cmd窗口执行若干命令 在 Linux 下打开 xterm/gnome-terminal 来执行若干命令 在 Mac OS X 下面打开 Terminal/iTerm 窗口来执行若干命令 不同的操作系统下提供统一的调用接口 可以方便设置:工作目录、窗口标题、窗口配置(Terminal/gnome-terminal/iterm) 新窗口内执行完程序以后可以会等待按任意键才关闭窗口 Windows 打开 Cygwin 的 Mintty窗口并执行 Cygwin命令(Windows下编辑,Cygwin下运行) … Continue reading
钉钉真好用
自从用了钉钉,腰也不酸了,腿也不疼了: * 设置组织架构和通讯录,新同事根据部门自动入企业群。 * 除了部门企业群外,跟微信一样随意建立临时会话,员工离职退出所有群。 * 每个企业群配套“云盘”,可以把部门相关文档传到群的云空间里,供群成员查看。 * 详细查看未读消息,长时间未读的人可以短信提醒。 * 企业内部员工免费电话。 * 全平台:windows,mac,iphone,android * 配套企业应用:请假,公章申请,报销申请,打卡,工资信息查询 试过:泡泡,RTX,QQ企业,米聊,飞秋 以后最终发现还是钉钉最好用
Posted in 随笔
Leave a comment
Vim异步编译工程
针对 Vim的最新版本,7.4.1769+ 写了个脚本:build.vim 来实现异步编译。 主要实现原理是利用 Python 开线程并在后台线程调用脚本(具体执行编译工作的bat/sh文件),实时把stdout/stderr输出的内容投递到队列,而前台UI线程则是使用了Vim最新版本中提供的 timer_start 功能启动一个100ms运行一次的时钟,每次运行时检测队列里面的东西并把他们取出来输出到Vim的 Quickfix窗口。 几处细节处理是避免后台任务瞬间输出上千行的内容,批量塞入Quickfix的时候把vim 给卡死掉,此处增加了一个限制,即每次时钟发生时最大只塞入Quickfix中50条信息。 如此,整个世界清静了,以前Vim一编译代码就完全无法编辑的情况可以得到很好的解决了。你可以绑定–到外部命令:job-1 job-4 这四个不同的脚本(windows下是 job-1.cmd – job-4.cmd),用来执行外部命令,每次执行前,把当前编辑的文件名等信息写入环境变量,这样后台job-n.cmd的批处理就可以根据环境变量决定需要编译的文件或者工程信息了: let $VIM_FILEPATH = expand(“%:p”) let $VIM_FILENAME = expand(“%:t”) let $VIM_FILEDIR = expand(“%:p:h”) let $VIM_FILENOEXT = expand(“%:t:r”) let $VIM_FILEEXT = “.” . expand(“%:e”) … Continue reading
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里面一样一键运行之。 然而还是有几处需要完善的地方,首先直接使用 % 展开当前文件名不妥当,如果文件名包含空格就会错误,需要用 shellescape 来进行处理,同时我们有时候还希望运行前跳转到文件所在的目录,运行完又跳转回来,又或者需要运行前保存一下没有保存的文件。 我写了个函数来做这个事情,放到你 .vimrc里即可使用,同时支持 GVim和终端 Vim: