編輯需 root 權限文件,以及其他開啓 root 權限文件的方法。
前言:通常初使用 emacs 的人都會發現,拿 emacs 來編輯系統檔案,似乎相對麻煩:使用 sudo 的時候,是以 root 的身份執行 emacs,套用的設定也非自己所撰寫的init.el。不過其實,有很多方法可以讓emacs遙身一變成為最適合編輯系統檔案的文字處理器。
方法一:重開buffer 此法即是透過 tramp 來開
(defun sudo-edit (&optional arg)
(interactive "P")
(if (or arg (not buffer-file-name))
(find-file (concat "/sudo:root@localhost:"
(ido-read-file-name "Find file(as root): ")))
(find-alternate-file (concat "/sudo:root@localhost:"
buffer-file-name))))
這段代碼的目的是:假如你正在看某個檔案,就以 root 的身份連接到這個檔案。若不是在看一個檔案,則問你要以 root 身份開啟什麼檔案。另外,雖然 ido 是一個強大方便的自動提示,不過可能有人討厭他那種自以為是的檔名記憶而沒有使用,只要把 elisp 函數中 ido-這個 prefix 去掉即可。
方法二:讓 emacs 判斷是否擁有編輯權限
(defadvice ido-find-file
(after find-file-sudo activate)
"Find file as root if necessary."
(unless (and buffer-file-name
(file-writable-p buffer-file-name))
(find-alternate-file (concat "/sudo:root@localhost:"
buffer-file-name))))
這段代碼的目的是,讓電腦自動判斷是否擁有檔案編輯的權限,若無,則以 root 身份開啟之,若有,則以user的身份打開 (emacs 可以判斷檔案是 read only 還是 writable 的) ido-find-file 的改造!
方法三:alias+emacsclient
在.bashrc/.zshrc添加如下命令
alias sudeemacs="SUDO_EDITOR=\"emacsclient -t -a emacs\" sudoedit"
即可以emacs編輯需要root權限的檔案了