Org-modeの長いファイルを編集するときはインダイレクトバッファーが便利

インダイレクトバッファーというのはファイルはひとつだけれども、編集中の状態(カーソルの位置やモードなど)は独立したバッファーのことです。バッファ選択画面でそのバッファーを選べばすぐにその箇所の編集を再開できます。

org-modeでタスク管理を行っていると一つのファイルのサイズが大きくなりがちで、また、ファイル内を行ったり来たりすることが多くなります。インクリメンタルサーチとかツリーの移動やマーク位置を遡るとかいった方法で対処していましたが、ふとインダイレクトバッファーのことを思い出して使ってみたところ、ようやくその便利さに気付いたという次第です。

“Org-modeの長いファイルを編集するときはインダイレクトバッファーが便利” の続きを読む

ブラウザで開いているURLのorg-mode用のリンクを生成するブックマークレット

org-modeでたまにURLを記載したいときがあります。その場合URLだけでなくページタイトルも簡単に記載できたら便利です。

そんなときは、以下のコードをブックマークレットとして保存しておいて、対象ページで実行します。

javascript:prompt('','[['+document.title+':'+location.href+']]');

ブックマークレット。ご存知でしょうか?

まず上記のjavascript: で始まるコードをコピーします。

適当なURLを開いて(このページでもいいです)、そのURLをお気に入り(ブックマーク)に追加します。

ブックマークを編集する機能を使って今追加したURLの名前を適当なものにします。「Orgブックマーク」とかです。

そして、そのURL欄に先程コピーしたコードを貼り付けます。

以上でブックマークレット登録完了です。

あとはorg-modeに保存したいサイトがあれば、そこでお気に入りのメニューから選べばorg-mode用のリンク([[ URL ][ページタイトル]])がポップアップするので、コピーしてorg-modeのバッファに貼り付けて下さい。

あと、ブラウザをC-c C-oで開くには browse-url-browser-function の設定が必要です。

;; for mac

(setq browse-url-browser-function ‘browse-url-default-macosx-browser)

;; for windows

(setq browse-url-browser-function ‘browse-url-default-windows-browser)

;; linux

(setq browse-url-generic-program (executable-find “firefox”)
browse-url-browser-function ‘browse-url-generic)

ブックマークレット便利ですよね。

org-mode 私の使い方

他の人がどういう風にorg-modeを使っているのかorg-modeを使い初めたときは気になりました。なにせ機能が多いので、ひとまず誰かの使い方を真似てみようと思い、org-modeによるGTDの実践方法などを読みました。海外の方が書かれたものの翻訳が以前あったのですが、探してみたところ、残念ながら見つけられませんでした。

今回はこれからorg-modeを始める人の為に私のやっている方法を紹介してみようと思います。ただし、全体を俯瞰できるよう、細かな説明は省いています。詳しくはマニュアルなどを参照して下さい。

OrgMode マニュアル

“org-mode 私の使い方” の続きを読む

GoogleとYahooのかな漢字変換Web APIをEmacsから使ってみた

私はEmacsで日本語を書くときはDDSKK-NICOLAという入力方式を使っています。親指シフト入力というかな入力方法、プラス、送り仮名を指定することで効率よく漢字できるとされるSKKが組み合わされたものです。

私はさらに配布されたレイアウトをいじって濁音と半濁音は二打鍵(「た」と打ったあとで「゛」を打つ)で入力するようにしています。本来親指シフト入力といのは一文字一打鍵ですべての仮名をキーボードの数字キーを使わず下の三段で入力できるように考案されたものなので、残念な感じはしますが、キーボードを選ばないし(親指シフト入力では左右の親指それぞれで押しやすいキーが独立してないといけない)、かえって入力しやすくなる文字などもあるのです。

とはいえ、濁音・半濁音だけでなく、DDSKK-NICOLAのかな漢字変換を使っているので、その分を含めると打鍵数が多くなってしまいます。DDSKK-NICOLAでは、変換対象を指定するための打鍵が必要なのです。

そこで打鍵数を減らすためにYahootやGoogleのかな漢字変換Web APIを使ってみることにしました。

目指すのは平仮名を入力した選択範囲をAPIに送って、戻ってきた変換後の値を選択したリージョンと置き換えるというものです。

