Search 在vim中搜索并替换被拖动文本的内容

Search 在vim中搜索并替换被拖动文本的内容,search,vim,replace,clipboard,Search,Vim,Replace,Clipboard,在我的vimrc中,我有一个快捷方式可以将文件名及其路径复制到剪贴板 :nmap cp :let @* = expand("%") 这个很好用。现在,我想把这个被拉出来的文本的内容替换为 1) replace \ with / 2) remove certain words from the yanked text. 我熟悉常规文本上的搜索和替换,但我不知道如何在每次使用快捷方式时更改我的vimrc条目,以便在拖动文本上执行此操作 那么,像这样的事情 :nmap cp :let @* =

在我的vimrc中,我有一个快捷方式可以将文件名及其路径复制到剪贴板

:nmap cp :let @* = expand("%")
这个很好用。现在,我想把这个被拉出来的文本的内容替换为

1) replace \ with /  
2) remove certain words from the yanked text.
我熟悉常规文本上的搜索和替换,但我不知道如何在每次使用快捷方式时更改我的vimrc条目,以便在拖动文本上执行此操作

那么,像这样的事情

:nmap cp :let @* = expand("%") || %s/\\/\/ || %s/<word>//
:nmap cp:let@*=展开(“%”)\\\\/\\/\\\/\\\\\\\/\\\\\\\\\\\\\\\\%s///

我正在windows上使用gvim。

:substitute
命令对缓冲区内容本身起作用;这在这里不太有用。(您可以暂时
:放入
寄存器/文件名,转换它,然后
:删除
它(返回)到寄存器中。)幸运的是,有一个等效的低级函数可以应用于字符串:

:nnoremap cp :let @* = substitute(expand("%"), '\\', '/', 'g')<CR>
要额外删除
,可以使用另一层
替换()
/附加另一层
:gs???
。我把这个留给你

附加评论
  • 您的映射缺少结束命令行模式的尾部
  • );它使映射不受重映射和递归的影响
  • %
    相对于当前工作目录。如果您需要完整的绝对路径,可以通过
    %:p
    获得
  • c
    开始映射是非常规的。这里没有问题,因为
    c
    hange命令需要
    {motion}
    ,而
    p
    不是有效的。一般来说,我宁愿避免这种聪明的重载(只要还有其他未使用的映射前缀可用)

谢谢您,好心的先生!我使用替换和扩展。它很好用。替换(展开(“%:gs?\\?/?”,“,”,“g”)谢谢您的评论。我也把它们修好了。
:nnoremap cp :let @* = expand("%:gs?\\?/?")<CR>