2013-06-29 17 views
8

Tôi cần phải nối một chuỗi S (không có bộ đệm) vào một tệp đặc biệt F, nhưng vì tôi hy vọng hoạt động này mất ít thời gian nhất có thể tôi không muốn F mở dưới dạng bộ đệm.Trong emacs lisp làm thế nào tôi có thể nối thêm một chuỗi vào một tập tin mà tôi không muốn mở?

AFAIK, có một chức năng tích hợp sẵn trong emacs gọi write-region, nhưng điều này đòi hỏi phải có các nội dung được ghi vào F bên trong một trong những bộ đệm (trong khi trong trường hợp của tôi không có gì bảo đảm rằng S phải là một chuỗi như vậy) . Làm thế nào tôi có thể làm cho nó?

Trả lời

13

(write-region <STRING> nil <FILENAME> 'append)

4

Tại sao bạn không thử một cái gì đó như:

(defun my-append-string-to-file (s filename) 
    (with-temp-buffer 
    (insert s) 
    (write-region (point-min) (point-max) filename t))) 

EDIT: Rõ ràng, như @Stefan trả lời, write-region có khả năng phụ thêm một chuỗi vào một tập tin, vì vậy tôi sẽ khuyên bạn sử dụng câu trả lời của mình thay vì .

+0

Có vẻ như một giải pháp. Nhưng liệu có thể không tạo ra bộ đệm tạm thời không? –

+0

Không phải là tôi biết. Emacs không cung cấp giao diện tệp thuần túy (mở, đọc, v.v.). Tuy nhiên, Emacs thực sự hiệu quả khi làm việc với bộ đệm, vì vậy điều này sẽ rất nhanh. – Lindydancer

+0

Cảm ơn sự tử tế của bạn! –

1

Không chắc chắn chính xác những gì bạn muốn đạt được nhưng một cái gì đó như thế này có thể làm các trick ... bạn chỉ có thể đặt đường dẫn đến tệp bạn muốn chắp thêm vào vị trí/path/to/F.

(defun interactive-append (something) 
    (interactive "sAppend S to F:") 
    (shell-command (format "echo '%s' >> /path/to/F" something))) 
+2

'shell-command' mất rất nhiều thời gian vì nó cần gọi shell bên ngoài, phải không? –

Các vấn đề liên quan