加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在vim中搜索和替换被拔出的文本的内容

发布时间:2020-12-16 01:44:46 所属栏目:安全 来源:网络整理
导读:在我的 vimrc中,我有一个快捷方式来复制文件名及其路径到剪贴板. :nmap cp :let @* = expand("%") 这很好用.现在,我想将此抽出的文本的内容替换为 1) replace with / 2) remove certain words from the yanked text. 我熟悉常规文本的搜索和替换,但是当我
在我的 vimrc中,我有一个快捷方式来复制文件名及其路径到剪贴板.

:nmap cp :let @* = expand("%")

这很好用.现在,我想将此抽出的文本的内容替换为

1) replace  with /  
2) remove certain words from the yanked text.

我熟悉常规文本的搜索和替换,但是当我使用快捷方式时,我不知道如何更改我的vimrc条目以便每次在被拉动的文本上执行此操作.

那么,这样的事情呢?

:nmap cp :let @* = expand("%") || %s/// || %s/<word>//

我在windows上使用gvim.

解决方法

:substitute命令对缓冲区内容本身起作用;那里没那么有用. (您可以暂时:放入寄存器/文件名,对其进行转换,然后:将其删除(返回)到寄存器中.)幸运的是,有一个等效的低级别 :help substitute()函数可以应用于字符串:

:nnoremap cp :let @* = substitute(expand("%"),'','/','g')<CR>

实际上,expand()直接支持特殊替换:help filename-modifiers,所以这也是一个(相当模糊)的解决方案:

:nnoremap cp :let @* = expand("%:gs??/?")<CR>

对于< word>的额外删除,您可以使用另一层substitute()/追加另一个:gs ???.我会留给你的.

额外的批评

>您的映射缺少尾随< CR>结束命令行模式.
> You should use :noremap;它使映射不受重映射和递归的影响.>%相对于当前工作目录.如果您需要完整的绝对路径,可以通过%:p获得.>用c开始映射是非常规的.这里很好,因为更改命令需要{motion},而p不是有效的.一般来说,我宁愿避免这种聪明的重载(只要你还有其他未使用的映射前缀仍然可用).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读