ファイルシステムにアクセスせずにvimで安全なデータを編集する方法はありますか?


9

vimを使用して「安全な」ファイルを編集することに興味があります。このファイルは、暗号化されて他の場所(たとえば、クラウドのどこか)に保存され、ローカルディスクにプレーンテキストとして書き込むべきではありません。したがって、イベントのシーケンスは次のようになります(別個のラッパースクリプトまたは非vimステップ1、2、5の場合):

  1. クラウドから暗号化されたファイルを取得する
  2. ファイルを復号化し、プレーンテキストをvimに渡して編集するためにvimを起動します(おそらく新しいファイル記述子を上書きしますか?)
  3. vimでインタラクティブに編集する
  4. を使用してファイルが書き込まれた場合、:w結果を書き込みます(ここでも、ファイル記述子を使用しますか?)
  5. 新しい平文を暗号化してクラウドに保存する

現在、この種のことを行う通常の方法は、復号化、一時ファイルの書き込み、vimでの一時ファイルの編集、一時ファイルの読み取り、暗号化、一時ファイルのワイプ/削除であることを理解しています。私が探しているのは、一時ファイルをまったく使用しない方法です。(また、Vimをプライベートモードで起動する最も簡単な方法のすべてが設定されます。)

これに取り組む別の方法はnetrw、私があまり知らないようなを使用することかもしれません。

この質問では、OSスワップデータについては気にしていません(ただし、内部データバッファーをスワップ不能としてマークするvim方法がある場合は、興味深いでしょう)。

上記を行う方法はありますか、それとももっと良い方法はありますか?


私の解決策の1つは、リモートファイルシステムをマシン(たとえばsshfsのようなもの)にマウントすることです。この方法で、ファイルに移動して復号化し、編集して、リモートfsに直接保存できます。Vimはリモート編集も許可します。多分このウィキアのヒントで何か面白いものを見つけるでしょう。
statox

ステップ2はインタラクティブなプロセスを意味しますか?パスワードを書く必要がありますか?
ЯрославРахматуллин

@ЯрославРахматуллин:いずれにせよ、これについて私が持っているアイデアの中にはパスワードを必要とするものとそうでないものがあります。
グレッグ・ヒューギル2017

回答:


1

あなたを助けることができるvimドキュメントに隠されたいくつかのものがあります。

  1. read ! your shell command:「シェルコマンド」の出力を現在のバッファーに読み取ります(データの読み取りには一時ファイルが使用されます!)
  2. let data = system('your shell command'):データをvim変数に読み込みます(これに関するドキュメントで一時ファイルへの参照は見つかりませんでした)。現代のvimとneovimにも、非同期のバリアントがあります。
  3. set buftype=acwrite:バッファは自動コマンドでのみ保存する必要があることをvimに伝えます
  4. autocmd BufWriteCmd <buffer> your-vim-command:を実行して、現在のバッファの内容を書き込み:your-vim-commandます。このオートコマンドは:write、問題のファイルがあるときにトリガーされます。

上記のリストのトピックに加えて、souはvimによるtempfiles(help tempfile)の使用についても読んで、十分に保存されているかどうかを判断する必要があります。

必要な機能の一部を実装する可能性があるgpg暗号化ファイルを編集するプラグインがあります(gpg暗号化ファイルを使用しますか?)。そうでなければ、コードはあなたがあなた自身のものを書くためのインスピレーションになるかもしれません:https : //github.com/jamessan/vim-gnupg(私は彼らがreadmeなどを持っていないことを知っていますが、プラグインは良好で積極的に維持されています)。


0

コマンドがdecryptあり、encryptそれがstdoutとstdinを使用していると仮定します。

# open vim using stdin
decrypt secret.msg | vim -

次に、vimでファイルを編集した後:

:w !encrypt secret2.msg

これは、vimバッファーをパイプに送信することと同じです。 | encrypt secret2.msg

すべてのプライベートvimオプションを設定しているとすれば、一時ファイルの作成は避けるべきだと思います

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.