Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

なでしこを使ってWindowsのテキストエディタで一時的なメモファイルを快適に作成する

More than 1 year has passed since last update.

Motivation

Emacs の open-junk-file と同じノリです。

作業ログは随時逐一事細かにファイルに記録しておきたいものです。

だいたいその日ごとにいろんなトピックのタスクが発生するのですが、
毎回その日のファイルを作って、どこに保存するか決めて、ファイル名決めて・・・っていうのはだるいですよね。

手軽にメモを作成したい!
そこを解決するライフハックです。
ランタイムとして なでしこ 1系が必要です。

Goal

  1. Ctrl+Alt+J を押してファイル名の残りを入力すれば自動的に yyyy/MM/dd/yyyyMMdd-HHmmss- というファイルが作成され、エディタが起動するという代物です。
  2. Dropbox, GoogleDrive, ownCloud 等のクラウドストレージと連携していれば保存した瞬間同期されて、どこでもそのメモを参照できるのでとても便利です。

How to

  • 以下のスクリプトをどこか好きな場所に置きます。

junk_base_dir, emeditor="C:\Users\Programs Files\EmEditor\EmEditor.exe" はそれぞれ保存ベースとなるディレクトリのパス、エディタの実行ファイルのフルパスで置き換えて下さい。

junkfile.nako
母艦の可視はオフ
junk_base_dir=「C:\Users\fred\ownCloud\Documents\memos」
today=今日
now=今
todayの「/」を「\」に置換
junk_dir="{junk_base_dir}\{それ}"
today_hyphen=todayの「/」を「-」に置換
now_hms=nowの「:」を「」に置換
filename_prefix="{today_hyphen}-{now_hms}-"
filename_prefixを表示
ダイアログ初期値はfilename_prefix
「Input Junk File Name」で尋ねる
もしそれがいいえならば
    おわり
違えば
    junk_file_nameはそれ
    junk_dirのフォルダ作成
    junkfile="{junk_dir}\{junk_file_name}"
    「」をjunkfileに保存
    emeditor="C:\Users\Programs Files\EmEditor\EmEditor.exe"
    "{emeditor} {junkfile}"をコマンド実行
    おわり
  • 保存した場所の例

2017-12-14_13h06_58.png

  • デスクトップ等適当な場所にショートカットを作成します

2017-12-14_13h07_19.png

  • ショートカットキーを割り当てます

2017-12-14_12h27_32.png

Usage

  • Ctrl+Alt+J をタイプするとファイル名を聞いてきます。

2017-12-14_12h27_50.png

  • 残りのファイル名を埋めて拡張子を書きましょう。

2017-12-14_12h27_57.png

  • ッターンとやると年月日のディレクトリの下にファイルが作成され、エディタが起動してすぐ編集できる状態になります。

2017-12-14_12h29_32.png

快適。

英語版の Windows だとなでしこ1は非ユニコードアプリケーションなので、これ使えないので↓を使うことにする。

入門したてなのでくっそ汚いプログラムになっています。

Open junkfile golang windows version.

junkfile.go
package main

import (
  "fmt"
  "time"
  "bufio"
  "io/ioutil"
  "os"
  "os/exec"
  "strings"
)

func main() {
    //fmt.Println("hello, world")
    nowTime := time.Now()
    const yyyymmdd = "2006/01/02"
    const ymdhis = "20060102-150405"
    str1 := nowTime.Format(yyyymmdd)
    str2 := nowTime.Format(ymdhis)
    fmt.Printf("now -> %s\n", str1)
    fmt.Printf("now -> %s\n", str2)
    reader := bufio.NewReader(os.Stdin)

    fmt.Print(str2, "-")

    text, _ := reader.ReadString('\n')
    text = strings.TrimSuffix(text, "\r\n")
    //text = text[:len(text)-2]
    fmt.Println(text)

    folderPath := "D:/Users/wnoguchi/Dropbox/Documents/junk/" + str1
    os.MkdirAll(folderPath, os.ModePerm)

    filePath := folderPath + "/" + str2 + "-" + text
    fmt.Println(filePath)
    d1 := []byte("")
    //err := ioutil.WriteFile(filePath, d1, os.ModePerm)
    ioutil.WriteFile(filePath, d1, os.ModePerm)

    //if err := os.MkdirAll("hoge/fuga", 0777); err != nil {
    //    fmt.Println(err)
    //}

    //C:\Program Files\EmEditor\EmEditor.exe
    //cmd:= exec.Command("cmd","/C","start","C:/Program Files/EmEditor/EmEditor.exe", filePath)
    cmd:= exec.Command("C:/Program Files/EmEditor/EmEditor.exe", filePath)
    //err:=cmd.Start()
    cmd.Start()
    //panic(err)
}

なでしこ愛

なでしこは日本語プログラミング言語です。

最近 JavaScript で動く なでしこ3 がでました。
トランスパイルとかしてるのだろうか。Web に特化してるのかな?
また、なでしこ2 は C# で開発されているので .NET のランタイムが動作する環境であればどこでも動きます。そう、 Mono ならね。
上記は現行のなでしこ 1 系のおはなしです。

References

  1. Emacs で使い捨てファイルを開く - Qiita
  2. なでしこ:日本語プログラミング言語
wnoguchi
Software Engineer(Server, Network): Design, Implementation, Operation. Infrastructure Division.
https://pg1x.com/
unicast
ユニキャストは、茨城大学工学部発の学生ベンチャー企業として、2005年に産声をあげました。 ミッションである『テクノロジを通じて「驚き」と「感動」を創造し、人々の「夢」と「希望」を支えます。』を合言葉に、これからも幅広く価値発信してまいります。
http://www.unicast.ne.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away