发表回复 
Vim 简易编辑环境 (AhkSIDE) V1.0.2
2012-05-02, 12 : 14 (这个帖子最后修改于: 2014-12-21 16 : 42 by robertL.)
Vim 简易编辑环境 (AhkSIDE) V1.0.2
[i=s] 本帖最后由 loaxs 于 2012-5-28 12:14 编辑 [/i]

[attach]1948[/attach]
目前限制
若要使用 AhkSIDE,目前整个系统只允许一个 Vim 窗口,如果开多个窗口,Vim 中的资料可能会乱掉,慎之!
请注意!Vim 必须是支援 OLE的版本!
执行
:ec has('ole')
看看 Vim 是否提示 1
,若提示为 0 代表不支援。

安装方法
在 AhkSIDE.7z 包含了 vimfiles 资料夹;ctag.exe 及 .ctags
在 Vim 中执行 :set runtimepath?
会显示好几个路径
假设你未设定过 runtimepath,将 AhkSIDE.7z 中 vimfiles 资料夹中的内容解压缩到第 2 个路径中
若你设定过 runtimepath,放到 :set runtimepath? 显示的第一个路径下!

执行 :ec $PATH
将 ctag.exe 放到其中任一个路径下

执行 :ec $HOME
将 .ctags 放到该路径下

执行 :helptags $VIMRUNTIME/doc

若是使用安装版的 autohotkey 的话,这样就可以使用了,如果 portable 版的兄弟,还要设定 g:AhkSIDE_AhkChm 及 g:AhkSIDE_AhkExe
假设 autohotkey 的帮助文件的路径是 'C:\ahk\authotkey.chm'
而 autohotkey 的执行档的路径是 'C:\ahk\autohotkey.exe'
那么在 _vimrc 中加入
代码: (全选)
let g:AhkSIDE_AhkChm = 'C:\ahk\autohotkey.chm'
let g:AhkSIDE_AhkExe = 'C:\ahk\autohotkey.exe'
若不知道 _vimrc 文件路径,在 Vim 中执行
代码: (全选)
:ec $MYVIMRC
这样应该就搞定了…



使用

vimfiles资料夹中的内容主要分三部分: AhkSIDE 套件及 taglist, minibufexplorer 两个 plugin

AhkSIDE套件
AhkSIDE 套件的功能是由 Vim 本身自带及 autohotkey 分别实现的,因此热键的设定,有两种不同的语法

以下三个功能设定热键语法是 autohotkey 的语法
呼叫 autohotkey.chm (F1)
按下 F1 会以 cursor 下的 word 为关键字查询 autohotkey.chm
可在 _vimrc 中设定 g:AhkSIDE_AhkChm 指定帮助文档的位置
如:
代码: (全选)
let g:AhkSIDE_AhkChm = 'C:\Program Files\AutoHotkey\autohotkey.chm'
可在 vimrc 中设定 g:AhkSIDE_hk_in_Help 重新指定要使用的热键
如:
代码: (全选)
let g:AhkSIDE_hk_in_Help = '^F1'
注意别漏了「'」!

执行 script (F5)
按下 F5 可执行目前编辑的 Script
[attach]1949[/attach]
可在 vimrc 中设定 g:AhkSIDE_AhkExe 指定 autohotkey.exe 的位置,设定这个变数,可用不同版本的 autohotkey 执行该 script.
可在 vimrc 中设定 g:AhkSIDE_hk_in_RunScript 重新指定使用的热键
下方的讯息窗口是用 preivew window 实现的,在 normal mode 下用 <C-w>z 关闭

停止 Script (F6)
若是 Script 是 persistent 或是带有 hotkey,hotstring,可在 Vim 中按下 F6 直接停止该 Script
可在 vimrc 中设定 g:AhkSIDE_hk_in_StopScript 重新指定要使用的热键


autohotkey_SIDE.vim
以下三个功能设定热键语法是 Vim 的 map 语法
如:
代码: (全选)
let g:AhkSIDE_hk_in_GoToErrorLine = '<C-F4>'

