「さくらのVPS」CentOS 初期設定2 〜 シェル・Vim関連設定

いろいろ設定する。

screenのインストールと設定

まずは screen 。自宅のグローバルIPアドレスが数日ごとに変わる。と言うことはちょくちょく接続が切れているわけで、作業中に切れるとたまらないので、これは必須。

$ sudo yum install screen

好みで制御文字を変更して、ヴィジュアルベルを抑止*1

$ vi ~/.screenrc
 以下の内容で新規作成。
escape ^Z^Z
vbell_msg ""

ログイン時に自動的に screen が起動されるように。

$ vi .bash_profile
 末尾に追加。
exec screen -R

実は screen をログインシェルにしてみたのだが、他ホストから ssh でのコマンド実行や scp が出来なくなってしまったので、やめた。
ログインシェルにした場合は、SHELL=/bin/sh LANG=C で起動されるので、.screenrc に追加で下記が必要。ログインシェルが bash だと、LANG=ja_JP.UTF-8 になり、エンコードについてはよしなにやってくれるので記述不要。

shell -bash
defutf8 on
defencoding utf-8
encoding utf-8 utf-8

.bash_profile に exec screen -R を書いて、.screenrc に shell -bash を書くとループするので駄目。書くなら shell bash とかにしておく。

日本語関係の設定

$ sudo cp -p /etc/sysconfig/i18n /etc/sysconfig/i18n.orig
$ sudo vi /etc/sysconfig/i18n
 LANGの行を修正
LANG="ja_JP.UTF-8"

bash 関係の設定いろいろ

Fedora の EPEL ライブラリから bash-completion*2のインストール。環境変数、alias 等の設定。root でも有効にしたいので、/etc/profile.d に置き、他の設定が動いた後で動くようにzzで始まる名前にする。

$ sudo yum --enablerepo=epel install bash-completion
$ sudo vi /etc/profile.d/zzlocal.sh
 以下の内容で新規作成。
alias m=less
alias ls="ls -xvF"
alias vi=vim
alias eman="LANG=C man"

unset  LS_COLORS
export LC_TIME=C
export LESS="-MXe~"
export PAGER=/usr/bin/less
case ":${LD_LIBRARY_PATH}:" in
*:/usr/local/lib:*) ;;
*) export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}/usr/local/lib ;;
esac

export HISTSIZE=9999
export HISTTIMEFORMAT="%m-%d %T "
export HISTCONTROL=ignoreboth:erasedups
shopt -s histappend

$ sudo cp -p /etc/inputrc /etc/inputrc.orig 
$ sudo vi /etc/inputrc
 末尾に追加。
"\C-d":delete-char-or-list
"\C-n":history-search-forward
"\C-p":history-search-backward
"\C-l":redraw-current-line

eman は英文マニュアル。
LC_TIME=C は日時の表示を英語に。
LD_LIBRARY_PATH に /usr/local/lib を追加。
ヒストリ設定については man bash 参照。
Ctrl-P、Ctrl-N で、ヒストリーを上下する際に、文字列を入れてから押すとその文字列で始まるヒストリーだけが対象になる。
Ctrl-D、Ctrl-L は好みか。

vimの設定

$ sudo cp -p /etc/vimrc /etc/vimrc.orig 
$ sudo vi /etc/vimrc
 末尾に追加。
set fileencodings=ucs-bom,utf-8,eucjp
set ambiwidth=double
set incsearch smartcase nowrapscan viminfo+=h
set whichwrap= backspace=indent
set tabstop=4 shiftwidth=4
autocmd FileType * setlocal formatoptions-=ro

fileencodings は、ファイル読み込み時の文字コード自動判断の優先度。
ambwidth=double は、Unicodeで半角全角がフォントによって違う文字*3を全角と判断してカーソル移動をする。
検索の設定では、インクリメンタルサーチで、小文字入力時にはケース無視で、大文字入力時はケース無視しない。ファイル先頭と末尾をまたいで検索しない。起動時に前回の検索文字をハイライトしない。
whichwrap= は、左右のカーソル移動で行を越えない。
backspace= は、BSキーがインサート開始地点や行を越えない。
tabstop= は、タブ幅は4で空白には変換しない。shiftwidth= も、タブ幅4。
formatoption-=ro は、入力モードで、コメントを自動継続しない。


参考:
id:otn:20110501
MK's Memorandum: 単純な .screenrc の紹介
vimの改行時に自動でコメントが挿入されるのをやめたい - 仙台 Ruby Vim JavaScript フリーランスプログラマ

*1:vbell offでもいいが、確か何か理由があってこうした

*2:コマンドに応じたオペランド補完をしてくれる

*3:id:otn:20090225