2011/04/08

ubuntu 10.04 のセットアップ

10.04 ということはリリースから既に1年が経とうとしているのだが、11.04 が出ようっていうこんな時に、10.04 のセットアップ項目をまとめたいと思う。
最近なぜか ubuntu をインストールする機会が非常に多くなって、いちいちググるのもめんどくさいから。

● インストール

インストールは ubuntu-10.04.2-desktop-i386.iso から行う。
ubuntu の iso は ubuntu.com のダウンロードページから行うことができる。
ミラーサイトは勝手に判断してくれる。

インストールはすべてデフォルトのままで構わない。
注意する点は2つだけで、
  • 一番最初の画面で「日本語」を選ぶこと(左ペインのリストの一番下)
  • インストールする領域は「全てのパーティションを削除してインストールする」を選ぶ
しかも後者は私の個人的好みだ。

● アップデートマネージャー

インストールが済んで再起動すると、アップデートマネージャーが動く。
(ネットワークが正しく接続されていて DHCP ならば)
とりあえずアップデートしてしまうことにする。
現時点(2011/04/08)では62パッケージがアップデートされる。

● ネットワークの設定

最初にするのはネットワークの設定。
一番簡単なのは NetworkManager を使った設定。
有線は DHCP か STATIC かを選んで入力するだけだし、無線でも SSID まで自動的に拾ってきてセキュリティ方式を選べば簡単に設定できる。
NetworkManagerの問題は、ログインしてないと機能してくれないことだ。
ということは、このマシンをサーバーとして何らかのソフトを動かすときには、NetworkManager の設定は利用できない。
この場合は /etc/network/interfaces に設定を記入する。
例えば有線の eth0 を起動時から DHCP として動かしたい場合、上記ファイルに以下のように追記する。(デフォルトでは loopback の設定しか書かれていない)
auto eth0
iface eth0 inet dhcp
STATIC の場合は以下のようになる。(もちろん各項目の値は各自ネットワークに合わせる)
auto eth0
iface eth0 inet static
  address 192.168.0.2
  network 192.168.0.0
  netmask 255.255.255.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  dns-nameservers 192.168.0.1
STATIC の場合は /etc/resolv.conf も自分で書かなければならない。
serach [YOUR DOMAIN]
nameserver 192.168.0.1
無線の場合は格段に難しくなってしまう。
まずは NetworkManager で接続して、デバイス名やドライバ名を確認する。
自宅などで WPA でセキュリティが WEP である無線アクセスポントを使っている場合は以下のようになる。
auto wlan0
iface wlan0 inet dhcp
  wpa-driver wext
  wpa-ssid [HOME SSID]
  wpa-ap-scan 1
  wpa-key-mgmt WPA-PSK
  wpa-psk [WEP KEY]
会社などで WPA2 でセキュリティが EAP である無線アクセスポイントを使っている場合は以下のようになる。
auto wlan0
iface wlan0 inet dhcp
  wpa-driver wext
  wpa-ssid [OFFICE SSID]
  wpa-ap-scan 2
  wpa-proto RSN
  wpa-pairwise CCMP
  wpa-group CCMP
  wpa-eap PEAP
  wpa-key-mgmt WPA-EAP
  wpa-identity [YOUR USERNAME]
  wpa-password [YOUR PASSWORD]
会社に関してはどうしても「詳しくはネットワーク管理者に問い合わせ」となってしまう。

サーバとして使う場合は有線につなぎ、/etc/network/interfaces には有線の設定のみを書く。
持ち歩くので無線を使いたい場合は、どうせログインしているので NetworkManager を使う。
というのが賢いやり方じゃないだろうか。

● プロキシの設定

会社内で使う時などではプロキシの必要だろう。
GNOME が使うプロキシは「システム」→「設定」→「ネットワークのプロキシ」で設定できる。