跳到错误行 (F4)

若用 F5 执行 Script 回报错误的话,可按 F4 跳到错误行
[attach]1950[/attach]
可在 vimrc 中设定 g:AhkSIDE_hk_in_GoToErrorLine 重新指定要使用的热键

AutoHotkey 语法提示(Ctrl-z in Insert mode)
在编写 Script 时 ( in insert mode ),可按下 Ctrl-Z 叫出语法提示
可在 vimrc 中设定 g:AhkSIDE_hk_i_ShowHints 重新指定要使用的热键
下方的讯息窗口是用 preivew window 实现的,在 normal mode 下用 <C-w>z 关闭

Autohotkey 关键字自动补完(Ctrl-x Ctrl-o in Insert mode)
编写 Script 时,按下 Ctrl-X Ctrl-O 出现 Omni Completion 补完关键字
这是 Vim 自带的功能,请自行 map 想要的热键吧!

注意!语法提示及关键字补完的资料是由 ahk.api (vimfile/ftplugin/autohotkey/ahk.api) 读出的
这是 SciTE4AutoHotkey 中取出来的,往后若 SciTE4AutoHotkey 有更新的话,只要把 ahk.api 取出来覆盖过去,语法提示及自动补完就更新了。
若要增加额外的自动补完或语法提示的话别改这个档案,把自定的内容放到 use.ahk.api 中

taglist
在 vimrc 中加入
代码: (全选)
let tlist_autohotkey_settings = 'ahk;k:Hotkeys;s:Hotstrings;labels;f:Functions'
let Tlist_Exit_OnlyWindow = 1
let Tlist_File_Fold_Auto_Close = 1
其中 tlist_autohotkey_settings 中以 ; 为分隔符号分为 5 项,除了第一项外,其余四项可任意改变顺序,这会改变 taglist 窗口显示的顺序。
执行 :TlistToggle 可切换左方的 taglist 栏位
taglist 详细的用法,请自行搜寻!

minibufexplorer
在 vimrc 中加入
代码: (全选)
" use <C-h,j,k,l> to change window.
let g:miniBufExplMapWindowNavVim = 1
" Use <C-Tab> to switch buffer.
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
这样就可以在 normal mode 时用 Ctrl-h,Ctrl-j,Ctrl-k,Ctrl-l 改变聚焦的窗口,用 Ctrl-Tab 切换编辑的档案
minibufexplorer 详细的用法,请自行搜寻!

如果是全新安装的 Vim 的话,做完以上设定这会长汞样
[attach]1951[/attach]
用是可以用,介面很丑就是了。
可以在 _vimrc 标案未端中再加上
代码: (全选)
" 设定 GUI 介面
set guioptions=gmet
" 设定窗口大小
set lines=35 columns=84
" 设定使用的字型
set guifont=Courier_New:h9:b:cANSI
" 设定左方行号栏位
set number numberwidth=5
" 设定颜色主题
colorscheme zenburn
看起来会好一点!
[attach]1954[/attach]

附件参见11#
By @robertL


附件 缩略图
                   

.7z  AhkSIDE.7z (大小: 494.36 KB / 下载: 128)
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢loaxs
2012-05-26, 23 : 04
 
非常感谢, 我不知道已经学 Vim 几次了. 最近又开始学, 刚好看到楼主这个帖子.
也许真的比较笨, 按楼主的说明操作没有成功.
最开始是我使用的 GVIM 没有带 OLE 支持, 重新下载.
接着按楼主的说明设置好并启动新的 GVIM 后, AhkSIDE.exe 没有启动, 手动启动时出现错误提示:
Error: 0x80004005 - 未指定的错误

Source: (null)
Description: (null)
HelpFile: (null)
HelpContext: 0

Specifically: Eval

Line#
---> 014: AhkChm := oVim.Eval("g:AhkSIDE_AhkChm")

