Search 在vim中搜索并替换被拖动文本的内容
在我的vimrc中,我有一个快捷方式可以将文件名及其路径复制到剪贴板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 @* =
: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
hange命令需要c
,而{motion}
不是有效的。一般来说,我宁愿避免这种聪明的重载(只要还有其他未使用的映射前缀可用)p
:nnoremap cp :let @* = expand("%:gs?\\?/?")<CR>