vim - Vim 中当前缓冲区的 Yank 文件名/路径

标签 vim clipboard yank

假设当前缓冲区是一个打开编辑的文件,因此:e不会显示E32: No file name

我想撤回以下一项或全部:

  • 文件名与状态行上显示的完全相同,例如~\myfile.txt
  • 文件的完整路径,例如c:\foo\bar\myfile.txt
  • 只是文件名,例如myfile.txt

最佳答案

TL;DR

:let @" = expand("%")

这会将文件名复制到未命名的寄存器,然后您可以使用旧的 p粘贴它。当然,您可以将其映射到一个键以便更快地使用。

:nmap cp :let @" = expand("%")<cr>

您也可以使用它作为完整路径

:let @" = expand("%:p")

说明

Vim 使用未命名寄存器来存储已删除或复制(拉出)的文本,同样,当您粘贴它时,也会从该寄存器中读取文本。

使用let我们可以使用:let @" = "text"手动将文本存储在寄存器中但我们也可以存储表达式的结果。

在上面的示例中,我们使用函数 expand它扩展了通配符和关键字。在我们的示例中,我们使用 expand('%')扩展当前文件名。我们可以修改为expand('%:p')获取完整文件名。

参见:help let :help expand :help registers了解详情

关于vim - Vim 中当前缓冲区的 Yank 文件名/路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916875/

相关文章:

vim - 单个 vim 窗口中的不同背景阴影

vim - 文本编辑器-缩小到多个页面

c++ - 获取剪贴板数据(CF_TEXT)

vim:当我用执行命令拉出一个 block 时出现奇怪的问题

vim - 如何使用vim自定义缩进文件?

linux vi 编辑器特殊字符被转换成其他字符

ios - 使标签可复制

android - 当应用获得焦点时,何时检查 Android API 29 中的剪贴板内容?

function - 如何在 emacs lisp 函数中进行搜索

emacs - 在Emacs中的杀戮戒指中插入一些东西