请教:
1. 如何直接在 GVIM 中设置 F5 键执行当前 AHK 脚本? 我在 autohotkey.vim 中这样设置了:
代码: (全选)
map <F5> :!"c:\Program Files\AutoHotkey\AutoHotkey.exe /ErrorStdOut %"<CR>
然而, 启动后脚本输出的错误信息不会显示在启动的命令行窗口中. 如果能像上面这样显示在 preivew window 窗口中更好.

2. 能否从最新版的 GVIM 添加上面的支持后放出来供下载 (这样我只需要在启动时注册就能正常使用, 还有希望不要去除其他支持, 我还希望编辑其他的文件)?

AutoHotkey 学习指南 我的帖子
我不生产代码,我只是 AutoHotkey 的搬运工:从官方到中文;从其他语言到 AutoHotkey;有时则把 AutoHotkey 搬运到普通用户面前。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 19 : 05
 
[i=s] 本帖最后由 loaxs 于 2012-5-28 12:17 编辑 [/i]

你好
抱歉,我竟然忘记写 Vim 必须支援 OLE ,应该让你走了不少的弯路…真是抱歉…
别说自己笨啦!是我说明写的不够清楚,我写的时候感到很苦手,不知道该怎么写才能表达清楚,让我再试一次…

先想辨法让 AhkSIDE.exe 自动启动。
AhkSIDE.exe 要自动启动的前题有三个,有找到 autohotkey 的执行档及帮助文件及 Vim 载入了 Autohotkey Script 文件

设定执行档及帮助文件的方法如下:
假设帮助文件路径是 C:\Ahk\autohotkey.chm
而执行档的路径是 C:\Ahk\autohotkey.exe

那么在 _vimrc 加入
代码: (全选)
let g:AhkSIDE_AhkChm = 'C:\Ahk\autohotkey.chm'
let g:AhkSIDE_AhkExe = 'C:\Ahk\autohotkey.exe'
再随便找一个 Autohotkey Script 载入,AhkSIDE.exe 应该就会自动启动了。

问一下,Vim 中没有显示 'Can''t find autohotkey.chm' 吗?
奇怪,我有预防的说???

问题1, 2:
如果有设定好的话,AhkSIDE.exe 有执行起来,在 Vim 中按 F5 就会执行目前的 Script 了,不必自己设定。

不建议用 Vim 内建的方法去执行 Script ,因为 Vim 是单执行绪的。
在 Vim 中执行当前 Script 并取得讯息的要用 system()
假设 autohotkey 的路径是在 C:\autohotkey.exe
代码: (全选)
ec system('c:\autohotkey.exe /ErrorStdOut ' . expand('%:p') . ' 1>&2')
若你执行有 Hotkey,Hotstring 或 persistent 的 Script 时,你会发现 Vim 会 hang 在那里,你什么事都不能做,直到你把执行的 Script 关掉为止。
就我所知是这样,我不确定是不是有其它方法…
这样使用上非常不便,所以我才搞了个 AhkSIDE.exe。

附带一提
若是你想改变执行 Script 的热键的话,因为这功能是由 autohotkey 实现的,不是利用 Vim 内建的方法,所以热键的语法是 autohotkey 的。
实现原理是 AhkSIDE.exe 在启动时会由 Vim 中读出 g:AhkSIDE_hk_in_RunScript 这个变数,然后依据这变数的内容指定热键。

若要改变热键的话,先在 _vimrc 指定 g:AhkSIDE_hk_in_RunScript,然后再重启 Vim 就行了。
假设要指定 Ctrl+Alt+F12 执行当前 Script,那么在 _vimrc 中加入
代码: (全选)
let g:AhkSIDE_hk_in_RunScript = '^!F12'
然后重启 Vim

每次按下热键执行当前 Script 时,AhkSIDE.exe 都会由 Vim 中读出变数 g:AhkSIDE_AhkExe (这变数内容为 autohotkey.exe 的位置).
因此只要在 Vim 中改变 g:AhkSIDE_AhkExe 的话,再次执行 Script 时就是用不同版的 autohotkey 执行当前 Script。

