contents

  1. ファイルの新規作成
  2. キーレイアウトの変更
  3. Windowsのキーバインド
  4. Emacs覚え書き
  5. Cygwin覚え書き
  6. 圧縮・解凍

Customize

PC(Windows)環境の整備の足しにしてもらえれば本望です。

ShellNew

エクスプローラの新規作成についてです。 とりあえずテキストを作り、あとで拡張子を書き換えるひとも多いと思いますが、専用のファイルを自分で追加することができます。 ここでは、新規作成に HTMLドキュメントを追加する例を挙げます。 [画面]

  1. 作成したいファイルのテンプレート(「new.html」とする)を用意し、テンプレートフォルダに入れておく。
    Windows98の場合は、「C:\WINDOWS\ShellNew」
    Windows2000/XPの場合は、「C:\Documents and Settings\ユーザー名\Templates」
  2. レジストリエディタ(regedit.exe)を起動する。
  3. HKEY_CLASSES_ROOT の下のカスタマイズしたいファイル拡張子(.html)を開く。
  4. 「ShellNew」というキーを新規作成する。
  5. その下に、「FileName」という文字列を作成する。
  6. FileNameを編集し、値を「new.html」に書き換える。

空のファイルで良い場合(プレーンテキストなど)は、「FileName」の代わりに「NullFile」という文字列(値なし)を作成すればよいです。 この場合、テンプレートファイルは必要ありません。 新規作成から削除する場合は、ShellNewのキーを削除すればよいです。

txt, h, cpp, html, xmlのあたりを作成しておけば、拡張子表示なしでも生きていけるかも?

ScancodeMap

Windows2000/XP における、スキャンコードマップ(キーマップ)の変更法です。 OSレベルで変更するので、アプリケーションを常駐させることはありません。 変更には十分気をつけてください。 例えば、DelキーをなくしてしまうとCtrl+Alt+Delでログオンできなくなることもあります! また、DirectInput経由でのキーボード状態の取得時には、スキャンコードマップは効果が無いようです。 一次情報はこちら。 [画面]

  1. レジストリの「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout」を開く。
  2. 右クリックから新規バイナリ作成し、「Scancode Map」という名前にする。
  3. Scancode Mapを右クリック、変更。後述の値を書き込む。
  4. Windowsの再起動。

値の意味。すべてリトルエンティアンであることに注意!

00 00 00 00バージョン(?)
00 00 00 00フラグ(?)
nn nn nn nnマッピング数 + 1
yy YY xx XXキーコードXXxxをキーコードYYyyに変更する。スキャンコード表(Excel)の押すときのコードを参照。
...
00 00 00 00ターミネータ
【例】半角 (0x0029) → Esc (0x0001)、CapsLock (0x003a) → L Ctrl (0x001d) に置換 (ただし、私の環境では複数同じキーがある場合認識しませんでした)
0000 0000 0000 0000 0300 0000 0100 2900 1d00 3a00 0000 0000
【例】:↑の入れ替えバージョン
0000 0000 0000 0000 0500 0000 2900 0100 0100 2900 3a00 1d00 1d00 3a00 0000 0000

Windowsのキーバインド

種類入力説明
Windows Ctrl + Shift + ESC タスクマネージャ起動
Alt + Space システムメニューを開く
「Alt + Space, x」で最大化
「Alt + Space, n」で最小化
「Alt + Space, c」で閉じる
Shift + F10 右クリックメニューを表示(Menuキーと同じ)
Windows + E エクスプローラ起動
Windows + R ファイル名を指定して実行
Windows + Tab タスクバー上でタスクの切り替え
MS-IME Ctrl + A変換部分を最初の文節へ
Ctrl + S変換部分をひとつ前の文節へ
Ctrl + D変換部分をひとつ後の文節へ
Ctrl + F変換部分を最後の文節へ
Ctrl + G次の1文字を削除
Ctrl + H前の1文字を削除
Ctrl + K文節を縮める
Ctrl + L文節を伸ばす
Ctrl + T全角英字変換
Ctrl + Uひらがな変換
Ctrl + Iカタカナ変換
Ctrl + O半角カタカナ変換
Ctrl + P半角英字変換

その他

Emacs覚え書き

Emacsってよりは、xyzzyです。 Tab = C-i, Enter = C-m, Linefeed = C-j などが同一視されるのはどうしようもないみたい。 範囲選択中のタブをshift-selectionに割り振れないかなぁ? もともとのEmacsに「Windows的範囲選択」の概念が無いから難しいのか?