APIでは、変換候補を返してくれるので、Emacs Lispでマクロが作れれば、普通のIMEのように変換候補を選びながら入力していくことが実現することが出来るでしょう。誰か作ってくれると良いのですが。

“GoogleとYahooのかな漢字変換Web APIをEmacsから使ってみた” の続きを読む

Symfony 3 学習メモ[03] ー ページ作成とデモアプリ

Getting Startedを一通り読み、ちょっとした達成感が得られたので、ひとまずSymfonyはここまでにしたいと思います?。ですが、次にまた始める時になるべくスムーズに始められるようページ作成とサンプルのインストールくらいまではやっておくことにします。

“Symfony 3 学習メモ[03] ー ページ作成とデモアプリ” の続きを読む

親指シフト残念配列

親指シフト入力をご存知でしょうか。まあほとんどの方は知らないと思いますが、説明は省かせてもらいます。今回は親指シフト入力を知っている方だけが分かる話です。

私は親指シフト入力をするときにEmacsのDDSKK-NICOLAモードを使っています。それ以外ではローマ字入力をしています。Emacs以外で長い文章を書くこともあまりありませんし、とにかくEmacsさえインストールすれば、OSが違っても同じ操作で入力出来るので気に入っています。

さて、私が使っている「親指シフト残念配列」とはどういうものかと言うと、濁音や半濁音を2打鍵で入力してしまうという非常に残念な配列です。それをやったらもはや親指シフト入力ではない、と言う人がほとんどかも知れません。

実は2打鍵で濁音、半濁音を入力する機能というのはこのDDSKK-NICOLAに初めから実装されているものです。(勘違いでした。半濁音の「 ゜」はomeletでは左親指キーとのクロス打鍵時。2018/4/12)

私はskk-omelet-jis.elをカスタマイズして使っていますが、はじめから「 ゜」や「 ゛」が単独で配置されていました。それに気付いたとき、「もう、いいやこれで。」と思ってしまいました。

ということで、普通は親指シフトとクロス打鍵で出力する濁音、半濁音を潰してしまい、クロスで打っても同じ側の親指で打った文字が出るように改変してしまいました。半濁音は全角のピリオド「.」(単独打鍵時のzの場所)にアサインしました。(「半濁音〜」は2018/4/12に追記)

残念なことです(笑)。しかし実際、親指シフトに適したキーボードってなかなか無いですよ。ノートパソコンやMacなどスペースキーがどーんと真ん中にありますよね。私は気にしませんが、やはりMacを使うのにPCキーボードって、という人も居るでしょう。マイキーボードを使うことにしてもOSごとに環境を整えないといけない。私は家ではLinux Mint、会社ではMacとWindowsを使っています。全部の環境で同じような操作性にするのは大変そうです。OSのアップデートで入力のカスタマイズアプリが未対応だったりすると親指シフトそのものがしばらく出来なくなったり。

「残念配列」にすることでキーボードやOSの違いによるストレスから開放されます。それと本来同じ側の親指シフトで入力すべき文字がクロス打鍵で入力出来て、これが意外と楽です。

「○○、親指シフト止めるってよ」という人がいたら最後の手段として教えてあげてもらえると嬉しいです。しかし、残念配列より先に「親指シフトorzレイアウト」のほうが適当かもしれません。公式サイトは、orzレイアウト | JIS日本語キーボードでも親指シフトを楽チンにorz )です。

以上、世界で私唯一人しか使っているものの居ない「親指シフト残念配列」の話でした。

 

 

ORG-MODEでカードのようにテキストを並べて編集する

目標

(2019/7/15追記:ファイルを分割するより、インダイレクトバッファーを使った方が便利ですね)

以下のようにカードを並べるようにして編集する方法を紹介します。

やり方 – ファイルを分割してINCLUDEする

カードとして扱うセクションをそれぞれ別ファイルにしてメインのテキストに以下のように書いていきます。

#+TITLE: メモ
#+INCLUDE: “./001.org” :minlevel 1
#+INCLUDE: “./002.org” :minlevel 1
#+INCLUDE: “./003.org” :minlevel 1

TEXやマイクロソフトワードでも同じような機能はあったと思います。

