首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在2个窗口emacs中交换缓冲区

在Emacs中,交换两个窗口的缓冲区可以通过以下步骤实现:

  1. 首先,确保你有两个窗口打开,每个窗口都显示不同的缓冲区。
  2. 将光标移动到第一个窗口,并按下C-x b,这将打开缓冲区列表。
  3. 在缓冲区列表中,使用C-nC-p来选择要交换的缓冲区。
  4. 按下C-x C-b,这将打开窗口列表。
  5. 在窗口列表中,使用C-nC-p来选择要交换缓冲区的窗口。
  6. 按下C-x b,这将选择要交换的缓冲区。
  7. 按下C-x o,这将交换选定的缓冲区。

现在,两个窗口的缓冲区已经交换。

这个过程可以用一个Emacs Lisp函数来实现:

代码语言:lisp
复制
(defun swap-windows-buffers ()
  "Swap the buffers of two windows."
  (interactive)
  (let ((buf1 (window-buffer (selected-window)))
        (buf2 (window-buffer (next-window (selected-window)))))
    (set-window-buffer (selected-window) buf2)
    (set-window-buffer (next-window (selected-window)) buf1)))

要使用此函数,请将其添加到Emacs配置文件中,并使用M-x swap-windows-buffers命令来调用它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • GNU emacs Lisp小结3

    chapter4 与缓冲区有关的函数 4.1 查找更多的信息 C-h f 函数名   ;查询函数 C-h v 变量名   ;查询变量 find-tags 函数 ;跳到响应函数 M-. 函数名     ;同上 上面函数需要定义一个标记表(tags table),这是一个名为"TAGS"的文件。 可以使用M-x visit-tages-table来指定 C-h p 命令让你用主题关键字搜索Emacs Lisp标准库。 4.2 简化的beginning-of-buffer函数定义 beginning-of-buffer => M-< end-of-buffer => M-> (defun simple-beginning-of-buffer () "Move point to the beginning of the buffer; leave mark at previous position." (interactive) (push-mark) (goto-char (point-min))) 你可以使用C-h f fun来查询具体函数。 C-x C-x可以回到原来位置。 end-of-buffer 只需要把point-min换成point-max. 4.3 mark-whole-buffer函数 快捷键:C-x h (defun mark-whole-buffer () "Put point at beginning and mark at end of buffer." (interactive) (push-mark (point)) (push-mark (point-max)) (goto-char (point-min))) 4.4 append-to-buffer函数的定义 (defun append-to-buffer (buffer start end) "Append to specified buffer the next of the region. It is insert into that buffer before its point. When calling from a program, give three arguments: a buffer or the name of one, and two character numbers specifying the portion of the current buffer to be copied." (interactive "BAppend to buffer:\nr") (let ((oldbuf (current-buffer)))         (save-excursion (set-buffer (get-buffer-create buffer)) (insert-buffer-substring oldbuf start end)))) 4.5回顾 1.descibe-function, describe-variable C-h f, C-h v 2.find-tag M-. 3.save-excursion 保存当前的位点,标记,缓冲区,执行参数,最后返回原状态。 4.push-mark 在指定位置设置一个标记,并在标记环中记录原来标记的值。 5.goto-char 将位点设置为由参量指定的位置。 6.insert-buffer-substring 将一个来自缓冲区的文本域拷贝到当前缓冲区。 7.mark-whole-buffer C-x h 8.set-buffer 将Emacs的注意力转移到另一个缓冲区,但是不改变显示的窗口。 9.get-buffer-create, get-buffer 寻找一个已指定名字的缓冲区,或当指定名字的缓冲区不存在时就创建它。 chapter5 更复杂的函数 5.1 copy-to-buffer函数的定义 (defun copy-to-buffer (buffer, start, end) "...." (interactive "BCopy to buffer:\nr") (let ((oldbuf (current-buffer)))  (save-excursion    (set-buffer (get-buffer-create buffer))    (erase-buffer)    (save-excursion      (insert-buffer-substring oldbuf start end))))) 5.2 insert-buffer函数的定义 (defun insert-buffer (buffer) "Insert after point the contents of BUFFER. Puts mark a

    03
    领券