1. mollifier

    Posted

    mollifier
Changes in title
+zsh で コマンドライン中に改行する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,47 @@
+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
+```
+
+改行したくなったら `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。でもちょっと押しにくいので、このキーバインドを設定しておいたほうがいいと思う。