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

vimで日報を書く

$
0
0

一言で書いてしまうと、

alias memo vim ~/doc/memos/$(date +'%Y%m%d').txt

というような alias を定義して、日ごとのテキストファイルを開けるようにしておくというだけの話です。ただ、これだけだと閲覧が少々不便なので、実際には以下のようなシェルスクリプトを作っています。

memo.sh
#!/bin/shMEMODIR=~/doc/memos
TMPFILE=$(mktemp)PAGER=${PAGER-less}function rm_tmpfile {[[-f"$TMPFILE"]]&&rm-f"$TMPFILE"}trap rm_tmpfile EXIT
trap'trap - EXIT; rm_tmpfile; exit -1' INT PIPE TERM


function edit_memo {
  vi "${MEMODIR}/$(date +'%Y%m%d').txt"}function view_memo {if[$# -lt 1 ];then
    pattern=`date +%Y%m`elif["$1"="all"];then
    pattern=""else
    pattern=$1fi

  memos=`find $MEMODIR-name"${pattern}[0-9]*.txt" | sort`for memo in$memos;do
    echo$memo | awk-F/ '{print "\[\[\[" $NF "\]\]\]\n"}'>>$TMPFILEcat$memo>>$TMPFILE
    perl -le'print "\n" . "="x80'>>$TMPFILEdone

  if[-p /dev/stdout ];then
    cat$TMPFILEelse$PAGER$TMPFILEfi}if[$# -lt 1 ];then
  edit_memo
elif["$1"="edit"];then
  edit_memo
elif["$1"="view"];then
  view_memo $2fi

以下の alias も定義しておきます。

alias memo="~/bin/memo.sh"
alias memoview="~/bin/memo.sh view $@"

これで、

$ memo

とすれば今日の日報ファイルを開いて vim が立ち上がります。

$ memoview

とすれば今月の日報を連結してビューワが立ち上がります。

$ memoview 202001
$ memoview all

というように対象年月を指定したり、全ての日報を連結することもできます。

他の方法と比べて

紙のノートに手書き

私は以前は紙のノートに日報をつけていました。日報と言ってますが実際には上司に提出したりするわけではなく、自分の覚え書きです。その日に実際に作業したこと、調べたこと、考えたことなどを書き記します。特に考え事をする際には紙は最高のデバイスなのですが、記録性や検索性では大きく劣ります。コピペもできませんし。

チャットツールの分報

私は経験がないのですが、チャットツールを使った分報もあります。vim 日報と同じくテキストデータなので、スニペットやコマンド履歴なども残せること、他のメンバーからコメントをもらえること、メッセージごとにタイムスタンプが自動で付くなどは便利です。

一度送信してしまうと編集しにくい。分報はどちらかというとログ的に都度吐き出すような使い方なのでしょう。その点で vim 日報とはちょっと性格が違います。

チャットツールによりますが、過去メッセージの検索が難しい場合があります。1年くらい前にこんなことがあったんだけどなぁといった時に、検索できるとは限りません。

チャットツールの自分宛 DM

他のメンバーに見られないという点以外は分報と同じです。誰も見てないので送信済のメッセージを編集し放題という点は違いますか。

社内ブログ / 社内 SNS などの記事

書き方のスタイルとしては vim 日報とかなり近いです。ただ、日報を書くためにブラウザを立ち上げて編集フォームにアクセスしなければならないのは少々煩雑です。手元のターミナルで vim が立ち上がる方が素早くないでしょうか。


Viewing all articles
Browse latest Browse all 5651

Trending Articles



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