我的Emacs在OS X系统上.有没有办法在我使用时将新帧默认为空缓冲区⌘N(就像TextEdit的工作方式一样)?我更喜欢先写内容,然后再决定一个合适的文件名.但是,Emacs要我先决定文件名,然后再写内容.我认为没有任何优势.有谁知道为什么Emacs这样工作?
基本上,如果我使用C-x 5 2,Emacs总是弹出一个框架,包含我目前正在处理的任何文件.这很不方便.我也不希望我的Emacs弹出一个默认的新框架*scratch*(许多谷歌搜索结果以某种方式建议这种方法).我更喜欢在新帧中暂时使用一个名为"Untitled"的缓冲区,如果⌘N再次使用,Emacs会弹出另一个临时"无标题2"缓冲区,依此类推.这样,我可以稍后决定缓冲区文件名.
lun*_*orn 22
您可以使用创建新缓冲区switch-to-buffer.类型C-x b,输入缓冲区名称,然后按RET.如果不存在具有该名称的缓冲区,Emacs将在基础模式下自动创建一个新缓冲区.您可以像往常一样切换到任何其他模式M-x,例如M-x python-mode.要更改默认缓冲区,请将默认值设置major-mode为所需的缓冲区.
但是,如果您想自动选择缓冲区名称并创建新框架,则需要编写自己的命令:
(defun lunaryorn-new-buffer-frame ()
"Create a new frame with a new empty buffer."
(interactive)
(let ((buffer (generate-new-buffer "untitled")))
(set-buffer-major-mode buffer)
(display-buffer buffer '(display-buffer-pop-up-frame . nil))))
Run Code Online (Sandbox Code Playgroud)
绑定到C-c n:
(global-set-key (kbd "C-c n") #'lunaryorn-new-buffer-frame)
Run Code Online (Sandbox Code Playgroud)
现在按下C-c n创建一个新的框架,其中包含一个名为"untitled"的新空缓冲区,其中x是一个连续的数字.
下面将创建一个具有唯一名称的缓冲区。缓冲区不与任何文件相关联,所以如果/当你曾经C-x C-s save-buffer,你会被提示提供一个文件名。
(defun empty-frame ()
"Open a new frame with a buffer named Untitled<N>.
The buffer is not associated with a file."
(interactive)
(switch-to-buffer-other-frame (generate-new-buffer "Untitled")))
Run Code Online (Sandbox Code Playgroud)
如果我理解您的要求,这可能对您有用:
(defun empty-frame ()
(interactive)
(let ((fl (make-temp-file "Untitled")))
(switch-to-buffer-other-frame fl)))
Run Code Online (Sandbox Code Playgroud)
这将为每个新缓冲区打开一个新的临时文件.如果您不想实际创建文件,可以使用此代码:
(defun empty-frame ()
(interactive)
(let ((bn "Untitled-")
(num 1))
(while
(get-buffer (concat bn (number-to-string num)))
(setq num (1+ num)))
(switch-to-buffer-other-frame
(concat bn (number-to-string num)))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9547 次 |
| 最近记录: |