ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

アウトプットを気軽にするために作ったコマンド

f:id:rasukarusan:20191001002258p:plain:w400

記事書くときはVimで大体書いてからはてぶで整形するというのを繰り返しているが、最初の「Vimで記事を書き始める」という障壁をできるだけ低くし、なんとなくモチベーションが続きそうなやり方をコマンドで実践してる。

どんな感じ

こんな感じ。

https://rasukarusan.github.io/blog-assets/shell-article-command/demo.gif
コマンドを入り口に新規記事を書き始める

下書き記事をfzfで表示して、000000.mdを選択すると新規記事を作成する。
書き終わったら「完」と入力して「投稿済みディレクトリ」に移動する。

https://rasukarusan.github.io/blog-assets/shell-article-command/demo.gif
「完」ものは投稿済みディレクトリに移動

何が良いのか

  • ネタを思いついたら速攻書ける
  • 後から見返すことが出来るのでアウトプットが埋もれることを防げる
  • Terminalから動かなくて良い(これ大事)

別に利点らしい利点は無く、結局自分が書きやすいスタイルなら何でも良いよね。
自分の場合は「Terminalから動かないこと」が一番重要だったのでコマンドスタイルになった。

コマンド

特別なことは特にしていない。.zshrcに関数書いてalias登録するだけ。この気軽さもいい。

ちょっとお気に入りな点を言うなら000000.mdを選択肢に表示して、選択すると新規記事が作成されるところ。ファイル名を00000にしてるから必ず一番上に表示することができて気が滅入る前に記事を新規作成できる。

alias art='_writeArticle'
alias mpa='_movePostedArticles'

# 記事メモコマンド
function _writeArticle() {
    # 下書き記事の保存場所
    local ARTICLE_DIR=/Users/`whoami`/Desktop/ru-she-1nian-mu/articles
    local article=$(ls ${ARTICLE_DIR}/*.md | xargs basename | fzf)

    # 何も選択しなかった場合は終了
    if [ -z "$article" ]; then
        return 0
    fi

    if [ "$article" = "00000000.md" ]; then
        echo "タイトルを入力してくだい"
        read title
        today=$(date '+%Y_%m_%d_')
        vim ${ARTICLE_DIR}/${today}${title}.md
    else
        vim ${ARTICLE_DIR}/${article}
    fi
}
# 投稿した記事を別ディレクトリに移動
function _movePostedArticles() {
    # 投稿完了を意味する目印
    local POSTED_MARK='完'
    # 下書き記事の保存場所
    local ARTICLE_DIR=/Users/`whoami`/Desktop/ru-she-1nian-mu/articles

    # 投稿が完了した記事を保存するディレクトリ
    local POSTED_DIR=$ARTICLE_DIR/posted

    for file in `ls $ARTICLE_DIR`; do
        tail -n 1 ${ARTICLE_DIR}/${file} | grep $POSTED_MARK > /dev/null
        # 投稿が完了したファイルを別ディレクトリに移す
        if [ $? -eq 0 ]; then 
            mv ${ARTICLE_DIR}/${file} $POSTED_DIR/
            printf "\e[33m${file} is moved!\e[m\n"
        fi
    done
}

終わり

みんな記事書くときどういうスタイルでやってるのか気になるな。
アプリを使うやつとかは正直興味わかないけど、それこそコマンドでやってる人いたらその方法はとっても気になる。