emacs 终端模式:如何有效地复制和粘贴

2024-01-27

我很难让这个 emacs -nw 在终端模式(emacs -nw)下有效工作。 一些设置信息: 工作服务器通过 SSH 连接,emacs 运行在服务器上。通常我使用 SSH 和“emacs -nw”进行连接来处理我的文件。

emacs 配置取自:https://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/ https://hugoheden.wordpress.com/2009/03/08/copypaste-with-emacs-in-terminal/

;; make mouse selection to be emacs region marking
(require 'mouse)
(xterm-mouse-mode t)
(defun track-mouse (e)) 
(setq mouse-sel-mode t)

;; enable clipboard in emacs
(setq x-select-enable-clipboard t)

;; enable copy/paste between emacs and other apps (terminal version of emacs)
(unless window-system
 (when (getenv "DISPLAY")
  ;; Callback for when user cuts
  (defun xsel-cut-function (text &optional push)
    ;; Insert text to temp-buffer, and "send" content to xsel stdin
    (with-temp-buffer
      (insert text)
      ;; I prefer using the "clipboard" selection (the one the
      ;; typically is used by c-c/c-v) before the primary selection
      ;; (that uses mouse-select/middle-button-click)
      (call-process-region (point-min) (point-max) "xsel" nil 0 nil "--clipboard" "--input")))
  ;; Call back for when user pastes
  (defun xsel-paste-function()
    ;; Find out what is current selection by xsel. If it is different
    ;; from the top of the kill-ring (car kill-ring), then return
    ;; it. Else, nil is returned, so whatever is in the top of the
    ;; kill-ring will be used.
    (let ((xsel-output (shell-command-to-string "xsel --clipboard --output")))
      (unless (string= (car kill-ring) xsel-output)
        xsel-output )))
  ;; Attach callbacks to hooks
  (setq interprogram-cut-function 'xsel-cut-function)
  (setq interprogram-paste-function 'xsel-paste-function)
  ;; Idea from
  ;; http://shreevatsa.wordpress.com/2006/10/22/emacs-copypaste-and-x/
  ;; http://www.mail-archive.com/[email protected] /cdn-cgi/l/email-protection/msg03577.html
 ))

拥有的理由:

 (require 'mouse)
 (xterm-mouse-mode t)
 (defun track-mouse (e)) 
 (setq mouse-sel-mode t)

是启用鼠标在文本上进行选择,以便文本区域突出显示,就像标记该区域的“C-x SPC”一样。然后我可以使用“M-x w”在 emacs 内以及 emacs 和其他应用程序之间复制文本,使用“C-x y”粘贴文本。

一切看起来都很完美,除了与 X 相关的任何操作都非常慢!我与远程服务器的连接很顺畅——延迟通常低于 100 毫秒。但要使用“C-x k”删除一行文本,大约需要 5 秒!粘贴起来还需要5秒!

当复制/粘贴有时很频繁时,这真的很烦人。我认为这与 X 服务器消息传递有关,但不确定是否有好的方法来解决这个问题。

有任何想法吗? 谢谢!


这本身并不是一个理想的解决方案,但我找到了一种比前一种感觉更好的方法。

这个想法是摆脱导致严重延迟问题的 X,即仅保留以下内容:

;; enable clipboard in emacs
(setq x-select-enable-clipboard t)

结果是:

  1. Emacs 中的复制/粘贴既简单又快速。

  2. 从其他应用程序复制到 Emacs:Ctrl+Shift+v

  3. 从 Emacs 复制到其他应用程序:鼠标选择现在位于 X 选择上,因此右键单击并复制会将文本复制到选择中。请注意,“M-w”现在不会将任何内容复制到选择或系统剪贴板中。

这又是一种妥协,而不是解决方案,但考虑到我复制/粘贴比应用程序间操作更频繁的事实,目前这是可以接受的。

还是期待有好的解决方案!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

emacs 终端模式:如何有效地复制和粘贴 的相关文章

  • IPython 自动完成 emacs24 不起作用

    我将 emacs24 0 92 与 IPython 12 一起使用 我从 IPython 存储库中获取了 ipython el 文件并尝试了这个补丁 https github com ipython ipython pull 204但是自动
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 如何在组织模式议程树视图中显示条目的完整上下文

    在组织模式的每日 每周议程视图中 有没有办法显示条目的完整上下文 我对代码的解读是 它找到时间戳上方的第一个标题并显示它 然而 就我而言 该标题通常有 3 4 层深度 如果没有上面的项目符号 就没有意义 似乎也没有办法可以轻松改变这一点 过
  • 如何使用 emacs prettify-symbols-mode?

    我有 emacs 版本 25 0 我启用prettify symbols mode 然后输入 lambda t 但它并不能美化 我该如何使用这个模式 还有哪些符号可用以及如何配置它 任何参考都值得赞赏 Edit 什么也没发生在scratch
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • 通过 Emacs 评估 ghci 或 Hugs 中的缓冲区

    在 Emacs 中使用 sml mode 我已经能够使用以下命令将缓冲区内容直接发送到较差的 SML 进程C c C b 现在我只想用 Haskell 做同样的事情 Haskell 模式似乎不支持这一点 所以我想知道 使用 Emacs 和
  • 带有 Viper 和 Vimpulse 的 Emacs 缺少哪些 Vim 功能?

    Emacs 的一些重要功能在 Vim 中是缺失的 例如 comint 模式 并且没有脚本 插件可以替代它们 与 Emacs 相比 Vim 也有一些优点 例如模式编辑和通常更好的默认快捷键 然而 Viper 模式让我两者兼而有之 Vimpul
  • Emacs/Swank/Paredit for Clojure 的温和教程

    我要转向 Emacs 来工作Clojure http en wikipedia org wiki Clojure Lisp 为了能够执行以下操作 我需要在 Emacs 上设置哪些信息 自动匹配 生成相应的右括号 自动缩进 Lisp Cloj
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell
  • 如何使用 Emacs 通过 HTTP 打开远程文件?

    大多数开源软件都通过某些 HTTP 服务公开其代码 我想从 Emacs 打开并浏览此类代码 但 AFAICS trapmp 只允许ssh and ftp 因此 我的第一个问题是如何打开 HTTP URL 以便在 Emacs 中进行读取 然后
  • C# 开发人员有什么理由应该学习 Emacs/Vim 吗?

    我在一家纯粹的 Microsoft 商店担任 C 开发人员 最近 我开始在工作之余的空闲时间使用 Gas 和 Linux 自学汇编 我喜欢摆弄 Linux 尽管我对它还很陌生 我一直听说我应该学习 VIM 或 Emacs 但事实是 我绝对不
  • emacs 中 ansi term 中的奇怪字符

    我编写了一个 C 程序 当我在 ansi term 中使用 g 编译它时 显示了一些奇怪的字符 如果需要 错误是我没有声明变量 n 我该如何纠正这个问题 啊 测试了这个 setq locale coding system utf 8 set
  • SBCL初始化文件

    我想知道应该在哪里保存 sbclrc 文件 我尝试将其保存在我的 sbcl 文件夹中 但它似乎不起作用 我使用的是 Windows XP 和 Emacs 版本 23 我正在尝试设置 asdf install 这就是为什么我要修改初始化文件
  • Mac 上的 Emacs 和 MySQL

    我尝试使用 sql mysql 模式 但 emacs 无法找到文件 目录 mysql 但是 我可以从终端访问它 如何将 emacs 中的 mysql 指向 usr local mysql bin mysql setq sql mysql p
  • Emacs 打字骨架对插入也许

    在 Eclipse 中 编辑 Java 代码时 如果我输入一个左括号 我会得到一对括号 如果我然后 输入 第二个括号 它不会插入额外的括号 我如何在 emacs 中得到它 Eclipse 编辑器足够聪明 当我输入闭括号时 它知道我刚刚完成了
  • 复制粘贴在命令提示符下不起作用,在 Windows 10 中右键单击或键盘快捷键都不起作用 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Win 10 复制粘贴在 cmd 中无法通过右键单击或键盘快捷键来工作 如果我尝试在提示中粘贴一些文本 什么也不会发生 我不知道原因 有什
  • Emacs 是否具有单词和行补全功能(如 Vim 的插入模式补全功能)?

    Vim 完成单词和行CTRL X P and CTRL L 有一个名为 Company mode 的 Emacs 插件 但该插件会干扰 Emacs 中的许多内容并导致冲突 与全局 linum 和 yasnippets 我知道我可以在 Ema
  • 对齐 emacs lisp 中的正则表达式

    我正在尝试使用以下 elisp 函数来对齐文本 defun align Align lines by interactive align regexp region beginning region end 我正在尝试对齐以下文本 offe
  • 如何让Emacs显示与实际存储的不同的字符?

    我想使用Elisp为Emacs实现动态文本替换 仅替换显示 不替换实际存储的文件 例如 在 LaTeX 文档中 我想输入 alpha 然后让 Emacs 将其显示为 因此更容易阅读 但在结果中 tex文件 我还想要 alpha 代替 被拯救

随机推荐

  • Rollup:从外部模块捆绑/嵌入 wasm 代码

    使用 rollup 我尝试捆绑一个 typescript 库 该库导入并调用包含 wasm 文件的 npm 模块 只有生成的包不包含 wasm 文件内容的痕迹 我怎样才能强制它捆绑网络程序集 这是我尝试过的关键文件 typescript s
  • 深度查找或搜索 JSON 中任何级别的键并替换其在 C# 中的值

    我也被一个问题所困扰 我能够将嵌套的 JSON 转换为 key Value 但现在我想将其转换回原来的 json 格式 由于我的问题 我无法使用 C 对象模型来执行此操作 因为我拥有的 JSON 文件是动态的 并且其结构会随着时间的推移而变
  • Ruby Webrick HTTP 身份验证

    我怎样才能做同样的身份验证工作这一页 http microjet ath cx webrickguide html HTTP Authentication html使用这样的子类 class Configuration lt HTTPSer
  • 为什么 std::iterator 被弃用?

    模板类std iterator http en cppreference com w cpp iterator iterator在 C 17 中已被弃用 为什么这样 这是一个方便的方法来确保std iterator traits http
  • d3.js v4,如何在鼠标悬停时有一条线跟随鼠标,同时也有一个圆圈跟随路径?

    这是我的 js 小提琴 https jsfiddle net DerNalia 3wzLv9yg 1 https jsfiddle net DerNalia 3wzLv9yg 1 我一直在尝试从这里解释代码 带有鼠标悬停工具提示的多系列折线
  • Bootstrap打印CSS去除背景颜色

    当我使用引导程序时 当我尝试打印页面时 它会从所有内容中删除背景颜色 我网站上的几乎所有内容都使用引导类 因此我想避免在引导程序之外使用大量手动 CSS 我发现 bootstrap 使用 media print删除背景颜色 我也使用引导主题
  • std::integral_constant 的否定

    抱歉问了这么简单的问题 但我无法轻松找到答案 谷歌没有说任何关于 C 否定积分常量 和类似查询的有趣内容 C 11 中是否有任何特征使得std true type from std false type反之亦然 换句话说 我想要一些更具可读
  • 使用模拟获取所有日志输出

    我想用模拟获取所有日志输出 我搜索过 但是 只找到了显式模拟logging info或logging warn的方法 我需要所有输出 无论设置的日志记录级别如何 def test foo def my log logs append wit
  • Nginx 重定向到错误的虚拟主机

    我的一个 nginx conf 文件中有大约 1300 个虚拟主机 所有这些都具有以下布局 它们在虚拟主机文件中依次列出 现在我的问题是有时我的浏览器将 site2 重定向到 site1 由于某种原因 域名不匹配 看起来 nginx 总是重
  • 如何使用 Python IMAP 从 Gmail 邮件中删除“来自无人”和“内容类型”?

    尽管我在从很多网站进行大量搜索后完成了大部分工作 但我仍然无法获得我想要的正确输出 Code import imaplib import smtplib import email mail imaplib IMAP4 SSL imap gm
  • 使用自定义任务工厂创建但不启动任务?

    我希望能够在不启动任务的情况下创建任务 类似于运行var a new Task a Start 但有一家定制工厂 工厂提供StartNew 但我找不到分离这两个动作的方法 这可能吗 A TaskFactory基本上是两组默认选项 创建和继续
  • 保存 H2o 数据帧

    我正在使用 10GB 的训练数据框 我使用 H2o 库来加快计算速度 每次加载数据集时 我都应该将数据帧转换为 H2o 对象 这需要花费很多时间 有没有办法存储转换后的 H2o 对象 这样我每次在构建模型时都可以跳过 as H2o trai
  • SwiftUI:清除模态状态或重新初始化

    我有一个 SwiftUI 模式 我想清除其状态或重新初始化 考虑到此模式可以打开可能具有某种状态的其他模式 重新初始化将是首选 这是一个简单的例子 import SwiftUI struct OtherView View State var
  • “fast_abs_path”在什么方面“危险,但可能更快”?

    The Cwd 模块的文档 http perldoc perl org Cwd html abs path and friends指出fast abs path是 更危险 但可能更快的版本abs path 它在什么方面有危险 在什么情况下它
  • 如何在具有不同类型值的 Map 中使用泛型

    我有一个通用的Command界面 public interface Command
  • 作为开发人员,您对普通 Windows 安装进行了哪些更改?

    当我获得一个普通的 Windows 系统时 我会更改很多内容以使其对开发人员更加友好 其中一些事情我每次都会记得 而另一些事情我只是偶尔做 例子 显示所有文件类型的扩展名 使隐藏文件和系统文件可见 关闭 Windows Defender 我
  • C# 重写字典ContainsKey

    我只是找不到任何合适的代码来完成我需要的事情 我在用着Dict ContainsKey但由于我总是创建我需要查找的密钥 因此 ContainsKey 总是为 false 因为 hashKey 不同 并且我创建了我想要一直检查的密钥 有人可以
  • 基于另一个“True”/“False”列表选择列表的元素

    我有两个长度相同的列表 第一个包含字符串 第二个 字符串可以是 True or False 如果第二个列表的第 n 个元素是 True 我想将第一个列表的第 n 个元素附加到另一个列表 所以如果我有 List1 sth1 sth2 sth3
  • jQuery prevUntil() 包括开始选择器和结束选择器

    我想为 prevUntil 或 nextUntil jQuery 选择器方法选择开始和结束选择器 如果我现在实现这些方法 它会获取给定的两个选择器之间的所有内容 i e p prevUntil h1 不会包含 p 和 h1 元素 仅包含它们
  • emacs 终端模式:如何有效地复制和粘贴

    我很难让这个 emacs nw 在终端模式 emacs nw 下有效工作 一些设置信息 工作服务器通过 SSH 连接 emacs 运行在服务器上 通常我使用 SSH 和 emacs nw 进行连接来处理我的文件 emacs 配置取自 htt