見出し画像

なにがどうなって便利になってるのかを把握できる範囲でカスタマイズしないと不安になる : Bash, Vim の個人設定

最近、Windows のWSL(サブシステムとしての Linux。個人的には Ubuntu を使用)を抜け出して、Windows 上の他のシェルをいろいろ試しています。

ちなみにこの日記のデスクトップ上の下書きテキストは GitBash 上の Vim で書いています。

GitBash は Git を Windows 環境にインストールするとついてくるやつです。
Windows の中を Bash の UI で操作することができます。

GitBash の設定ファイル

新しいシェルを使い始めるときに、これまで使ってきて慣れているシェル環境から設定を引き継ぎたいと思う人は多いと思います。

完全に、きれいにもれなく引き継ぎたいということでいろいろ苦心している方もいらっしゃるのではないでしょうか。
過去の自分がそうでした。

Linux 上、Mac 上、Windows 上でうまく条件分岐して、ひとつの設定ファイルをコピーして使えばどこでも通用するように .bash_profile や .bashrc を書く、という使命感に燃えてましたw

様々なプロジェクトに出向して、出向先でこれまた様々な OS を使いこなさなければいけないエンジニアは、自分の設定ファイルの中身をとことん突き詰めることで得られるメリットも大きいのだと思います。

しかし考えてみると、僕の場合は在宅で個人開発がメインなので、オフィスに出て働いていらっしゃるエンジニアのみなさんとは環境が大きく異なり、設定ファイルの在り方に求めるものも異なります。(非常に単純なことなんですが、フリーランスを数年やってこのことにやっと気付きました。)

僕の場合の設定ファイルに対するスタンスは

  • どの環境でも共通で必要な設定を最低限に絞り込み

  • その最小設定だけコピペして目的の環境を使い始め

  • 環境ごとに「こうしたらもっと便利だな」を追加していく

  • 追加した内容が他の環境でも共通で使えて、かつ、必要と言えるものだったら最小セットに追加する

前置きが長くなりました。
このような前提で GitBash を使い始めるのに自分用に追加した設定は以下になります。

~/.bashrc

# シェルの履歴補完で前方一致
bind '"\C-n":history-search-forward'
bind '"\C-p":history-search-backward'

# Vim で複数ファイルを開いたときタブで開く
alias vi="vim -p"

# プロンプトに直前の処理のリターンコードを表示
PS1="$(echo -n "$PS1" | sed 's;\\w;\\w $?;')"

たったこれだけです。

GitBash は ~/.bash_profile が ~/.bashrc を読み込んでユーザ設定を反映してくれます。
僕は ~/.bash_profile を直接いじらず ~/.bashrc の方に個人設定を書くようにしています。(個人差があると思います。)

Bash も進化し続けていて、そもそもデフォルトで便利にしてくれている部分もありきの話ではあるのですが、僕の場合は上記に書いた数行の個人用設定を追加してしまえば、ほとんど違和感なく新しいシェルを使えるような感じにしてます。

言い方を変えれば「覚えることをなるべく少なくして楽してる」ということです。

Vim の最低限設定

普段使いのテキストエディタである Vim に対しても同じスタンスです。

以前はとにかくいろいろ「これ便利」と思ったものを追加しまくってましたが、だんだん絞るようにスタイルを変化させてきました。

使い始めたばかりの GitBash 環境に設置した設定ファイル .vimrc はこんな中身になっています。

~/.vimrc

" 行番号を表示 "
set nu

" コマンドライン履歴をたどるとき、<C-p>,<C-n>の動作を<Up>,<Down>と同じにする(「実践Vim」p.102) "
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>

" コマンドラインモードの C-f, C-b はもともとの割当を無視して、Emacs と同様にする "
cnoremap <C-f> <right>
cnoremap <C-b> <left>

" インサートモードの C-f, C-b はもともと割当がないので、Emacs と同様にする "
inoremap <C-f> <right>
inoremap <C-b> <left>
" インサートモードで DELETE "
inoremap <C-d> <C-o>x

" リーダーキーの設定 -> Space キーに設定 "
let mapleader = "\<Space>"

" <Space>w を押してファイルを保存する "
nnoremap <Leader>w :w<CR>

" <Space>e -> :tabe (待ち受け状態) "
nnoremap <Leader>e :tabe<Space>

" <Space>n -> :noh "
nnoremap <Leader>n :noh<CR>

WSL の Bash の方はガッツリ開発で使っているので各言語用のプラグインに伴う設定などがごちゃごちゃ書き込んでありますが、そういうのはとりあえず関係なく、この日記のような文章を編集できればOKというだけであれば、この程度の個人用設定がされていれば僕は十分です。

こうして改めて眺めてみると、Bash も Vim も僕の手癖を最低限満足させるための設定が書いてあるだけなんだなと思います。

この程度の内容であれば、その個人設定(キーバインド、ショートカット)を使わなかったらどうなるのか、使わないで同じことをするにはどのキーをどの順番で押せば良いのかで迷うことはありません。
つまり自分がなにで楽しているのか把握できた状態でシェルやテキストエディタを使っている状態を逸脱していないということです。

個人設定が複雑化してくると、なにがどうなって今やっていることが実現できているのかが把握できなくなってきます。
これが結構心理的に怖いんですよ。

Linux のインストールや新しいサーバを使い始めるときなんか顕著ですが、まっさらの環境をちょっとだけいじる必要に遭遇したとき、「あれってどうすんだっけ?」で躓くことが多いと、やっぱりちょっと自分に対して不安になりますね。

SN

この記事が気に入ったらサポートをしてみませんか?