Linux Tips

Linux Tipsのぺえじ


設定などのメモです。
私のLInux環境はUbuntu 8.04 (Hardy)です。

目次


Nautilus

任意のファイル名のファイルを隠しファイルにする

Nautilusファイルマネージャは、ファイル名が"."で始まるか"~"で終わる場合、そのファイルを隠しファイルと見なして表示しないようになっています。しかし、そのような特別なファイル名を使わずに隠しファイルにしたい場合もあります。Nautilusのマニュアルをよく読むと、.hidden という設定ファイルを使えと書いてあります。

例えば、/home/irie/Documents/foo.txt というファイルを隠しファイルにしたい場合、以下のように、同じディレクトリの.hiddenというファイルにファイル名を追加します。
$ cd ~/Documents
$ echo "foo.txt" >> .hidden
あとは、Nautilusの表示を更新すれば([F5]キーを押す)、foo.txt というファイルは表示されなくなります。もちろん、ファイルは存在しているので、ターミナルのlsコマンドを実行すればちゃんと表示されます。

ここで、.hidden の内容を見てみると
$ cat .hidden
bar.txt
foo.txt
というように、1行に1つのファイル名が書かれています。隠すのを解除したければ、.hidden を編集して、foo.txt と書かれた行を削除すればよいわけです。この時も、表示を更新しないと設定が反映されないので、[F5]キーを押します。

いちいちコマンドラインから打ち込むのは面倒なので、右クリックメニューから簡単に隠しファイルにしたり戻したりできるようにする スクリプトを作ってみました。こちらにあります。

日本語名のファイルをターミナル上では英語名で扱う


日本語のファイル名は見た目はいいのですが、ターミナルのコマンドラインから指定する時にはいちいち日本語入力に切り換えなければならず、煩わしいものです。日本語名のファイルへのシンボリックリンクを英語名で作っておけば、コマンドラインから英語名でアクセスできますが、GUI上で実体とシンボリックリンクの両方が表示されてしまって見た目がよくありません。そこで、作ったシンボリックリンクを.hiddenを使って隠しファイルにすると、Nautilusでは日本語名の実体のファイルだけが表示されるようになり、すっきりします。例えば、"/home/irie/Document/ほげ.txt"というファイルがあるとすると、
$ cd ~/Document
$ ln -s ほげ.txt hoge.txt
$ echo "hoge.txt" >> .hidden
とすればよいでしょう。

GNOMEを初めて起動すると、ホームディレクトリに"ドキュメント"、"デスクトップ"、"音楽"などの日本語名のディレクトリが7つほど作られます。これらも、上のようにすれば、コマンドラインから英語名でアクセスできるようになって便利です。ただ、7つのディレクトリに対し行うのはちょっと面倒なので、この処理を自動化するスクリプトを作ってみました。
symlink-user-dirs.sh
これを適当なディレクトリに保存し、ターミナルから
$ bash symlink-user-dirs.sh
と打ち込んで実行すればOKです。OSのアップグレードをしてホームディレクトリをそのまま移行すると、元々英語名のディレクトリになっている可能性もあります。その場合は逆に、日本語名のシンボリックリンクを作成して、元のディレクトリ(英語名の方)を隠しファイルにするようになっています。


Emacs

anthy-modeで、入力のモード別にカーソルの色を変える


これを参考にしました。ただしadviceだと失敗する事が多いので、post-command-hookを使います。
(defvar anthy-cursor-color-alist
  '(("hiragana" . "red")
    ("katakana" . "goldenrod")
    ("alphabet" . "royalblue")
    ("walphabet" . "orchid")
    ("hankaku_kana" . "lime green")))