プロキシサーバの設定は Windows とかと同じなので迷いようがないのだが、プロキシ適用を除外するサーバの設定に癖がある。
InternetExplorer での設定方法。
*.hogehoge.com
192.168.0.*
Mozilla Firefox での設定方法。
.hogehoge.com
192.168.0.0/24
今回のケースである ubuntu GNOME での設定方法。
*.hogehoge.com
192.168.0.0/24
個人的には ubuntu GNOME の書式が一番分かり易いので、どうにかこれに統一してくれないかと思う。

GNOME のアプリはこれで設定できたのだが、直打ちするコマンドのプロキシはまだ設定されていない。 これを設定するために /etc/profile の最後に以下を追記する。
export http_proxy="http://[your proxy server]:[port]/"
export https_proxy="http://[your proxy server]:[port]/"
export ftp_proxy="http://[your proxy server]:[port]/"
これで http_proxy というシェル変数を使っているコマンド(wget 等)はプロキシ越しにアクセスできる。
ただし、専用のプロキシ設定方法を持つコマンド(subversion, git, hg 等)はちゃんと各々設定しなければならない。

さらに、sudo apt-get した中で wget が走る場合(sudo apt-get install msttcorefonts 等)のために、sudo しても http_proxy の値を受け継がなければならない。
そこで /etc/sudoers を以下のように変更する。
-Defaults   env_reset
+#Defaults  env_reset
+Defaults   env_keep = "http_proxy https_proxy ftp_proxy"
ここでやっとネットワークの設定が完了するので、今までアップデートマネージャーが動かなかったらここでアップデートする。
「システム」→「システム管理」→「言語サポート」も開き、日本語が一番上になっていることを確認し、「言語」「テキスト」両タブにおいて「システム全体に適用」を押す。(日本語メニュー等がインストールされていなかったら、ここでインストールされる)

また、VMに ubuntu をインストールしている場合、アップデートが完全に終わってから VMware Tools をインストールすると効率が良い。(アップデートにはカーネルも含まれるので、アップデート前に VMware Tools をインストールすると、カーネルへのパッチを当てるため、もう一度 VMware Tools をインストールし直さなければならない)

● 自動起動するサーバ・アプリの削除

なるべく自動起動するものを減らしたい。

まずは自動起動するアプリの削除。
 「システム」→「設定」→「自動起動するアプリ」を開く。
残すものは以下で、それ以外のもののチェックをすべて外す。
  • GNOME Login Sound(VM以外の場合のみ)
  • PulseAudio Sound System(サウンドサーバを使う場合のみ)
  • VMware User Agent(VMの場合のみ)
  • ネットワーク・マネージャ(ノートPC等で無線の設定に必要なら)
  • 電源の管理(ノートPCの場合のみ)
次に sysv-rc-config をインストールし、不必要なサービスを止める。
% sudo apt-get install sysv-rc-config
ON になっているサービス一覧と変更は以下。
載せていないサービスの詳しい内容については Ubuntu Packages Search で調べることができる。
acpi-suppport
ACPI イベントに関するスクリプト。ノートPCで蓋を閉じたときにサスペンドしたい、という場合には ON のままにしておく。
binfmt-support
Windows のように特定の拡張子に対する動作を決める。ON のままにしておく。
bluetooth
bluetooth サポート。使う予定がないので OFF にする。
cups
プリンタのキューを制御するデーモン。OFF にする。
dns-clean
ダイアルアップ接続時に DNS 情報をクリーンアップする。もちろん OFF にする。
fancontrol
温度や電圧、ファン回転数などのセンサー情報にアクセス出来るようにする。ノートPCで情報を見たい、という場合には ON のままにしておく。
grub-common
GRUB の共通関数。ON のままにする。
kerneloops
kernel oops トラッカー。PANIC から backtrace を読んで、なんてことはしないと思うが、一応 ON のままにする。
ondemand
負荷が少ない時に CPU の周波数を下げる。ON のままにする。
pppd-dns
PPP デーモン。もちろん OFF にする。
pulseaudio
PusleAudio サウンドサーバ。VMなどで必要ないなら OFF にする。
rc.local
初期起動スクリプト。ON のままにする。
rsync
リモートファイルコピープログラム。使う予定がないので OFF にする。
saned
スキャナのための utils。スキャナを使う予定がないので OFF にする。
speech-dispatcher
speed synthesizer のための utils。OFF にする。
● 個人的に使い易くする設定