以下では周辺のこまごました説明を行います。

“ORG-MODEでカードのようにテキストを並べて編集する” の続きを読む

MacではEmacsのキーバインドが使えて良い

Macはテキストの編集があるところではEmacsの基本的なキーバインドがつかえる。結構便利だ。Emacsユーザーが多いと思われるLinuxだが、各アプリで設定する必要があるのだろうか。文章はEmacsで書けばよいし、シェルはEmacsキーバインドなので、そんなに困ることはないのではあるがウィンドウマネージャーの設定を確認してみよう。

 

親指シフト入力 on Emacs のススメ

Emacsは人気のあるテキストエディタです。たくさんのマクロ(スマホでいえばアプリのようなものですかね)があり、文書作成やプログラミングに便利な環境を整えることができます。

Emacsの素晴らしい機能はたくさんありますが、私がおすすめしたいのは、Emacsでは、日本語入力(変換)もマクロを使おう、というものです。Emacsは大抵のOSで使えますので、テキスト編集に関してどのOSでも同じように作業ができるわけですが、さらに日本語の入力もEmacsのマクロをつかうことで、どの環境でもほとんど違和感なく作業ができるようになります。

Emacs上で使える日本語入力マクロはいくつかありますが、おそらくもっとも多く使われているのはskkではないかと思います。skkを使うことでかなり便利になると思いますが、私はローマ字入力方式のskkではなく、skkのパッケージに含まれている親指シフトカナ入力のskk-nicolaというものを使うことで、さらに便利になっている(はず)と考えています。

カナ入力というのがポイントです(親指シフト入力についてはここでは説明を省かせてもらいます)。ただのローマ字のskkだと、OSのデフォルトのIMEのローマ字入力との微妙な違いに混乱してしまいますが、カナ入力だとそうならないわけです(多分ね)。そして、長めの文章を書くときはEmacs上で、検索フォームなどに入力する程度はOS標準のローマ字入力で、という使い分けをするわけです。

そして、繰り返しになりますが、Emacsなので、OSが異なっていてもその慣れた入力方法が全く同じ使用感で使えるということになります。

親指シフト入力については、どのキーボードでも快適に入力できるわけではないというのが難点ですが、マイキーボードを常に携帯すれば買えば解決です。もしくは、私のように濁音、半濁音を2打鍵にしてしまうという残念な使い方もあります。一度、親指シフト on Emacs を試してみませんか。

org-mode期間別の作業時間集計

org-modeで計測をするとタスクの集計が分かるのだが、週毎、月毎に振り返ってみるにはどうすれば良いか分からなかったので、タスクの子階層に日毎のアイテムを「アイテム(1)」、「アイテム(2)」といった感じやっていたが、ちょっと面倒。なんとかならないかと調べてみた。

社内で他にタスク管理ツールを使っていてそれにも記録しないといけないといったケースもあるかもしれない。その場合1日の作業毎の時間がすぐに分かれば転記しやすい。

アジェンダモードで C-c C-x C-c とやると時間がカラム表示されるのであるが、ひとつのアイテムを複数の日に渡ってやっている場合はその合計が表示されてしまう。

解決策としては、「C-c C-x C-r (org-clock-report)」を使えば良いことが判明。

当たり前の答えで、読み始めから違和感を感じていた人も多いに違いないとは思うが、ひょっとしたら私と同じようにorg-modeは沢山機能があり過ぎるので、とりあえず知っいる範囲でなんとかやりくりしていて同じ悩みを持っている人がいるかも知れないということで。

やり方は、
C-c C-x C-r を実行したあと、clocktableの属性を以下のような感じに変える。「step day」が一日毎の表示指定。stepを使うときは、:blockもしくは、期間指定(:tstart、:tend)を使う必要がある。

#+BEGIN: clocktable :maxlevel 3 :scope subtree :step day :block 2015-09 :stepskip0

1日分を見たいときは、

#+BEGIN: clocktable :maxlevel 5 :scope agenda :step day :stepskip0 :fileskip0 :block today

のtodayのところで、「shift + 矢印キーの左右」で1日分を確認できる。

とても便利なので「C-c C-x C-r (org-clock-report)」のマニュアルを読んでみてはどうだろう。