Có cách nào để chỉnh sửa dữ liệu an toàn trong vim mà không cần truy cập hệ thống tập tin không?


9

Tôi quan tâm đến việc sử dụng vim để chỉnh sửa tệp "an toàn", tệp được lưu trữ được mã hóa ở nơi khác (giả sử, ở đâu đó trên đám mây) và không nên được ghi dưới dạng bản rõ vào đĩa cục bộ. Vì vậy, chuỗi các sự kiện có thể là (với một tập lệnh bao bọc riêng biệt hoặc một cái gì đó cho các bước không phải là vim 1, 2 và 5):

  1. Truy xuất tệp được mã hóa từ đám mây
  2. Giải mã tệp và khởi chạy vim trong khi chuyển văn bản gốc sang vim để chỉnh sửa (có lẽ qua một mô tả tệp mới?)
  3. Chỉnh sửa với vim tương tác
  4. Khi tệp được viết bằng cách sử dụng :w, hãy viết kết quả (một lần nữa, thông qua một mô tả tệp?)
  5. Mã hóa bản rõ mới và lưu trữ lại trong đám mây

Bây giờ, tôi hiểu rằng cách thông thường để làm điều này là giải mã, viết tệp tạm thời, chỉnh sửa tệp tạm thời trong vim, đọc tệp tạm thời, mã hóa, xóa / xóa tệp tạm thời. Những gì tôi đang tìm kiếm là một cách để tránh sử dụng một tập tin tạm thời. (Ngoài ra, mọi thứ theo cách đơn giản nhất để khởi động Vim ở chế độ riêng tư sẽ được đặt.)

Một cách khác để tiếp cận điều này có thể là sử dụng một cái gì đó như netrw, mà tôi không quen thuộc lắm.

Đối với mục đích của câu hỏi này, tôi không quan tâm đến dữ liệu hoán đổi hệ điều hành (nhưng nếu có một cách vim để đánh dấu bộ đệm dữ liệu nội bộ của nó là không thể hoán đổi, điều đó sẽ rất thú vị).

Có cách nào để làm những điều trên, hay tốt hơn nữa, đã có người khác giải quyết vấn đề này chưa?


Tôi đoán một giải pháp sẽ là gắn hệ thống tệp từ xa vào máy của bạn ( ví dụ như sshfs chẳng hạn) theo cách này bạn có thể điều hướng đến tệp của mình, giải mã nó, chỉnh sửa và lưu trực tiếp trên fs từ xa. Vim cũng cho phép chỉnh sửa từ xa có thể bạn sẽ tìm thấy điều gì đó thú vị trong mẹo wikia này.
statox

Bước 2 có ngụ ý một quá trình tương tác không? Bạn có cần viết mật khẩu không?
Ярослав Рахматуллин

@ Яосла
Greg Hewgill

Câu trả lời:


1

Có một số điều ẩn trong tài liệu vim có thể giúp bạn.

  1. read ! your shell command: đọc đầu ra của "lệnh shell của bạn" vào bộ đệm hiện tại (một tempfile được sử dụng để đọc dữ liệu!)
  2. let data = system('your shell command'): đọc dữ liệu vào một biến vim (Tôi không tìm thấy bất kỳ tham chiếu nào đến tempfiles trong các tài liệu về điều này). Vim và neovim hiện đại cũng có các biến thể không đồng bộ của điều này.
  3. set buftype=acwrite: nói với vim rằng bộ đệm chỉ nên được lưu với autocommand
  4. autocmd BufWriteCmd <buffer> your-vim-command: viết nội dung của bộ đệm hiện tại bằng cách thực thi :your-vim-command. Autocommand này được kích hoạt khi bạn :writegửi tập tin.

Ngoài các chủ đề trong danh sách trên, sou cũng nên đọc về việc sử dụng tempfiles ( help tempfile) của vim để quyết định xem chúng có đủ tiết kiệm cho bạn không.

Có một plugin để chỉnh sửa các tệp được mã hóa gpg có thể triển khai một số tính năng bạn muốn (bạn có muốn sử dụng các tệp được mã hóa gpg không?). Nếu không, mã có thể truyền cảm hứng cho bạn để viết nội dung của riêng bạn: https://github.com/jamessan/vim-gnupg (Tôi biết họ không có readme và như vậy nhưng plugin vẫn hoạt động tốt và được duy trì tích cực).


0

Giả sử bạn có các lệnh decryptencryptsử dụng thiết bị xuất chuẩn và stdin:

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

Sau đó, sau khi bạn chỉnh sửa tệp trong vim:

:w !encrypt secret2.msg

Điều đó tương đương với việc gửi bộ đệm vim vào đường ống | encrypt secret2.msg

Tôi nghĩ rằng nên tránh tạo các tệp tạm thời, giả sử bạn đã đặt tất cả các tùy chọn vim riêng tư .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.