vtano.ahk:GVIM+AHK实现顶层透明笔记本


有了超强的VIM,超强的Auto Hotkey,需要的只是用户的创造性了。本文介绍利用 AutoHotkey 让 gvim 窗口置于顶层、半透明、设定大小,以便于记录笔记。(参考文章:AutoHotkey入门教程:让重复工作一键完成普通人的编辑利器——VIM

截屏

  注意,上面的大窗口只是用来展示脚本在vim中的显示效果。左下角透明窗口才是这里所说的透明笔记本。
  GVIM+AHK实现顶层透明笔记本

相应脚本

  vtano.ahk 脚本及详细的注释如下。需要说明的是,脚本的代码颜色高亮也是用 Vim 的:TOhtml 功能导出的。

; 1. 基本信息
; 名称:vtano.ahk:GVIM+AHK实现顶层透明笔记本
; 作者:xbeta (善用佳软)
; 版本:v1.0 (2007-10-30)
; 网站:http://blog.sina.com.cn/xbeta
; 由来:经常在阅读文档时,希望有一个小巧的笔记工具,可以透明悬浮在顶层,随时键入文字,而不影响原来的阅读对象。由于我极喜欢GVIM,所以想到了用 Auto Hotkey设置GVIM置顶、透明的办法。当然,GVIM自身有一个VimTweak扩展,可实现类似功能。但VimTweak的透明是背景与文字整体 设定透明度,这样文字看起来不清晰。而AHK可以设定背景色完全透明(如果能设定透明度就更理想了),而文字正常显示,我认为这种效果更好一些。
; 适用对象:计算机上装有Auto Hotkey 和 GVIM,并且极其偏爱它们
; 2. 使用方法
; 将此文件放在加入path变量的目录(如系统目录)下,运行 vtano.ahk 即可
; 或任意放一位置,然后建立xx.lnk,运行 xx 即可
; 3. 说明
; ① 如果你不用AHK,也可以把此文档编译为exe
; ② 中间大段的send,也可以改写到vim脚本中
; ③ 如果想Gvim的标题栏也透明,只须让标题栏颜色(windows样式)、gvim背景色、ahk设定的窗口透明色三色相同。

SetTitleMatchMode, 2 ;设定ahk匹配窗口标题的模式
run d:\Program Files\gvim\vim71\gvim.exe ;启动gvim
winactivate, No Name ; 激活此窗口
sleep, 500 ; 延时,确保

send :hi clear Normal{enter} ;取消gvim的颜色
send :hi clear{enter} ;取消gvim的颜色
send :hi Normal guifg=red guibg=green{enter} ;设定为绿底红字
send :e c:\WINDOWS\Temp\vtano.text{enter} ;打开笔记文件,后缀为text是防止txt有其他语法加亮

sleep, 500
winmove, vtano.text,,50,50,300,150 ;设置窗口:大小、位置
winset AlwaysOnTop, ON, vtano.text ;设置窗口:置顶
WinSet, TransColor, 00FF00, vtano.text ;设置窗口:将绿色部分设为透明

附: 网友的 Fullscreen GVIM

  网友利用 AutoHotkey 制作了 全屏 gvim,原文见 此处。担心原网站停止维护,转载如下:

Fullscreen GVIM,03月 4th, 2008

我是在小众软件发现Q10这个软件的,用了过后很喜欢,但总觉得作为一个文本编辑器来说,Q10的功能弱了点,比如它似乎没有文本高亮,这样,如果我需要一个”专心致志代码编辑器”,它就无能为力了.

近日拜读了善用佳软的”GVIM+AHK实现顶层透明笔记本“一文,受此启发,加上我也是一个vim爱好者,心想何不用AHK+GVIM打造一个”专心致志编辑器”呢:-)
下面是我的实现, 供大家参考.

1. 设定GVIM,去掉menubar和toolbar
既然我们要打造的是一个”专心致志编辑器”,那么多余的东西一概不要,回复vim的本色.
编辑$VIMHOME\_vimrc文件,加入以下两行
set guioptions-=m “Remove menubar”
set guioptions-=T “Remove toolbar”
set guioptions-=r “Remove v_scroll bar”