以下はあくまで個人的なものなので、参考までに。
GNOME の初期値で存在するディレクトリ名を日本語ではなく英語に
端末を起動して以下を入力。
% LANG=C xdg-user-dirs-gtk-update
"Don't ask me this again" にチェックをして、"Update Names" をクリック。
GNOME アプリのキーバインドを Emacs 風に
Alt-F2 で gconf-editor を呼び出し、/desktop/gnome/interface にある gtk_key_theme のキーの値を Default から Emacs にする。
IPv6 を無効にする
/etc/sysctl.conf の最後に以下を追記する。
# disable IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
「システム」→「設定」→「iBus の設定」
「一般」タブで「切り替え」の Zenkaku_Hankaku 以外を削除し、Control+o, Control+backslash を追加する。そして「言語パネルの表示」を「表示しない」にする。
デフォルトのインプットメソッドである Anthy(m17n) は何か使い辛いので、「インプットメソッド」タブで「インプットメソッドの選択」→「日本語」→「日本語 - Anthy」を選び、王冠マークの Anthy 以外を消す。もしも王冠マークの Anthy が無い場合は sudo apt-get install ibus-anthy
「システム」→「設定」→「ウィンドウ」
「マウスが移動した先のウィンドウを選択する」をチェックするが、「マウスが移動した先のウィンドウを前面に出す」はチェックしない。
「システム」→「設定」→「キーボード」
「レイアウト」タブの「オプション」をクリックし、「Ctrlキーの位置」の"Make CapsLock an additional Ctrl" にチェックを入れる。
「システム」→「設定」→「外観の設定」
「フォント」タブの「詳細」ボタンを押し、「スムージング」を「サブピクセル」、「ヒンディング」を「なし」に設定する。
【VMのみ】「システム」→「設定」→「GNOME スクリーンセーバー」
「アイドル状態になったらスクリーンセーバーを起動する」「スクリーンセーバーを起動したら画面をロックする」両方ともチェックを外す
【VMのみ】「システム」→「設定」→「電源管理」
「AC電源使用時」タブは両方とも「しない」、「全般」タブの「通知エリア」は「アイコンを表示しない」。
Nautilus の表示の設定
適当なフォルダを Nautilus で開き、「編集」→「設定」から「動作」タブで「ゴミ箱を経由しないで削除する」をチェックし、「プレビュー」タブでテキスト表示やサムネイルの表紙、サウンド・ファイルの演奏を「しない」にする。
● Ubuntu Tweak のインストール

何を差し置いてもこれをインストールする。
re まずは PPA 群をダウンロードしたときに gpg key のダウンロードがうまくいかないことがあるので、修正する。
/usr/share/pyshared/softwareproperties/ppa.py の中の "keyserver.ubuntu.com" を "pool.sks-keyservers.net" に置き換える。
他にも ubuntu のキーサーバーはあるが、とりあえず使ってみる。
「システム」→「システム管理」→「ソフトウェア・ソース」を開き、 「他のソフトウェア」タブの「追加」ボタンを押し、「APT ライン」に以下を入力する。
ppa:tualatrix/ppa
「閉じる」ボタンを押すとメタデータの更新が始まる。
それでも "NO_PUBKEY 6AF0E1940624A220" のエラーが出てしまう場合は、以下の操作をする。
% gpg --keyserver keyserver.ubuntu.com --recv-keys 6AF0E1940624A220
% gpg --export --armor 6AF0E1940624A220 | sudo apt-key add -
apt-get update が終了したら、ubuntu-tweak をインストールする。
% sudo apt-get install ubuntu-tweak

上記はまとめると以下のコマンド1個かもしれない。
% sudo add-apt-repository ppa:tualatrix/ppa
コマンドインターフェイス(CUI)の方が分かりやすいという典型であるな。

