1. mollifier
Changes in body
Source | HTML | Preview
@@ -1,47 +1,50 @@
zsh を使っていて、コマンドラインで for とか if とかを使いたくなることがたまにある。こんな感じ。
```zsh
% for i in *; do
echo $i
done
```
こういうのは改行して書きたい。
実際に改行してみると、
```zsh
% for i in *; then # ここで改行
```
一応次の行の続きが書ける。
```zsh
% for i in *; then
for>
```
でも実はこれ、`for i in *; then` の部分はもう入力が確定した状態で、1行目に戻って修正とかできなくて便利じゃない。`^P` とか上矢印とか押しても1行目に移動できない。
そういうときはこれを ~/.zshrc に書いておけば便利。
```zsh:.zshrc
-bindkey '^J' self-insert-unmeta
+bindkey '^J' self-insert
```
改行したくなったら `Ctrl+J` を押せば OK。
```zsh
% for i in *; then # ここで Ctrl+J
```
そのまま改行できる。
```zsh
% for i in *; then
echo ... # 改行できる!
```
コマンドライン中に改行文字をそのまま埋め込んでいるような感じになるので、`^P` か上矢印で1行目に戻って修正もできるようになる。ちなみに、`'^J'` というキーバインドを J 以外に変えるとうまく動かないので注意。
実はこの機能は bindkey で設定していない時でも使えて、 `ESC-^J` `ESC-^M` を押せば OK。でもちょっと押しにくいので、このキーバインドを設定しておいたほうがいいと思う。
+
+### 2013/12/07 12:00 追記
+コメントで `self-insert-unmeta` ではなく `self-insert` で良いのではという指摘をもらいました。たしかにその通りです。`self-insert-unmeta` でも動作するのですが `self-insert` の方がよりふさわしいので修正しました。