2006-07-12

大文字連続入力 |Emacs|

連続する大文字 (ex. UNIX, OECD, TOEIC) を入力するにはどうするか? こんな問いが、英数/かなさんの記事に上がっていた。

英数/かなさんは、この問いに三つの解答を返した。

  1. Shift キーを押しながら入力する
  2. CapsLock キーを押してから入力する
  3. SandS 方式を使う

Shiftを使う方法だと、小指を横に取られてしまうため、小文字のときよりも打ちづらくなることは避けられない。

Caps Lockを使う方法だと、モードの切り替えが面倒だ。

この問題を解決するものとして、SandS というものがある。

SandS は Shift and Space の略で、Shiftキーの代わりにスペースバーを使ってしまうというもの。

英数/かなさんの記事は、SandS 方式を解説しておられる。Windows では窓使いの憂鬱というツールを使って、SandS が使えるようになるらしい。興味のある方は、英数/かなさんの記事をご一読されたし。

ぼくの場合

さて、ぼくは Emacs を使って、大文字を連続入力している。4 つ目の答えということで、簡単に書いてみやう。

Emacs には、大文字/小文字関連のコマンドに次の三つが用意されている。

M-c (M-x capitalize-word)
ポイント以降の単語の最初の一文字目を大文字に、残りの文字を小文字にする (eMaCs → Emacs)
M-u (M-x upcase-word)
単語を全て大文字にする (eMaCs → EMACS)
M-l (M-x downcase-word)
単語を全て小文字にする (eMaCs → emacs)

全文字を大文字にする場合、使うのは upcase-word というコマンド。例えば、emacs という文字を大文字にする場合、次のように入力する。

emacs M-b M-u

emacs と入力後、M-b (backward-word) コマンドで emacs の前にポイントを動かし、M-u (upcase-word) コマンドで大文字にする。

upcase-backward-word

さて、上述の方法だと M-u の前に M-b が必要なので一手間分面倒。というわけで、M-b を必要としない、upcase-backward-word という関数を作ってみた。M-U でポイントの前の単語を大文字化する。

(global-set-key "\M-U" 'upcase-backward-word)
(defun upcase-backward-word (arg)
  "Convert previous word (or arg words) to upper case."
  (interactive "p")
  (upcase-word (- arg)))

4 comments:

  1.  大文字の入力の仕方にも、色々有るのですね。
     僕は2.のSHIFTキー派ですね。
    「3.SandS 方式を使う」というのは、初めて知りました。
    「窓使いの憂鬱」、キーボード配列で紹介されていたページにも出てきましたね。=)

    ReplyDelete
  2. 私も SandS 方式は、知ったばかりです。世の中、いろいろな方法を考えつく人達がいるものですね。
    「窓使いの憂鬱」はこの手の業界 (?) では有名なソフトです。Dvorak 周りで一度レビューを書きたいのですが、私自身が使っていないので、気持ちばかりが空回りしています :p

    ReplyDelete
  3. なるほど.. Emacsでは専用のキーバインドがあるんですね。
    私はこっちの方を初めて知りました。
    SandSはキーの違いはありますが、シフトしたままということ自体は変わらないので、慣れればEmacs方式のほうが楽かもしれませんね:)

    ReplyDelete
  4. 私は、逆に SandS を試したことがないので、どんなものなのか興味があります :) 実際、どちらの方が入力が楽でしょうね。両方を試した人に感想を聞いてみたいものです。

    ReplyDelete