種類入力コマンド名説明
カーソル移動 C-f forward-char
C-b backward-char
C-p previous-line
C-n next-line
C-a beginning-of-line 行頭
C-e end-of-line 行末
バッファ C-x o other-window フォーカスウィンドウ切り替え
C-x b switch-to-buffer 編集バッファを選択
C-x k kill-buffer バッファを閉じる
C-x 0 delete-window フォーカスされているウィンドウを閉じる
C-x 1 delete-other-windows フォーカスされていないウィンドウを閉じる
C-x 2 split-window 横に分割(縦に並べる)
C-x 3 split-window-vertically縦に分割(横に並べる)
削除 C-d delete-character 後削除
(C-h) backward-delete-char 前削除
C-k kill-line 行末まで削除
検索・置換 C-s isearch-forward インクリメンタルサーチ
C-r isearch-backward 逆方向インクリメンタルサーチ
goto-line 行番号ジャンプ
編集 M-u upcase-word ワードを大文字に変換
M-l downcase-word ワードを小文字に変換
untabify リージョン内のタブをスペースに変換
tabify リージョン内スペースをタブに変換
整形 shift-selection 選択範囲を右シフト
unshift-selection選択範囲を左シフト
リージョン処理 C-SPC mark-set マークセット
C-w kill-region リージョンkill
M-w copy-region-as-kill リージョンcopy
delete-region リージョンを削除
C-y yank yank
C-x C-x exchange-point-and-markカーソルとマークを入れ替える
矩形処理 C-x r k kill-rectangle 矩形kill
copy-rectangle 矩形copy
C-x r d delete-rectangle 矩形を削除(左詰めされる)
C-x r c clear-rectangle 矩形をスペースで埋める
C-x r y yank-rectangle 矩形yank
レジスタ C-x r SPC point-to-register カーソル位置をレジスタに登録する
C-x r j jump-to-register カーソル位置をレジスタから読み出す
C-x r s copy-to-register リージョンをレジスタに登録する
C-x r r copy-rectangle-to-register 矩形領域をレジスタに登録する
C-x r i insert-register レジスタに登録されたテキストを挿入する
繰り返し M-ndigit-argument次のコマンドを繰り返す
C-u nuniversal-command次のコマンドを繰り返す(number省略時は4回)

Cygwin覚え書き

Cygwinホームディレクトリの変更
環境変数 HOME を用意するだけ。 HOME=C:\cygwin\home とか。パス区切りは'\'でよいもよう。
最近のcygwinは自動的に.bashrcを読み込んでくれないぽい?
/etc/profile の最後に test -f ./.bashrc && . ./.bashrc を追加。
lsで日本語ファイル名の表示
ls --show-control-char
ただし、ファイル名補完では日本語が入ってくれない。 CUIと日本語の相性が悪いのはどうしようもないのではあるが。 alias張っておきましょう。
.bashrc
alias ls='ls --show-control-char'
エクスプローラでフォルダの右クリックからbashを呼ぶ

環境変数に呼び出し元のパスを保存⇒変数を参照してディレクトリ変更という流れです。

  1. 環境変数を保存するバッチファイルを作成します。

    SummonBash.bat:cygwin.bat に一行追加しただけです。

  2. .bashrc に、先ほどの環境変数を参照して、カレントディレクトリを移動するためのスクリプトを追加します。
    if [ ! -z "$SUMMON_BASH_TARGET_PATH" ]; then
        cd "$(echo "$SUMMON_BASH_TARGET_PATH" | tr -d "\"" | cygpath -u --file -)"
        unset SUMMON_BASH_TARGET_PATH
    fi

    スペースを含むパスの処理と、cygpathの不可解な動作のため、多少トリッキーなことをしています。 tr -d でいったんダブルクォート取り除き、cygpath でCygwinパスに変換、最後にもう一度ダブルクォートをつけて cd しています。 試行錯誤の結果なので、もっと良い解決方法があるかもしれません。

  3. エクスプローラのフォルダの右クリックメニュー項目を追加します。

    HKEY_CLASSES_ROOT\Folder\shell\SummonBash というキーを作成します。 SummonBashの部分は任意の名前でかまいません。 このキーの値に設定した文字列がメニュー項目の名前になります。 名前に & (アンパサンド) を含むと、その次の文字がニーモニック (キーボードショートカット) になります。 例えば、「Cyg&win」とすると、キーボードの W でメニューが選択できます。

    上記のキーの直下に、command という名前のキーを作成します。 (この例の場合は HKEY_CLASSES_ROOT\Folder\shell\SummonBash\command ) このキーの値に、1.のバッチファイルを指定します。 (SummonBash.bat "%1") %1はダブルクォートで囲む必要があります。 また、パスが通っていないディレクトリにバッチファイルをおく場合は、フルパスで指定します。

空のディレクトリを再起的に削除する
  • shell : find STARTDIR -type d | sort -r | xargs -r rmdir 2>/dev/null
  • python : remove_empty_dirs.py

圧縮・解凍

解凍

.tar.gz tar zxvf 対象
.tar.bz2tar jxvf 対象
.gz gunzip 対象 または gzip -d 対象
.bz2 bunzip2 対象 または bzip2 -d 対象
.lzh lha x 対象
.zip unzip 対象

圧縮

.tar.gz tar zcvf 書庫.tar.gz 対象 ...
.tar.bz2 tar jcvf 書庫.tar.bz2 対象 ...
.gz gzip 対象
.bz2 bzip2 対象
.lha lha c 書庫.lzh 対象 ...
.zip zip 書庫.zip 対象 ...

alias