oeditでEmacs風キーバインドな話(その2)
日本語とか見たいな文字(2バイト文字っていうのか)の場合に上手く移動しなかったのに気づいたので変えてみた話。
;; カーソル移動 ;; C-fで右へ (define (forward-char) (let ((row (editor-get-cur-row)) (col (editor-get-cur-col))) (editor-set-row-col row (+ col 1)) (if (= col (editor-get-cur-col)) (editor-set-row-col row (+ col 2))))) ;; C-bで左へ (define (backward-char) (let ((row (editor-get-cur-row)) (col (editor-get-cur-col))) (editor-set-row-col row (- col 1)) (if (= col (editor-get-cur-col)) (editor-set-row-col row (- col 2))))) ;; C-pで上へ (define (previous-line) (let ((row (editor-get-cur-row)) (col (editor-get-cur-col))) (editor-set-row-col (- row 1) col) (if (= row (editor-get-cur-row)) (editor-set-row-col (- row 2) col)))) ;; C-nで下へ (define (next-line) (let ((row (editor-get-cur-row)) (col (editor-get-cur-col))) (editor-set-row-col (+ row 1) col) (if (= row (editor-get-cur-row)) (editor-set-row-col (+ row 2) col)))) ;; カーソルキー キーバインド (app-set-key "Ctrl+f" forward-char) (app-set-key "Ctrl+b" backward-char) (app-set-key "Ctrl+p" previous-line) (app-set-key "Ctrl+n" next-line)
上下の移動は関係ないので実は必要ないかもしれないけど。
;簡易でも特に問題ないかも (define (next-line) (editor-set-row-col (+ (editor-get-cur-row) 1) (editor-get-cur-col)))
前に適当に試したのはこっち
http://d.hatena.ne.jp/himadatanode/20071106/p2
カーソル移動は基本的にマクロでやる必要はないので、キー割り当てで設定した方がよさげ。実用よりも試してみたと言う感じ。