2011-04-18 54 views
3

我知道你可以使用emacs瀏覽檔案的內容。有沒有辦法可以編輯這些文件並透明地寫入存檔?目前,我導航到存檔中,將文件寫入臨時目錄,然後使用java jar命令將文件重新添加到存檔中。它有點痛苦。你能用emacs編輯.jar/archive內容

P.S.我知道你很少想要這樣做的用例,但我繼承了一個平臺,我不能輕易修改我必須在短期內應對這個限制的地方。

+1

如果您的計算機上安裝了zip命令,Emacs可以毫不費力地寫入jar文件。 – vpit3833 2011-04-18 23:40:30

回答

3

是的,它只是工作。你試過了嗎?

我抓住了一個jar文件,其中包含一個文本文件和一些將打印出來的java代碼。我編輯了.jar中的txt文件並保存了文本文件。它完全符合我的期望。

編輯 - 當保存歸檔請確保您使用C-X C-S

+1

@ nsfyn55請注意,本例中的過程是在Emacs中打開封閉的jar文件,然後使用dired-like界面導航到單個文件。 – sanityinc 2011-04-19 07:44:55

+0

@ sanity/Dustin我使用ubuntu 10.04的默認emacs 2.3版本,沒有窗口模式。當我打開jar /mydir/myjar.jar時,編輯文件(/mydir/myjar.jar:props.properties),並使用c-x c-w來寫它詢問我是否要寫入/ mydir /。如果我嘗試在那裏追加jar文件名,它想覆蓋jar – nsfyn55 2011-04-19 12:47:15

+0

我相信你的意思是23,而不是2.3。你有權限問題或什麼?我只是在我的ubuntu(11.04)盒子上試過23.2.1,沒有問題。同樣在我的Mac上,無論他們運送什麼版本。 – Dustin 2011-04-19 19:48:15

1

在Emacs-23.2(不23.1或23.3),這並不 「只是工作」 在Windows上,由於一個錯誤。相反,它只是寫caution: filename not matched: "<internal path>

一個解決方案是簡單地升級到23.3。

要修正的emacs-23.2,開放$EMACS_HOME/lisp/arc-mode.el和錯誤替換:

(if (equal (car archive-zip-extract) "unzip") 
    (shell-quote-argument name) 
     name) 

有:

name 

,並重新編譯:

M-x byte-compile-file $EMACS_HOME/lisp/arc-mode.el 

這個答案來自於原來的emacs bug report