(defun anthy-adjust-cursor-color ()
  (set-cursor-color
   (if anthy-minor-mode
       (cdr (assoc anthy-current-rkmap anthy-cursor-color-alist))
     (frame-parameter nil 'foreground-color))))
(add-hook 'post-command-hook 'anthy-adjust-cursor-color)

anthy-modeで、[shift]+[space]で半角スペースを入力できるようにする


一時的にanthy-wide-spaceに半角スペースをletすれば可能です。
(define-key anthy-mode-map [?\S-\ ]
  (lambda () (interactive)
    (let ((anthy-wide-space " "))
      (anthy-handle-key 32 32))))
逆に、[space]で半角スペース、[shift]+[space]で全角スペースを入力するには以下のようにします。
(setq anthy-wide-space " ")
(define-key anthy-mode-map [?\S-\ ]
  (lambda () (interactive)
    (let ((anthy-wide-space " "))
      (anthy-handle-key 32 32))))

anthy-modeで、変換候補の文節を[ ]で囲まないようにする


ちょっとトリッキーですが、こんな感じでできます。
(defadvice anthy-select-face-by-attr (before anthy-do-select-face () activate)
  (if (memq '-RV- attr) (setq attr '(RV))))
(defadvice anthy-insert-preedit-segment (before anthy-no-bracket () activate)
  (when (memq 'RV attr) (delq 'RV attr) (setq attr (cons '-RV- attr))))

複数フレームでフォントのアンチエイリアスを有効にする(Emacs23のみ)


私は以下のように設定しています。3行目で新規フレームもアンチエイリアスを有効にする設定をしています。2行目はツールチップのフォント指定です。
(set-default-font "Bitstream Vera Sans Mono-10")
(set-face-font 'variable-pitch "Bitstream Vera Sans Mono-9") ;tooltipとtabbarのフォント
(modify-all-frames-parameters (list (assq 'font (frame-parameters)))) ;複数フレームに対応
(set-fontset-font (frame-parameter nil 'font)
		  'japanese-jisx0208
		  '("Systema" . "unicode-bmp")) ;; 日本語フォントの指定
現在のUbuntu Hardyのemacs-snapshotでは、IPAモナーゴシックだとビットマップになってしまうので、Systemaフォントを使っています。見やすいし、Bitstream Vera Sans Monoともよく合っていていい感じです。

fundamental-modeやtext-modeでも、行末のスペースなどを強調表示する


この種の設定は検索すればすぐ見つかりますが、大抵の場合fundamental-modeやtext-modeでは使えません。しかし次のようにafter-change-major-mode-hookを使えば可能です。
(defgroup emphasize-blank nil "全角スペースなどに色を付けて目立たせます"
  :group 'faces :group 'editing)
(defface blank-jpn '((t (:background "aquamarine"))) "全角スペース"
  :group 'emphasize-blank)
(defface blank-eol '((t (:background "RosyBrown1"))) "行末のスペース"
  :group 'emphasize-blank)
(defface blank-tab '((t (:background "gray95"))) "タブ文字"
  :group 'emphasize-blank)
(defvar blank-jpn 'blank-jpn)
(defvar blank-tab 'blank-tab)
(defvar blank-eol 'blank-eol)
(defvar emphasize-blank-history nil)
(defadvice font-lock-mode (before emphasize-blank activate)
  (unless (or (memq major-mode '(calendar-mode w3m-mode))
	      (memq major-mode emphasize-blank-history))
    (font-lock-add-keywords major-mode
			    '((" " 0 blank-jpn t)
			      ("[\t ]+$" 0 blank-eol t)
			      ("\t" 0 blank-tab t)))
    (setq emphasize-blank-history (cons major-mode
					emphasize-blank-history))))
(add-hook 'after-change-major-mode-hook
	  (lambda ()
	    (when (memq major-mode '(fundamental-mode text-mode))
	      (make-local-variable 'font-lock-defaults)
	      (setq font-lock-defaults '(nil t))
	      (turn-on-font-lock))))
カスタマイズ機能でフェイスを変更できるようにしてあります。
font-lock-keywords-alistがどんどん増殖していくのを防ぐために小細工をしています。

ホイールマウスで横スクロールする


上下方向のスクロールはEmacs22, 23では何も設定しなくてもできますが、C-x 3 で横に分割した時などは水平方向のスクロールもできると便利なので、以下のように設定しています。
;; マウスカーソル下のウインドウをスクロール(上下左右)
(defun wheel-scroll (&optional n horiz)
  (interactive "p")
  (save-selected-window
    (let ((mp (cdr (mouse-position))))
      (select-window (window-at (car mp) (cdr mp))))
    (if horiz
	(if (eq n '-) (scroll-right nil 200) (scroll-left n 200))
      (scroll-up n))))
;; 上下方向
;; ホイールのみで5行ずつ
(global-set-key [mouse-4] (lambda () (interactive) (wheel-scroll -5)))
(global-set-key [mouse-5] (lambda () (interactive) (wheel-scroll 5)))
;; Shift + ホイールで1行ずつ
(global-set-key [S-mouse-4] (lambda () (interactive) (wheel-scroll -1)))
(global-set-key [S-mouse-5] (lambda () (interactive) (wheel-scroll 1)))
;; Ctrl + ホイールで1ページずつ
(global-set-key [C-mouse-4] (lambda () (interactive) (wheel-scroll '-)))
(global-set-key [C-mouse-5] (lambda () (interactive) (wheel-scroll nil)))
;; 水平方向
;; Meta + ホイールで10桁ずつ
(global-set-key [M-mouse-4] (lambda () (interactive) (wheel-scroll -10 t)))
(global-set-key [M-mouse-5] (lambda () (interactive) (wheel-scroll 10 t)))
;; Meta + Shift + ホイールで1桁ずつ
(global-set-key [M-S-mouse-4] (lambda () (interactive) (wheel-scroll -1 t)))
(global-set-key [M-S-mouse-5] (lambda () (interactive) (wheel-scroll 1 t)))
;; Meta + Ctrl + ホイールで1ページずつ
(global-set-key [C-M-mouse-4] (lambda () (interactive) (wheel-scroll '- t)))
(global-set-key [C-M-mouse-5] (lambda () (interactive) (wheel-scroll nil t)))

マウスの挙動を変えるいろいろな設定


選択範囲の移動をカット&ペーストの2段階で行うのは面倒なので、一発でできるような設定を考えてみました。
;; Shift + 中ボタンクリックで選択範囲を移動(同一フレーム内に限る)
(global-set-key [S-mouse-2]
	(lambda (buf beg end click)
	  (interactive (list (current-buffer)
			     (region-beginning) (region-end)
			     last-input-event))
	  (mouse-set-point click)
	  (let ((kill-read-only-ok t))
	    (save-current-buffer
	      (set-buffer buf) (kill-region beg end)))
	  (yank)))

マウスボタンをクリックしたときの挙動が他のアプリケーションと違いすぎて混乱するので、なるべく普通っぽくなるように設定しています。
; Shift+マウス左ボタンで選択範囲の拡大・縮小
(global-set-key [S-down-mouse-1] 'mouse-save-then-kill)
; マウス右ボタンでEditメニューをポップアップ
(global-set-key [down-mouse-3]
	(lambda (event &optional prefix)
	  (interactive "@e\nP")
	  (popup-menu  menu-bar-edit-menu event prefix)))
; Shift+マウス右ボタンですべてのメニューをポップアップ
(global-set-key [S-down-mouse-3] 'mouse-popup-menubar)

外部ウェブブラウザを指定する


GNOME環境なのにKonquerorが起動されたりするとイライラするので。
(setq browse-url-generic-program "firefox")


OpenOffice.org Tips

WriterやImpressにLaTeXの数式を埋め込む(OOoLaTeXを使う)



OpenOffice.orgにはMathがありますが、使いにくくてやってられません。LaTeXを使う人なら、プレゼン用のファイルを論文等からコピペして作れるのでとても便利です。

インストール


以前は結構面倒だったんですが、現在は簡単にインストールできます。
  1. 事前にLaTeXとGhostScriptをインストールしておきます。
  2. ここへ行って「Get it!」をクリックするとSourceForgeのダウンロードページに飛ばされるので、使用環境に合わせて適当なバージョンの.oxtファイルをダウンロードします。
  3. OOoの「ツール」メニューから拡張機能マネージャーを起動し、「マイ拡張機能」を選択して「追加」ボタンをクリックしてダウンロードしたファイルを選択し、ライセンスに同意するとインストールされます。OOoを再起動してインストール完了です。

設定

  1. OOoLaTeXのツールバーが追加されているのでクリックすると設定ダイアログが開くので、適宜設定します。LaTeXとGhostScriptの場所はDebianやUbuntuなら「/usr/bin/」でOKです。
  2. emathやrevtexなどのマクロを使いたい場合は、LaTeXソースの編集ダイアログから「preamble」ボタンをクリックして\usepackageを追加します。


最終更新:2008年07月21日 11:43
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル