在我的
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不是有效的.一般来说,我宁愿避免这种聪明的重载(只要你还有其他未使用的映射前缀仍然可用).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。