● Ubuntu Tweak での設定、不必要なアプリの削除

まずは Firefox で Google Chrome のサイトにアクセスして、"32ビット.deb" をダウンロードしておく。
アプリケーションセンター
Empathy, Evolution, Gwibber, Mozilla Firefox, PiTiVi のチェックを外し、「適用」ボタンを押す
パッケージクリーナー
「ロック解除」を押して、不要なものを全て消す。
ウィンドウマネージャの設定
「タイトルバーボタンの配置」を右にする。
デスクトップアイコンの設定
「デスクトップアイコンを表示する」のチェックを外す
次に「アプリケーション」→「Ubuntu ソフトウェアセンター」を選び、 「インストール済みソフトウェア」から不必要なものを削除する。
私が削除したものは以下。
  • AisleRiot Solitaire
  • Bluetooth
  • Byoubu ウィンドウマネージャ
  • F-Spot
  • Firefox 用の Ubufox 拡張機能
  • GNOME マインスィーパ
  • Mahjongg
  • Quadrapassel
  • Transmission
  • Ubuntu One
  • gbrainy
  • onBoard
  • リモートデスクトップ
  • 数独
Evolutoin 等を削除したので、ツールバーのインジケーターアプレットの封筒のアイコンが邪魔だ。
だからこれを削除する。
% sudo apt-get remove indicator-messages
VM等で音声出力をしない場合、ツールバーのインジケーターアプレットのスピーカーのアイコンも邪魔だ。
これを削除する。
% sudo apt-get remove indicator-sound

● 必要なアプリのインストール

まずはダウンロードしておいた google chrome をインストールする。
Firefox から chrome に移行したのは、動作が軽いのもあるが、Web サイトのアプリ化が簡単だから。
これで Linux 用のクライアントソフトがないもの(Evernote 等)に対応する。

後、以下のソフトを sudo apt-get install で導入する。
  • ssh:sysv-rc-conf で ssh を ON にする。/etc/ssh/sshd_config で X11Forwarding と PasswordAuthentication が yes になっていることを確認する。
  • ntp:ntpdate は既にあるので ntpdate -b [ntp server] で合わせておいてから、/etc/ntp.conf の server を修正する。その後、sysv-rc-conf で ntp がチェックされていることを確認。
  • vim
  • tcsh
  • gnome-do
  • libaio-dev(これは完全に趣味)
  • manpages manpages-ja xmanpages-ja manpages-dev manpages-ja-dev manpages-posix manpages-posix-dev 
  • cscope

● terminal の設定とフォント

フォントをインストールする
% sudo apt-get install ttf-inconsolata
% sudo apt-get install ttf-vlgothic
英語のフォントは inconsolata、日本語のフォントは VL Gothic で充分だと思っているので。
gnome-terminal のフォントを inconsolata 12pt、 xterm は以下の設定にする。

~/.Xresources(gdmがデフォルトで読み込むのは ~/.Xresources)
XTerm*selectToClipboard: true
!XTerm*utf8: 1
!XTerm*locale: true
!XTerm*cjkWidth: true
!XTerm*faceName: Monospace
!XTerm*faceSize: 10
XTerm*faceName: Inconsolata
XTerm*faceSize: 12
!XTerm*font: 8x16
XTerm*Background: black
XTerm*Foreground: white
XTerm*scrollBar: True
XTerm*saveLines: 2048
Astec-X などの X サーバで xterm を起動すると、ttf だとフォントのリフレッシュが遅くていらいらする可能性があるので、バックアップで 8x16 を残しておく。
同様に日本語を表示する可能性のために Monospace を残しておく。

● VNC サーバのセットアップ