我们可以 map 不同热键指定 g:AhkSIDE_AhkExe 为不同版本的 ahk,就可以轻易地以不版本的 ahk 执行 Script。
譬如说
代码: (全选)
map <leader>al :let g:AhkSIDE_AhkExe = 'C:\Ahk\autohoteky_l.exe'
map <leader>au :let g:AhkSIDE_AhkExe = 'C:\Ahk\autohotkey_u.exe'
假设执行 Script 的热键是预设的 F5,而且 Vim 的 leader 键也没有改的话(预设是 '' 反斜线)
那么 \ea 然后 F5 就是用 autohotkey_l.exe 执行当前 Script
而 \eu 然后 F5 就是用 autohotkey_u.exe 执行当前的 Script

另外,建议在 vimfiles\after\ftplugin 中建立一个 autohotkey_setup.vim 文件,然后把所有 autohotkey script 专属的设定都放到这文件中。Vim 每次读入一个文件后都会在 ftplugin (ps.1) 资料夹下执行对应的 vim 文件,autohotkey_setup.vim 这文件只有在读入的档案是 autohotkey script 时才会执行,所以里面的设定是专属于 autohotkey 的,这样日后方便管理。

ps.1 有很多个 ftplugin 资料夹,vimfiles\after\ftplugin 只是其中一个
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-27, 22 : 25
 
[i=s] 本帖最后由 loaxs 于 2012-5-28 12:09 编辑 [/i]

重点是,先让 AhkSIDE.exe 能自动启动,若 AhkSIDE.exe 自动启动后还无法正常使用,再来一个一个解决!
要让 AhkSIDE.exe 能自动启动不需要那么多的设定,让 _vimrc 简明一点,只要设定
g:AhkSIDE_AhkChm 及 g:AhkSIDE_AhkExe 就好,其它的先清掉!
AhkSIDE.exe 是 Vim 在载入 Ahk Script 文件时自动启动的,不是 Vim 启动时就自动启动,这点要注意!

还有,因为 Vim 对路径的设定非常难搞,所以先让路径简单一点,路径中先别带空格,中文字之类的!

我在虚拟机器中试过,autohotkey 预设目录是 ok. 的!

我测试的 OS 是 XP Sp2, Sp3
Vim 是由 Vim.org 下载下来的 Vim73
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-05-29, 10 : 35
 
遇到问题较多,目前还是先使用我自己的映射方法执行,等 Vim 熟悉了再看看。

AutoHotkey 学习指南 我的帖子
我不生产代码,我只是 AutoHotkey 的搬运工:从官方到中文;从其他语言到 AutoHotkey;有时则把 AutoHotkey 搬运到普通用户面前。
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2012-12-08, 22 : 10
 
测试可行,主要就是路径的问题。
还有就是不知道怎么编译…
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2013-01-25, 13 : 54
 
好东西啊, 感谢楼主
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2013-03-18, 13 : 30
 
不知道作者有新版没有,目前在用,不过有些bug查了半天也找不到联系方式,连个人肉的线索都没有啊……
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2013-05-12, 11 : 58
 
下载不了啊~~ 能否更新下附件,换个网盘神马的,5d6d很坑爹
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2014-12-21, 10 : 34 (这个帖子最后修改于: 2014-12-21 16 : 41 by robertL.)
RE: Vim 简易编辑环境 (AhkSIDE)
@NothingIsBig @ccaiai @月下幽杳
见:Vim2Ahk Vim下的AutoHotKey IDE环境 | 夏之日 · 博客
ahkside所在Github地址
自:谷歌搜索AhkSIDE

希望大家有自己的发布空间,也能顺带集中分享。

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2015-01-27, 01 : 16
RE: Vim 简易编辑环境 (AhkSIDE) V1.0.2
.7z附件下载来错误,只有23K,GITHUB里没有.7z的附件。vimfiles文件夹资料哪里下载。。。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合