2014-01-21 24 views
4

這經常發生在我身上:我同時使用幾個M-x shell炮彈。要打開下一個shell,我必須用rename-buffer重命名第一個。但是,emacs只是提示新的緩衝區名稱,而不允許我重新使用現有的緩衝區名稱來構造相關的緩衝區,如*shell* dist而不是*shell*。那麼,如何在不重新輸入所有內容的情況下編寫新名稱呢?如何將緩衝區重命名爲相似的名稱

回答

4

rename-buffer提示輸入新名稱時,只需將光標放下即可。隨着光標你得到所有其他的名字。

經過這麼多年的emacsing的,我才發現現在這個權利...

6

還要注意rename-uniquely

那麼一種選擇是:

  • Mxrename-uniquelyRET
  • 的MxshellRET

然而,對於這種特定的用例,可以完全使用一個前綴參數規避重命名步驟時調用命令:的Mxshell

很明顯,這一切都取決於你對自動化名稱感到滿意,或者如果你想命名它更有意義。如果後者比錯誤答案顯然是最有用的(可能與前綴參數方法相結合)。

1

@phils和@false都提供了很好的答案,也許會有更多好的答案來臨。正如@phils指出的那樣,它有點取決於你想要的行爲。

這裏是我的貢獻---

除了使用M-n檢索當前緩衝區名稱(以便您可以編輯它),它也可以得心應手地使用不嚴完成反對現有緩衝區名稱。

鬆懈完成意味着你可以,如果你願意,完全忽略完成候選人,並輸入任何你想要的新名稱。但是這也意味着你可以完成一個現有的名字,然後編輯它以得到一個類似但不同的名字,新名字對你來說意味着什麼。 IOW,只是M-n給你的行爲,但是對於所有緩衝區名稱和匹配而不是循環(重複M-n)。

圖書館misc-cmds.el建議rename-buffer的定義給你這樣的完成行爲。如果你不需要該庫中的其他東西,你可以抓住它的定義rename-buffer

給出與其他緩衝區相關的緩衝區名稱很快,但比自動唯一化方案提供的更有意義。 (我將rename-buffer綁定到一個鍵上。)

0

這個怎麼樣。

(defun rename-buffer() 
    (interactive) 
     (rename-buffer (read-string "Rename buffer (to new name): " (buffer-name)))) 

當前緩衝區名稱將首先出現。然後你可以重命名它。

+2

這是一個有趣的功能名稱:) – phils

相關問題