2012-11-22 34 views
2

我想打開一個帶項目根目錄的cmd.exe窗口,因爲它是當前目錄。如何打開Emacs中的本機cmd.exe窗口

這裏是我的elisp代碼:

(defun open-cmd-and-cd-to-project-root() 
    (interactive) 
    (projectile-mode t) 
    (cd (projectile-get-project-root)) 
    (shell)) 

,它打開一個Emacs緩衝區中的CMD外殼。但我希望它打開一個在Windows中運行的新本機cmd.exe窗口,而不是在Emacs中運行的緩衝區。我怎樣才能做到這一點?

+0

你能改說這個問題嗎?我不明白這個問題。 – alinsoar

+0

@alinsoar:在gvim.exe中,我可以通過執行':!cmd'命令來打開一個新的cmd終端窗口。我該如何在Emacs中做到這一點? – TomCaps

+0

首先,我從來沒有使用比爾蓋茨的窗戶,所以我不知道窗戶。第二。 '「通過執行以下命令打開一個新的cmd終端窗口:!cmd」'不是一個正確的表達式,所以我必須猜測。 你想使用'Meta-!'運行一個命令嗎? – alinsoar

回答

5

這樣做:

(let ((proc (start-process "cmd" nil "cmd.exe" "/C" "start" "cmd.exe"))) 
    (set-process-query-on-exit-flag proc nil)) 

set-process-query-on-exit-flagnil的,所以它不會在關閉emacs(我們不能反正殺它)理會。

+0

謝謝!它像一個魅力! – TomCaps

+0

@angus你能告訴我如何從你的代碼中創建一個函數,這樣我就可以把它放在我的.emacs文件中並將一個鍵綁定到它上面?不幸的是,我缺乏編程技巧。 –

+0

@KeksDose把它放在一個'defun'格式中:'(defun start-cmd()(interactive)'*我的代碼在這裏*')'。然後用'M-x start-cmd'調用它。 – angus