如何从 Vim 中发送转义序列?

2024-05-25

因此,最近苹果公司支持在终端的状态栏中显示工作目录和文件。必须发送的转义序列(以设置当前文件)是这样的:

ESC ] 6 ; Pt BEL

where Pt is a file://url 指向当前正在编辑的文件。所以我想我可以让 Vim 发送这个命令作为转义序列,但我遇到了一些麻烦。到目前为止我有这个:

au BufNewFile,BufReadPost,BufFilePost,BufWritePost * echo <escape sequence>

但我有一种感觉,事情不会那么顺利。另外,我不知道如何获取当前文件作为file://url,尽管我怀疑 netrw 可能能够帮助我。有任何想法吗?

Edit

到目前为止,我有这个:

au BufNewFile,BufReadPost,BufFilePost * echo printf('\e]6;file://%s%s\a', $HOSTNAME, expand('%:p'))

但它仍然不起作用 -$HOSTNAME没有得到扩展。有人对如何扩展此内容有任何建议吗?

Edit 2

好的,我对报价做了一些更改并导出$HOSTNAME,现在打印效果很好。但是 vim 并没有直接回显转义序列,而是像这样打印它们^[,这使得它们毫无用处!所以我真正的问题来了:如何让 vim 将文字转义序列发送到 shell?

Success!

最终代码如下:

set title
set t_ts=^[]6;
set t_fs=^G
auto BufEnter * let &titlestring = "file://" . hostname() . expand("%:p")

您可以使用!echo -ne <ESCAPE SEQUENCE>在 vim 中。为了将它与包含变量的标题字符串一起使用,execute可以加前缀。

execute "silent !echo -ne " . EXPRESSION

但老实说,没有必要推出自己的命令。相反,您可以按照说明操作这两个变量here http://vim.wikia.com/wiki/Automatically_set_screen_title.

't_ts' 和 't_fs' 选项用于设置窗口标题(如果终端) 允许通过发送字符串设置标题。它们在发送之前和之后发送 分别是标题字符串。类似的't_IS'和't_IE'用于设置 图标文本。这些是 Unix termcap 的 Vim 内部扩展,因此它们 无法从外部 termcap 获取。但是,内置 termcap 包含 xterm 和 iris-ansi 的合适条目,因此您不需要设置 他们在这里。

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

如何从 Vim 中发送转义序列? 的相关文章

  • 如何在 vim 中覆盖 ~/.vim 和 ~/.vimrc 路径(但不能覆盖其他路径)?

    假设我有一个所有 vim 配置的 tarball 通常在 vim 中的所有内容 插件 自动加载 颜色 所有这些东西 和一个 vimrc 文件 我将其提取到某个目录中 所以在我所在的目录 PWD 中 有一个 vim 文件夹和一个 vimrc
  • 不将所需的文件包含到 vim 全方位补全中

    如果我尝试在具有 require xxx 语句的 Ruby 文件中自动完成 它会开始扫描所需的所有文件 以及所需文件所需的文件 它每次都会这样做 是否可以使 vim 自动完成功能不扫描所需文件或仅扫描特定路径中的文件 例如仅 app 以下之
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • Vim 和 snipMate(插件)- 添加新代码片段不起作用

    我正在尝试为我的 snipMate 插件创建一个新的片段 我使用一些名为 即 myfile endfile 的文件 所有 endfile 文件都应具有与 html 文件相同的 片段 所以我做了 cp html snippet endfile
  • vim e518:未知选项:

    我在 UNIX 系统上有一个文本文件 以下文本文件内容会产生问题 good ok line vi bad line ok ok line 所以如果我运行 vim test txt 我收到以下错误 test txt 3L 39C Error
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • 如何在 vim 中为 cscope 输出添加颜色?

    我使用的是 vim 7 4 vim 中的 cscope 输出全是白色 可以变得更加丰富多彩吗 我尝试了cecscope 它使用quickfix给vim带来颜色 但它的输出不适合小屏幕 使用笔记本电脑时它没有那么有用 那么还有其他方法可以为
  • 在 vim 中设置文本宽度而不覆盖特定于文件类型的内容

    我希望 vim 中默认的文本宽度为 80 但如果特定文件类型有自己的文本宽度 特别是 gitcommit 其中 tw 72 我希望 vim 尊重该宽度 在我的 vimrc 中 我有以下行 set tw 80 我也尝试过 setlocal t
  • Vi/vim - 从末尾行删除,包括最后一个字符

    我想做类似这个问题的事情VI VIM 删除 更改从右到左 https stackoverflow com q 9154212 301527即从行尾删除到该行中 的最后一个实例 这可以使用dT 将光标放置在该行的末尾 然而 这个命令和其他这样
  • 如何在 Vim 中使 shift+空格键向上翻页?

    我的 vimrc 中有一个条目 当我按空格键时 它会在视口中向下翻页 它看起来像这样 map
  • Vim 中最近的文件历史记录?

    我想访问最近在 GVim 中打开然后关闭的文件 我经常打开和关闭 GVim 我也想访问以前会话中的最新文件 GVim 是否将最近的文件存储在 Word 和许多其他桌面应用程序存储的位置 如何访问它们 至少终端 vim 将前十个文件存储到 v
  • 如何使用 VIM 进行 .Net 开发 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Vim ":source %" 命令导致错误 (E499)

    Stack Overflow vim 用户大家好 我最近发现自己花了相当多的时间在学校的计算机科学实验室编写代码 我在无数的linux系统上配置过vim 从来没有遇到过这个错误 E499 Empty file name for or onl
  • 如何在 Vim 中创建带有控件和功能键的映射?

    我想要一个映射来快速退出所有缓冲区 以便在我对大量文件进行 vimdiff 时使用 事实证明 Control 和功能键在一起具有很好的安全性 这样我就不会不小心按下这个组合 无意中离开 Vim 我尝试了以下映射 map
  • Vim:设置 ctag 很困难。子目录中的源代码在项目根目录中看不到标签文件

    我今天试图在 Vim 上设置 丰富的 ctags 但很难让它正常工作 我在命令行上使用以下命令生成 ctags 文件 cd myproj ctags R 这会将标签文件放在 myproj 根目录中 然而 当我处理位于根目录中的源代码时 Vi
  • 通过列表字符仅显示前导空格的“空格”字符

    Vim 中是否可以有我的编辑器 编辑时 c and h文件 显示通过listchars 一个特殊字符 仅用于leading空格字符 我发现一个单独的帖子指出 从版本 7 4 开始 Vim 现在支持通过以下方式突出显示所有空格字符listch
  • vim 中的语法高亮

    当我在 vim 中打开语法颜色时 我无法在黑色上阅读深蓝色 如何更改一些默认颜色或模式颜色 例如 http www vim org scripts script php script id 1571 http www vim org scr
  • 在 Vim 中撤消光标移动

    假设我的光标位于下面的代码中 internal static SingleSelectList
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 代码折叠未保存在我的 vimrc 中

    我将以下代码添加到我的 vimrc 中 save and restore folds when a file is closed and re opened autocmd BufWinLeave mkview autocmd BufWin

随机推荐