16

非常に長い間、私はこれを行ってきました。C-x bそれから、のような「ユニークな」名前ですxbxb。だから私は switch-to-buffer存在しないバッファで使用します。あなたは私に何を示しているか想像することができC-x C-bます:そのような名前がたくさんあります。xbxbxbxbxxx....私はすでにすべての良い名前を使用していることに気付いたので、しばらくすると(1週間ほど)本当に迷惑になります。

新しいバッファを開くためのより標準的な方法はありますか?さらにシェルを実行したい場合は、と言いC-u M-x shellます。その線に沿った何かが理想的です。

4

7 に答える 7

15

make-temp-nameランダムな接尾辞を持つファイルまたはバッファの名前を生成するために使用できます。それをベースにして、次のように書くことができます:

(defun generate-buffer ()
  (interactive)
  (switch-to-buffer (make-temp-name "scratch")))

「scratch」は、任意の接頭辞に置き換えることができます。

于 2012-04-28T16:39:33.177 に答える
7

そうする:

(defun new-scratch ()
  "open up a guaranteed new scratch buffer"
  (interactive)
  (switch-to-buffer (loop for num from 0
                          for name = (format "blah-%03i" num)
                          while (get-buffer name)
                          finally return name)))
于 2012-04-28T14:44:59.317 に答える
3

この質問に答えるためにサインアップしました (この機能をよく使うので、ここで共有すると便利だと思いました):

(defun tmpbuf (buf)
  "open a buffer,
if it doesn't exist, open a new one"
  (interactive "sBuffer name: ")
  (switch-to-buffer
   (get-buffer-create (concat "*" buf "*"))))
于 2012-04-28T18:17:27.613 に答える
3

あなたが何を望んでいるのかよくわかりません。あなたは「私はすでにすべての適切な名前を使用していることを発見しました」と言うので、Emacs に名前を生成させるのは良くありませんが、自分で名前を指定しようとすると、それ以上正規化されません。よりもC-xb name RET

それ以外の場合は、文字列を入力し、それをある種の「tmp バッファ」パターンで使用して新しい名前を作成できるようにするために既に提案されている関数の 1 つが賢明に思えます。

または、メジャー モードごとに 1 つの一時バッファが実際に必要な場合は、scratch.elが役立つかもしれません。

にバインドC-xC-bibuffer、フィルターやグループを使用して一時バッファーをより重要なものから分離することで、ほぼ確実に利益を得ることができます。これにより、リストが乱雑になります。

新しい関数を書くことに妙に抵抗があるように見えますか? 何かが組み込まれていることが判明したとしても、カスタム関数を使用することに何の問題もありません.Emacsを好みに合わせてカスタマイズするには、一般的にこのようにします.

于 2012-04-29T04:57:21.320 に答える
0

あなたは他人のEmacs へのアクセス権を与えられており、新しいバッファを開きたいと思っています。運が良ければ、この誰かが に設定さenable-recursive-minibuffersれていtます。そうでない場合は、一時的M-:にこの Emacs Lisp 式を評価することができます (後でこのパラメータを復元することを忘れないでください):

(setq enable-recursive-minibuffers t)

ここで、新しいバッファーを開きます。

  • C-xbバッファ名のプロンプト
  • C-uM-:式の結果を評価して、ミニバッファプロンプトに出力します:

    (random)
    
  • これにより、表現可能な整数 (負の整数を含む) の全範囲の乱数が得られます。これは、既に取得されている可能性が非常に低いです。を押しReturnて終了し、新しいバッファに切り替えます。

于 2016-02-17T07:41:00.600 に答える