2. 新建一个AHK脚本,例如gvimfull.ahk,输入以下内容后保存(PS,这个脚本是根据善用佳软的”GVIM+AHK实现顶层透明笔记本“的脚本改写的.)

SetTitleMatchMode, 2 ;设定ahk匹配窗口标题的模式
run c:\Program Files\vim\vim71\gvim.exe ;启动gvim
winactivate, No Name ; 激活此窗口
sleep, 500 ; 延时,确保
send :e d:\Notebook\txt\temp.txt{enter} ;打开一个临时的笔记文件
sleep, 500
winmove, temp.txt,,-1,-6,1408,1062 ;设置窗口:大小、位置, 这些数值需要根据使用者的屏幕分辨率调整,这是1400X1050分辨率屏幕的一个参考值

WinSet, Style, -0xC00000, temp.txt ;WS_CAPTION, 去掉title bar
WinSet, Style, 0×10000000, temp.txt ;WS_VISIBLE, 全屏模式

3. 双击gvimfull.ahk运行,下面是效果截图.

.

Full Screen GVIM – 修订版,03月 5th, 2008

今天抽空研究了一下AHK的帮助文档, 真是个好东东, 让我重新找回了在unix上工作的感觉.
花了点时间对昨天做的全屏GVIM的脚本做了一些改进,方便那些不懂AHK脚本的用户使用

– 用配置文件来设定GVIM路径,屏幕分辩率等
– 将以前用修改_vimrc来去除menubar, toobar的方式放到AHK脚本里来实现,这样你就不需要再修改vim的设定了
– 提供了一个编译后的exe文件.即使没有装AHK,也能实现全屏GVIM工作

点击这里下载源代码和配置文件 (为了表示对Q10和GVIM的尊重,我命名为G10^_^),解压缩后,修改 G10.conf配置文件
各个字段的含义如下(注意,请不要加入后面的中文注释)

GvimHome=C:\Program Files\vim\vim71\gvim.exe gvim的路径
X=-1 屏幕位置偏移量X
Y=-6 屏幕位置偏移量Y
ScreenWidth=1408 屏幕分辨率width
ScreenHeight=1062 屏幕分辨率height
AlwaysOnTop=0 1表示工作在Always On Top的模式(如果你要用金山词霸这样的软件,就设定为0,否则设定为1

修改完成后,点击Q10.exe或者Q10.ahk就可以执行啦

初稿:2007年10月;更新:2009-10-11


《“vtano.ahk:GVIM+AHK实现顶层透明笔记本”》 有 15 条评论

  1. 原来也是vim同道,幸会。你写的ahk快餐店系列相当不错,有空做个合集吧。其实很多小工具软件,用ahk完全可以替代了。

    说到我那个脚本,其实是供用户体验用的,所以让ahk向vim不断发出命令。从实用来看,完全可以再来一个.vim文件,然后让vim :so就可以了。或者,考虑让vim的窗口变化过程隐蔽实现,等vim窗口一出现时,就是最终要的样子,这样更舒服一些。

  2. 问一个问题,Linux下,想要实现这样的效果应该如何实现呢?
    我很喜欢vim,并且几乎不用windows。。。
    不知道这样的效果在linux下怎么实现。。。
    谢谢拉

  3.   上面提到的那个修订后的全屏版本,已经在纳米盘失效了,无法下载,是否有人能提供一个传给我?

      邮箱:gcy001@eyou.com  

  4. http://blogold.chinaunix.net/u4/125174/showart_2489087.html

    适合于Windows下的Gvim

    *****用 法*****:
    ———————————————————————
    1)用F11做全屏开关
    :map :!start f:GVimWindow.exe

    2)使gvim窗口“总是处于顶层”开关
    :map :!start f:GVimWindow.exe “ontop”

    3)设置gvim窗口透明度开关
    :map :!start f:GVimWindow.exe “200”
    上面是三个都是开关

    若要独设透明度,可以如下设置:
    :map :!start f:GVimWindow.exe
    按下F12后输入一个数字就可以了,数字范围是0-255,数字越小越透明
    (在exe后面加个空格,这样你输入数字时就不用再输个空格了)
    ———————————————————————–

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据