10

Vim を使用して生産性を向上させるためのツールの開発に取り組み始めたところです。すべてのキーストロークをファイルに記録し、非効率的な使用パターンを特定したいと考えています。キーストロークごとにタイムスタンプを保存したいと思います。

-w および -W vim オプションを使用して、すべてのキーストロークをパイプにダンプしようとしました。ただし、Vim はキーストロークをオンラインで報告しないため、信頼できるタイムスタンプを取得できませんでした。

また、tty からの入力をインターセプトし、それをパイプに書き込んで、Vim の stdin としてリダイレクトしようとしました。しかし、Vim は次のように終了します。

Vim: Warning: Input is not from a terminal

すべてのキーをキャプチャするこのトリックも見つけました: http://vim.wikia.com/wiki/Capture_all_keys。私は vimscript について何も知りませんが、私が探しているものではないと感じています。

したがって、私の考えは次のとおりです。tty からの入力をインターセプトし、処理してから、Vim が入力として使用する偽の tty に書き込む必要があります。それが最善のアプローチであることに同意しますか? もしそうなら、どうすればそれができるかについてのヒントはありますか?

4

4 に答える 4

2

もう少し掘り下げて「スクリプト」ソースコードを調べたところ、次のことがわかりました。

man 7 pty
man 4 pts
man 3 openpty

新しい疑似端末を作成することは、ここに行く方法のように思えます。試してみます。

編集:動作しているようです。誰かが同様の問題に遭遇した場合、プロジェクトはhttps://github.com/Baranowski/habit-vim/にあります。

于 2013-05-30T20:47:03.750 に答える
1

Mac OS X で作業している場合は、このコードを使用して、キー入力を に記録できますvim

このコードは、オープン ソースscriptである古い UNIX コマンドから大幅に借用しています。

これを使用すると、次のようになります (ソースをダウンロードした後):

$ make keylog          # No Makefile needed for an easy case like this.
$ ./keylog vim myfile  # ... and use vim a bit, then exit.
$ hexdump -C outfile   # `outfile` is the hard-coded keylog file name.

も可能ですcat outfileが、出力を読みにくくする多くの制御文字が含まれている可能性があります。

また、悪意のある目的でそのコードを使用しないでください。ちょっと危険です。

于 2015-07-02T22:08:32.343 に答える