[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:11661] Re: Question Backspace key



かわさき@和歌山市です.

> 山口@富山大学 です。

こんにちは.

> netscape の方はよくわかりませんが、私もたまに emacs での
> backspace/delete の挙動に悩むことがあります。

そうなのですか.
私は,初めてなので,ちょっと面くらい,何度も再インストールを
くりかえしてしまいました.
ひょっとしてハードがいっちゃったかと思い,Plamo2.1やVine2.1.5
なんかも入れてみて,試したりしました.
数日間,インストールばっかりやってました.(^^;;

同じマシン(Let's note CF-A1)で,Vine2.1.5は普通の挙動,Plamo2.1は,
netscapeだけ今回の挙動でした.

> Emacs でキーの挙動の話をするときは大きく分けて 2 つの場合があります。
> 
>   * X 上で立ち上げたとき
>     ウインドウマネージャから立ち上げたり、X 上の term から emacs で
>     立ち上げた場合
>   * term 上で立ち上げたとき
>     コンソールから emacs として立ち上げたり、X 上の term から
>     emacs -nw で立ち上げた場合

私の場合,コンソールで立ち上げたときは,普通の挙動でしたが,
それ以外は,-nwでも,今回の挙動になりました.

> で、X 上で立ち上げたときは .emacs の設定は単純で、以下だけで
> いいはずです。
> # これ以外の backspace/delete に関する設定があるときはコメント
> # アウトしてください
> 
> (global-set-key [backspace] 'delete-backward-char)
> (global-set-key [delete] 'delete-char)

え〜と,テンプレートのまんまですが,「かんなの設定」のところで
      ;; BS,Delete キーの設定
      (define-key canna-mode-map [?\177] [?\C-r])
      (cond ((eq window-system 'x)
             (define-key canna-mode-map [delete] [?\C-d]))
            ((null window-system)
             (if (not (or (equal (getenv "TERM" ) "kon")
                          (equal (getenv "TERM" ) "linux")
                          ;; TeraTermで DEL by Backspace の場合は有効に,
                          ;; DEL by Delete の場合は無効にする.
;                         (equal (substring (getenv "TERM") 0 2) "vt")
                          ))
                 (define-key canna-mode-map [8] [?\C-d])
               )))
      ))
となっています.
あと
;;; BS,Delete などの特殊キーの設定
;;  とにかく,
;;   ・Deleteは「現在の一文字消去」
;;   ・BackSpaceは「後退」
;;  にこだわってみました.
;;
のところで,
     ;; konとlinux端末のdeleteキー
       (global-set-key "\e[3~" 'delete-char)
       ;; TeraTermのデフォルトのDELキー
       (global-set-key "\e[4~" 'delete-char)
       (load "term/keyswap")
       (global-set-key [8] 'delete-char)
       (if (or (equal (getenv "TERM" ) "kon")
               (equal (getenv "TERM" ) "linux")
               ;; TeraTermで DEL by Backspace の場合は有効に,
               ;; DEL by Delete の場合は無効にする.
;              (equal (substring (getenv "TERM") 0 2) "vt")
               )
           (global-set-key [8] 'delete-backward-char)
         )
       ))
などもあります.(上の方に書いてあったのは割愛しました)

> ただし、emacs を引数なしで立ち上げると lisp-interaction-mode になり、
> このモードでは [delete] が delete-backward-char として設定されている
> ので、別に設定が必要です。
> # M-x fundamental-mode として試してみてください
> ## 上記の設定は term 上で立ち上げたときには影響を与えないので、
> ## X 上かどうか場合分けしてもしなくても大丈夫です
> ## (本当はした方がいいですが)
> 
> 問題は term 上で立ち上げたときなんですが、これは term の設定に
> 依存します。
> 
> とりあえず私は Debian Policy
> 
>   http://www.debian.or.jp/Documents/debian-policy-ja/policy.ja.html/ch10.html#s10.8
> 
> に従うように term を設定しています。

う〜,勉強になります.
って,ほとんど分からないですが.(^^;;

> Plamo 2.2.1 だと stty erase 以外は大丈夫なような気がします。
> # 私はもう個人的にかなり環境設定してしまっていて、Plamo のデフォルト
> # 環境を(簡単には)検証できません
> 
> この設定をすれば、「正しい端末」では Emacs 側で特に設定を変更せずとも
> 意図した挙動、
> 
>   backspace: カーソル前の 1 文字を削除
>      delete: カーソル位置の 1 文字を削除
>         C-h: ヘルプ表示
> 
> になってくれるはずです。

のはずですよね.(^^;;

> で、「正しい端末」かどうかという問題になるのですが、これを確かめる
> 方法やその結果などは JF の文書で紹介されています。
> 
>   Linux BackspaceDelete mini-HOWTO
>   http://www.linux.or.jp/JF/JFdocs/BackspaceDelete.txt
>   (HTML 版はないようです)
> 
> これによると、「正しい端末」を 標準 と呼び、そうでないものを アレゲ と
> 読んでいますが、その分類は、

アレゲってそういう意味だったですか.
いやあ,意味不明の言葉あるなあって思っていました.

>     標準: xterm, rxvt, ...
>   アレゲ: 一部の gnome-terminal, ...
> 
> となっています。
> # 私が調べた結果 kterm はアレゲでした
> ## しかも kterm は Debian Policy でいうところの例外ターミナルの
> ## 挙動を示します(backspace で ^H 以外を生成できない)
> 
> ですので、ユーザ側からすれば、
> 
>   * アレゲな端末を使わない
>     幸いコンソールは標準端末で、X 上の term は rxvt などで代用可能
>     なので大丈夫です
>   * アレゲな端末用に例外設定を加えて場合分けする
>     ちょっと面倒くさいですが...
> 
> といった対策が必要です。

べ,勉強します.
でも,全然,わからんです.

> もしできれば、
> 
>   * アレゲな端末を修正する
> 
> ができれば一番いいのですが。

ハハハハ(乾いた笑い).

> 参考になれば幸いです。

とても,勉強になりました.
ありがとうございました.

--
かわさき

Follow-Ups
[plamo:11664] Re: Question Backspace key, alpha
References
[plamo:11637] Question Backspace key, KAWASAKI Masazumi
[plamo:11651] Re: Question Backspace key, YAMAGUCHI Shingo

[検索ページ] [メール一覧]
Plamo ML 公開システム