Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

シェルのコマンド入出力パイプを vim で編集するやつをカスタマイズ

$
0
0

ちょうどいい記事がありました。

もとは reddit の投稿からのようです。上記事では、入出力をそのまま vim に流すことでインタラクティブな編集操作をするといったハックになっています。

今回はそれを少しいじってよりフレキシブルにしてみました。

#!/bin/bashset -e
trap'rm -f $TOVIMTMP' ERR

if[ -p /dev/stdin ];thenin="$(cat <&0)"if[ -z "$in"];thenexitfiif[ -e "$in"];then
        vim "$in"< /dev/tty > /dev/tty
    elseTOVIMTMP=~/.tovim_tmp_"$(date +%Y-%m-%d_%H-%M-%S.txt)"echo"$in">"$TOVIMTMP"
        vim "$TOVIMTMP"< /dev/tty > /dev/tty
        cat "$TOVIMTMP"
        rm "$TOVIMTMP"fielse
    vim "$@"fi

以下の 2 点について、カスタマイズしました。

  • 入力が存在するファイル名/ファイルパスである場合、そのファイルを開く(場合によっては改悪かも)
  • tovimだけで実行されたとき vimの挙動
$echo ~/myfile | tovim    # vim ~/myfile に同じ$ tovim    # vim に同じ

zsh ユーザは次のようなグローバルエイリアスを設定すると、

$alias -g V="| tovim"$ curl -L raw.github.com/b4b4r07/dotfiles/master/bin/tovim V    # curl -L URL >file; vim file$ V    # vim

こんなことができるようになります。

シェルスクリプトの習得は面倒と言われがちです。こんな具合に、既存の小さなスクリプトなどからはじめてみると、やりやすいように思います。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>