vnc4server と xinetd をインストールする。
% sudo apt-get install vnc4server
% sudo apt-get install xinetd
/etc/xinetd.d/vnc を以下の内容で新規作成。
service vnc
{
        disable = no
        socket_type = stream
        protocol = tcp 
        wait = no
        user = nobody
        server = /usr/bin/Xvnc
        server_args = -inetd -geometry 1024x768 -depth 16 -passwordFile=/etc/vncpasswd -once -query localhost
}
vncpasswd の設定
% sudo vncpasswd /etc/vncpasswd
Password: < password入力>
Verify: <もう一度入力>
% sudo chown nobody:root /etc/vncpasswd
% sudo chmod 0600 /etc/vncpasswd
% ls -l /etc/vncpasswd
-rw------- 1 nobody root ..... /etc/vncpasswd
/etc/services に以下の行を追加
vnc      5900/tcp
/etc/gdm/gdm.schema を以下のように修正
....
    <schema>
      <key>security/DisallowTCP</key>
      <signature>b</signature>
-      <default>true</default>
+      <default>false</default>
    </schema>
....
    <schema>
      <key>xdmcp/Enable</key>
      <signature>b</signature>
-      <default>false</default>
+      <default>true</default>
    </schema>
....
/etc/gdm/custom.conf を以下のように新規作成
[daemon]
RemoteGreeter=/usr/lib/gdm/gdm-simple-greeter
DefaultSession=gnome
[xdmcp]
Enable=true
DisplaysPerHost=2
[security]
DisallowTCP=false
sysv-rc-conf でgdm を ON にしたら、xinetd と gdm を再起動すれば、各種 VNC クライアントからアクセスできる。(もしかしたらマシンの再起動が必要かも)
% sudo /etc/init.d/xinetd restart
% sudo /etc/init.d/gdm restart

● samba client の文字コード

Windows マシンが samba サーバになっている場合は大丈夫なのだが、NAS 等で本体は Linux なのに Windows 用に文字コードを Shift-JIS にしているものを ubuntu から見ると文字化けしてしまう。
これを解消するために、/etc/samba/smb.conf を修正する。
[global] の所に以下を追記する。
dos charset = CP932
unix charset = UTF8
display charset = UTF8
デスクトップにマウントポイントの Nautilus フォルダが見えてしまうが、これを非表示にするのは ubuntu tweak からできる。
ターミナルでアクセスしたい場合は、~/.gvfs 以下にマウントポイントが存在する。
このディレクトリは隠しフォルダになっているので注意。

● WOL の設定

サーバとして使う場合には WOL を使いたいこともあるだろう。
家庭で IPMI があるサーバを買うなんてしないはずだし。

まず ethtool をインストールする。
% sudo apt-get install ethtool
以下の内容のスクリプトを書く。

/etc/init.d/wakeonlanconfig
#!/bin/bash
ethtool -s eth0 wol g
exit
実行権を与えて、起動時にスクリプトを走らせる。
% sudo chmod a+x /etc/init.d/wakeonlanconfig
% sudo update-rc.d -f wakeonlanconfig defaults

● コーデック云々

大体は Nautilus の画面から動画ファイルをダブルクリックして、
totem を起動してしまえば自動的にコーデックをインストールしてくれるのだが、
それでもダメな場合がある。
そんな時には ubuntu tweak のソースセンターで Medibuntu を有効にしてみる。
google earth がインストール可能になるが、まぁこれはどうでもいい。
その後に以下のように打つと、どうやらいいらしい。
% sudo apt-get install non-free-codecs
あと下もやると幸せになれるかもしれない。
% sudo apt-get install libdvdcss2
% sudo apt-get install w32codecs
(詳しくはMedibuntuのページを参照のこと)
うまくいかなかったので、もしやと思って以下の様にしたら幸せになった。
% sudo apt-get remove totem
% sudo apt-get install mplayer gnome-mplayer
上記は Medibuntu を有効にした状態でやった方がいいと思う。
gnome-mplayer はとてもシンプルで軽快なので自分の好みだった。

● emacs の設定

