ユーザ用ツール

サイト用ツール


vikey

autohotkeyを使って、viのキーバインドをまねるスクリプト。 windowsアプリのカーソル操作をviライクにできます。 Excelのセル移動もjiklでできます。 (以下のソースをvikey.ahkとして保存して実行をする)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;2010/10/01 vikey.ahk 
; viのキー操作でwindowsアプリを操作する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ViMode = normal
SetTimer, ViShowInfo, 50


; End of auto-execute section

^!r::Reload

^h::Send, {BS}

ViShowInfo:
ToolTip, %ViMode%, 0, 0, 20
return

#UseHook
#IfWinNotActive ahk_class Vim

ESC::
   Send, {Shift Up}
ViMode = normal
return

+1::
+2::
+3::
+4::
+5::
+6::
+7::
+8::
+9::
+0::
1::
2::
3::
4::
5::
6::
7::
8::
9::
0::
+b::
+c::
+e::
+f:: 
+m::
+n::
+q::
+r::
+s::
+t::
+w::
;;;; +x::
+z::
b::
c::
e::
f::
g::
m::
n::
q::
r::
s::
t::
w::
;;;; x::
y::
z::
if ViMode = insert
	Send, %A_ThisHotkey%
return

+g::
if ViMode <> insert
	Send, ^{END}
else
	Send, %A_ThisHotkey%
return

;A::
;	if ViMode = insert
;		Send, A 
;	If ViMode = normal
;	{
;		Send, {END}
;		VimMode = insert
;	}
return

a::
if ViMode = insert
	Send, a
if ViMode = normal
{
	Send, {RIGHT}
	ViMode = insert
}
return


i::
if ViMode = insert
	Send, i
if ViMode = normal
	ViMode = insert
return

+D::
d::
if ViMode <> insert
{
	ViMode = normal
	Send, {Shift Up}
	Send, {Delete}
}
else
	Send, %A_ThisHotkey%
return

v::
if ViMode = normal
{
	Send, {Shift Down}
	ViMode = visual
	return
}
if ViMode = insert
	Send, v
return

+V::
if ViMode = visual
{
	Send, {Shift Up}
	ViMode = normal
	return
}
if ViMode = insert
	Send, %A_ThisHotkey%
return

+y::
if ViMode = visual
{
	Send, {Shift Up}
	Send, ^c
	ViMode = normal
	return
}
if ViMode = insert
	Send, %A_ThisHotkey%
return

p::
if ViMode = normal
	Send, ^v
if ViMode = insert
	Send, %A_ThisHotkey%
return

+H::
h::
if ViMode <> insert
	Send, {LEFT}
if ViMode = insert
	Send, %A_ThisHotkey%
return

+J::
j::
if ViMode <> insert
	Send, {DOWN}
if ViMode = insert
	Send, %A_ThisHotkey%
return

+K::
k::
if ViMode <> insert
	Send, {UP}
if ViMode = insert
	Send, %A_ThisHotkey%
return

+L::
l::
if ViMode <> insert
	Send, {RIGHT}
if ViMode = insert
	Send, %A_ThisHotkey%
return

u::
if ViMode = normal
	Send, ^z
if ViMode = insert
	Send, u
return

+o::
if ViMode = insert
	Send, O
if ViMode = normal
{
	ViMode = insert
	Send, {HOME}{ENTER}{UP}
}
return

o::
if ViMode = insert
	Send, o
if ViMode = normal
{
	ViMode = insert
	Send, {HOME}{DoWN}{ENTER}{UP}
}
return

x::
if ViMode <> insert
	Send, {DELETE}
if ViMode = insert
	Send, %A_ThisHotkey%
return

+`;::
if ViMode = normal
{
	ViMode = insert
	InputBox, In, Vi
	ViMode = normal
	if In = w
		Sleep, 20
		Send, ^s
}
if ViMode = insert
	Send, `:
return 

#UseHook of
vikey.txt · 最終更新: 2020/02/11 20:12 by nabezo