2019年3月14日木曜日

xyzzyでvimのキーバインドにしてみました


途中までです。 @でvimキーバインド ノーマルモード  iでインサートモード
矩形選択をマウスでしなけらばならないと知って、愕然としました。
でこれ以上やる気がうせました。
やっぱり emacsとか,xyzzy とかは難しい。



C:\Users\moto\.xyzzy


;コマンドモード

;インサートモード
(defun del-key()
    (interactive)
    (global-unset-key '(#\a ))
    (global-unset-key '(#\b ))
    (global-unset-key '(#\c ))
    (global-unset-key '(#\d ))
    (global-unset-key '(#\e ))
    (global-unset-key '(#\f ))
    (global-unset-key '(#\g ))
    (global-unset-key '(#\h ))
    (global-unset-key '(#\i ))
    (global-unset-key '(#\j ))
    (global-unset-key '(#\k ))
    (global-unset-key '(#\l ))
    (global-unset-key '(#\m ))
    (global-unset-key '(#\n ))
    (global-unset-key '(#\o ))
    (global-unset-key '(#\p ))
    (global-unset-key '(#\q ))
    (global-unset-key '(#\r ))
    (global-unset-key '(#\s ))
    (global-unset-key '(#\t ))
    (global-unset-key '(#\u ))
    (global-unset-key '(#\v ))
    (global-unset-key '(#\w ))
    (global-unset-key '(#\x ))
    (global-unset-key '(#\y ))
    (global-unset-key '(#\z ))

    (global-unset-key '(#\i))
    (global-unset-key '(#\l))
    (global-unset-key '(#\h))
    (global-unset-key '(#\j))
    (global-unset-key '(#\g #\g))
    (global-unset-key '(#\g #\e))
    (global-unset-key '(#\g #\n))


    (global-unset-key '(#\z #\z))
    (global-unset-key '(#\C-j))
    (global-unset-key '(#\C-k))

    (global-unset-key '(#\0))

    (global-unset-key '(#\o))
    (global-unset-key '(#\d #\d))
    (global-unset-key '(#\d #\e))
    (global-unset-key '(#\y #\y))
    (global-unset-key '(#\y #\w))
    (global-unset-key '(#\x))
    (global-unset-key '(#\p))
    (global-unset-key '(#\u))
    (global-unset-key '(#\s))
    (global-unset-key '(#\: #\q))
)

;参考サイト
;xyzzy
;http://www.uranus.dti.ne.jp/~shiro-/soft/xyzzy/keybind.html
;▲ page top
;C-iやC-mに別の機能を割り当てる
;(setf (svref *kbd-translate-table* (char-code #\[キー1])) #\[キー2])
;(global-set-key #\[キー2] '[関数名])
; 一部のキーは、以下のように「同じもの」とみなされています。
;
;Enter    #\C-m
;Tab    #\C-i
;Backspace    #\C-h
;Delete    #\C-?
;Esc    #\C-[
;LFD(Enter+Tab)    #\C-j
; このキーに別の機能を割り当てるには、まず*kbd-translate-table*を使っ
;て空いているキー(キー2)に目的のキー(キー1)を割り当てます。この関
;数は、キー1が押された場合はキー2が押されたふりをする、というものです
;。
; その上で、キー2に目的の関数を割り当てます。
; 例えば、C-jにhtml+-insert-pathを、C-M-jにhtml+-insert-path-dialogを
; り当てるには、このようにします。
;
;(setf (svref *kbd-translate-table* (char-code #\C-j)) #\C-F23)
;  (define-key *html+-mode-map* #\C-F23      'html+-insert-path)


;ノーマルモード
(defun set-key()
    (interactive)
    (global-set-key '#\i 'del-key)

    ;カーソル移動
    ;hljk
    ;(setf (svref *kbd-translate-table* (char-code #\l)) #\C-F19)
    ;(global-set-key #\C-F19 'forward-char)
    ;(setf (svref *kbd-translate-table* (char-code #\h)) #\C-F23)
    ;(global-set-key #\C-F23 'backward-char)
    ;(setf (svref *kbd-translate-table* (char-code #\j)) #\C-F22)
    ;(global-set-key #\C-F22 'next-virtual-line)
    ;(setf (svref *kbd-translate-table* (char-code #\k)) #\C-F20)
    ;(global-set-key #\C-F20 'previous-virtual-line)

    (global-set-key '(#\l) 'forward-char)
    (global-set-key '(#\h) 'backward-char)
    (global-set-key '(#\j) 'next-virtual-line)
    (global-set-key '(#\k) ' previous-virtual-line)

    ;カーソル移動 ------------------------
    ;行頭に移動 0
    (global-set-key '(#\0) ' beginning-of-line)
    ;行末に移動 $
    (global-set-key '(#\e) 'end-of-line)
    ;ファイルの先頭に移動 gg
    (global-set-key '(#\g #\g) 'beginning-of-buffer)
    ;ファイルの末尾に移動 G
    (global-set-key '(#\g #\e) 'end-of-buffer)
    ;指定行に移動 数字+g
    (global-set-key '(#\g #\n) 'goto-line)

    ;スクロール ------------------------
    ;現在行をページの中央に zz
    (global-set-key '(#\z #\z) 'recenter)
    ;次のページへ移動
    (global-set-key '(#\C-j) 'next-page)
    ;前のページへ移動
    (global-set-key '(#\C-k) 'previous-page)


    ;改行+カーソル移動+インサートモード    o
    (defun ret-new()
        (interactive)
        (end-of-line)
        (newline)
        (del-key)
    )
    (global-set-key '(#\o) ' ret-new)

    ;削除 -------------------------
    ;一行削除 dd
    (defun kill-line-new()
        (interactive)
        (beginning-of-line)
        (selection-next-virtual-line)    
        (kill-selection-to-clipboard)
        (next-virtual-line)
    )
    (global-set-key '(#\d #\d) 'kill-line-new)

    ;カーソル位値から行末まで削除 d$
    (global-set-key '(#\d #\e) 'kill-line)

    ;行選択と削除を分離
    ;行選択-削除 S-v d
    (defun del-line-new()
        (interactive)
        (kill-selection-to-clipboard)
    )    
    (defun mark-line-new()
        (interactive)
        (beginning-of-line)
        (selection-next-virtual-line)
    )    
    (global-set-key '(#\M-v) 'mark-line-new)



    ;カーソル位値文字削除 x
    (global-set-key '(#\x) ' delete-char-or-selection)


    ;;矩形操作--------------------------------
    ;;矩形選択 C-v
    ;(global-set-key '(#\C-v) 'mouse-ctl-left-press)
    ;(global-set-key '(#\C-n) 'mouse-ctl-left-motion)
    ;(global-set-key '(#\C-q) 'mouse-nop)

    ;(defun mouse-c-l-m-new()
    ;    (interactive)
    ;    (mouse-ctl-left-motion)    
    ;    (next-virtual-line)
    ;    (mouse-nop)
    ;)
    (global-set-key '(#\C-d) 'mouse-c-l-m-new)



    ;矩形削除 d
    ;(defun del-rect-new()
    ;    (interactive)
    ;    (delete-rectangle)
    ;    (global-unset-key '(#\d))
    ;)    





    ;コピー ------------------------
    ;一行コピー yy
    (defun copy-line-new()
        (interactive)
        (beginning-of-line)
        (selection-next-virtual-line)    
        (copy-selection-to-clipboard)
    )
    (global-set-key '(#\y #\y) ' copy-line-new)
    
    ;単語コピー yw
    (defun copy-word-new()
        (interactive)
        (backward-word)
        (selection-forward-word)
        (copy-selection-to-clipboard)
    )
    (global-set-key '(#\y #\w) 'copy-word-new )
    
    ;貼り付け p ------------------------    
    (global-set-key '(#\p) 'paste-from-clipboard)
    


    
    
    ;やり直し u
    (global-set-key '(#\u) ' undo)
    
    ;やり直しをやめる C-r
    (global-set-key '(#\s) ' redo)
    
    ;xyzzyを終了
    (global-set-key '(#\: #\q) ' kill-xyzzy)
)
(global-set-key '(#\@) 'set-key)







    

    

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ページ

Featured Posts