エディタは vi 一択なのだが、昔を懐かしく思う意味でも emacs の設定ぐらいはやっておきたい所。
下記のコマンドでインストール。
emacs-goodies-el なんていう便利でオシャレなパッケージがあるので、それを使ってしまう。
scim とか skk とかインストールするものが増えるのは嫌だったので、
標準にインストールされる iBus を漢字変換に使う ibus.el を PPA からインストール。
% sudo apt-get install emacs
% sudo add-apt-get-repository ppa:irie/elisp
% sudo apt-get update
% sudo apt-get install emacs-goodies-el
% sudo apt-get install ibus-el
~/.Xresources に以下を追加
macs*font:
Emacs*useXIM: false
フォントの設定は空でいい。
そして ~/.emacs.d/init.el に以下を設定。タブ幅は男らしく8で統一。
;;============================================================
;; load path
;; ~/.emacs.d/site-lisp/ 下の全フォルダを展開して読み込む
;;============================================================
(setq load-path
      (append (list
        (expand-file-name "~/.emacs.d/site-lisp/")
        )
       load-path))
;;============================================================
;; font
;; 直接入力は Inconsolata 日本語は Takaoゴシック
;;============================================================
(set-default-font "Inconsolata-12")
(set-face-font 'variable-pitch "Inconsolata-12")
(set-fontset-font (frame-parameter nil 'font)
    'japanese-jisx0208
    '("Takaoゴシック" . "unicode-bmp"))
;;============================================================
;; keybind
;; C-h は常に backward-delete-char にする
;;============================================================
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\M-h" 'help-for-help)
(global-set-key "\C-z" 'undo)
(global-set-key "\M-g" 'goto-line)
(define-key isearch-mode-map (kbd "C-h") 'isearch-delete-char)
;;============================================================
;; display - init
;; 初期画面は飛ばして、大きさは 80x43
;;============================================================
(setq inhibit-startup-message t)
(setq default-frame-alist
      (append (list
        '(width . 80)
        '(height . 43)
        )
       default-frame-alist))
;;============================================================
;; display - toolbar
;; ウィンドウのタイトルの表示と、メニューバー・ツールバーはOFF
;;============================================================
(setq frame-title-format (format "emacs@%s:%%f" (system-name)))
(menu-bar-mode -1)
(tool-bar-mode 0)
;;============================================================
;; display - modeline
;; 時刻の表示はやめる
;;============================================================
(column-number-mode t)
(line-number-mode t)
;(which-function-mode 1)
;(setq display-time-day-and-date t)
;(setq display-time-24hr-format t)
;(display-time-mode t)
;;============================================================
;; buffer
;; カーソルの点滅をやめる
;; 対応する括弧に色をつける
;; 現在行に色をつける
;; 単一フレームの場合は行を折り返して表示する
;; 複数フレームの場合は行を折り返して表示しない
;; 1行ずつスクロールさせる
;;============================================================
(blink-cursor-mode 0)
(show-paren-mode 1)
(set-face-background 'show-paren-match-face "sky blue")
(global-hl-line-mode)
(set-face-background 'hl-line "lavender")
(setq transient-mark-mode t)
(set-face-background 'region "peach puff")
(setq truncate-lines nil)
(setq truncate-partial-width-windows t)
(setq scroll-conservatively 35
      scroll-margin 0
      scroll-step 1)
(setq comint-scroll-show-maximum-output t)
;;============================================================
;; buffer list
;; C-x b でミニバッファにバッファの一覧を表示
;; C-f/C-b で移動も出来る
;; 入力文字列がミニバッファに無ければ find-file
;; 選択中のバッファの内容をメインに表示
;;============================================================
(iswitchb-mode 1)
(add-hook 'iswitchb-define-mode-map-hook
   'iswitchb-my-keys)
(defun iswitchb-my-keys ()
  (define-key iswitchb-mode-map "\C-f" 'iswitchb-next-match)
  (define-key iswitchb-mode-map " " 'iswitchb-next-match)
  (define-key iswitchb-mode-map "\C-b" 'iswitchb-prev-match)
  )
(defun iswitchb-possible-new-buffer (buf)
  "Possibly create and visit a new buffer called BUF."
  (interactive)
  (message (format
     "No buffer matching `%s', "
     buf))
  (sit-for 1)
  (call-interactively 'find-file buf))
(defun iswitchb-buffer (arg)
  "Switch to another buffer."
  (interactive "P")
  (if arg
      (call-interactively 'switch-to-buffer)
    (setq iswitchb-method iswitchb-default-method)
    (iswitchb)))
(defadvice iswitchb-exhibit
  (after
   iswitchb-exhibit-with-display-buffer
   activate)
  "display the selected buffer in main frame"
  (when (and
  (eq iswitchb-method iswitchb-default-method)
  iswitchb-matches)
    (select-window
     (get-buffer-window (cadr (buffer-list))))
    (let ((iswitchb-method 'samewindow))
      (iswitchb-visit-buffer
       (get-buffer (car iswitchb-matches))))
    (select-window (minibuffer-window))))
;;============================================================
;; language
;; 日本語の設定
;;============================================================
;(set-locale-environment nil)
;(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
;;============================================================
;; font lock mode
;; タブと全角空白に色を付ける
;; 行末の空白に色を付ける
;;============================================================
(global-font-lock-mode 1)
(defface my-face-tab '((t (:background "white smoke"))) nil)
(defface my-face-zspace '((t (:background "linen"))) nil)
(defvar my-face-tab 'my-face-tab)
(defvar my-face-zspace 'my-face-zspace)
(defadvice font-lock-mode (before my-font-lock-mode ())
  (font-lock-add-keywords
   major-mode
   '(("\t" 0 my-face-tab append)
     (" " 0 my-face-zspace append)
     )))
(ad-enable-advice 'font-lock-mode 'before 'my-font-lock-mode)
(ad-activate 'font-lock-mode)
(add-hook 'text-mode-hook
   '(lambda()
      (progn
        (font-lock-mode t)
        (font-lock-fontify-buffer))))
(setq-default show-trailing-whitespace t)
(set-face-background 'trailing-whitespace "tomato")
;;============================================================
;; line number
;; 行番号を付ける
;;============================================================
(require 'linum)
(global-linum-mode)
;;============================================================
;; tab
;; 各モードのタブ幅を8にする
;;============================================================
(setq-default indent-tabs-mode t)
(setq-default tab-width 8)
(add-hook 'python-mode-hook
   '(lambda()
      (setq indent-tabs-mode t)
      (setq indent-level 8)
      (setq python-indent 8)
      ))
(add-hook 'sh-mode-hook
   '(lambda()
      (setq sh-basic-offset 8)
      (setq sh-indentation 8)
      ))
;;============================================================
;; grep
;; 常にインクリメンタルサーチにする
;;============================================================
(require 'grep)
(setq grep-command-before-query "grep -nH -r -e ")
(defun grep-default-command()
  (if current-prefix-arg
      (let ((grep-command-before-target
      (concat grep-command-before-query
       (shell-quote-argument (grep-tag-default)))))
 (cons (if buffer-file-name
    (concat grep-command-before-target
     "*."
     (file-name-extension buffer-file-name))
  (concat grep-command-before-target "."))
       (+ (length grep-command-before-target) 1)))
    (car grep-command)))
(setq grep-command (cons (concat grep-command-before-query ".")
    (+ (length grep-command-before-query) 1)))
;;============================================================
;; backup file
;; バックアップファイルは作らない
;;============================================================
(setq backup-inhibited t)
(setq delete-auto-save-files t)
;;============================================================
;; dired
;; diredモードをもうちょっと良くする
;;============================================================
(require 'dired-x)
(require 'wdired)
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)
;;============================================================
;; iBus
;; iBusの変換を C-o にする
;; 日本語モード、直接入力、変更不可の各場合のカーソル色を変える
;;============================================================
(require 'ibus)
(add-hook 'after-init-hook 'ibus-mode-on)
(ibus-define-common-key ?\C-o t)
(setq ibus-cursor-color '("light pink" "black" "medium sea green"))
;;============================================================
;; tab bar
;; バッファのリストをタブバーとして表示(見た目が良くないためやめる)
;;============================================================
;(require 'tabbar)
;(tabbar-mode)
;;============================================================
;; color mode
;; 使わない
;;============================================================
;(require 'color-theme)
;(color-theme-hober)
;;============================================================
;; clipboard
;; 選択するだけでクリップボードにコピーする
;;============================================================
(setq x-select-enable-clipboard t)
まだ未完成。各モードでTabをCtrl-hで消そうとすると、これを一旦空白に変えて1個ずつ消してしまう。タブはタブとして一気に消してほしい。

● その他の設定ファイル

vi の設定。
タブ幅関連はやはり男らしく8。フレームの移動は Emacs 方式が分かり易い。
Emacs のようにタブやら改行を表示させようとも思ったが、見辛くなってしまうのでやめた。
~/.vimrc
set ts=8 sw=8 sts=0
set backspace=indent,eol,start
set showmatch
set nohlsearch
"set list
"set listchars=tab:>-,extends:<,trail:-,eol:<
map <c-x>1 <c-w>o
map <c-x>2 <c-w>s
map <c-x>3 <c-w>v
map <c-x>o <c-w>w

shell は昔からの慣れでなんとなく tcsh にしてしまう。(日本語の表示が tcsh じゃないとうまくいかない時代があったのだ!)
gnome-terminal の場合はロケールはデフォルトの ja_JP.utf8 でいいけれども
xterm の場合は C にしないと表示が乱れる。
Xwindows の場合は PWD をタイトルに表示したいが、コンソールの場合にこれをやるとプロンプトが乱れるので嫌だ。
後、数値を表示するコマンドはできる限り human-readable をつけ、削除は確認を入れる。
~/.tcshrc
setenv PATH     /bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:${HOME}/bin:.
setenv MANPATH  /usr/share/man:/usr/local/man
if ( !($?COLORTERM) ) then
        setenv LANGUAGE C
        setenv LANG     C
        setenv LC_ALL   C
endif
limit coredumpsize unlimited
set autolist
set ignoreeof
set filec
set history = 10000
set savehist = 100
set fignore=(.o .aux .toc)
if ( ${TERM} == "xterm" ) then
        set prompt = "%{\033]0;%n@%m:%~\007%}%n@%m:%~ > "
else
        set prompt = "%n@%m:%~ > "
endif
alias ls        'ls -F --color=auto --human-readable'
alias ll        'ls -lFa --color=auto --human-readable'
alias rm        'rm -i'
alias mv        'mv -i'
#alias diff     'diff -w'
alias du        'du --human-readable'
alias df        'df --human-readable'
#alias grep     'grep -n'

●【参考】cifs マウントの話

Nautilus を使った samba マウントの文字化け対策は /etc/samba/smb.conf でいいのだが、普通に cifs でマウントしてファイルシステムとして使いたい、というのがある。
この時は smbfs をインストールしなければならない。
% sudo apt-get install smbfs
コマンドでは以下の様になる
% sudo mount -t cifs //[server name]/[path] [mount point] -o username=[username],password=[password],iocharset=utf8,defaults
ところがこれが文字化けする。
原因は smbfs が codepage を解釈しなくなったかららしい。
根本的な解決策は古い smbfs を使うか smbfs が再び codepage を解釈するのを待つしかないのだが、一応現時点でも解決策はある。
文字コードを変換する FUSE アプリを使えば良い。
% sudo apt-get install fuse-convmvfs
使い方はこんな感じだ。
% sudo mount -t cifs //hoge.server/path /mnt/smb/hoge -o iocharset=utf8,defaults
% sudo chmod 666 /etc/fuse.conf
% sudo mkdir /mnt/convmvfs
% sudo chmod 777 /mnt/convmvfs
% convmvfs /mnt/convmvfs -o srcdir=/mnt/smb/hoge,icharset=cp932
アンマウントは、
% fusermount -u /mnt/convmvfs
% sudo umount /mnt/smb/hoge
上記はやはり面倒くさいので、やはり Nautilus から呼び出す samba クライアントがいい。cd

0 件のコメント:

コメントを投稿