Vim中复制/剪切搜索匹配文本块至其他位置的方法及优化方案
Vim中搜索匹配内容的复制/剪切粘贴及优化方案
一、复制/剪切搜索匹配内容的操作步骤
假设你已经用搜索命令/<template>_.*template>定位到目标内容,操作如下:
- 选中匹配内容:按
gV快速选中上次搜索的整个匹配区域(比手动进入可视模式选择更高效) - 复制:按
y完成复制,移动光标到目标位置后,按p粘贴到光标后,P粘贴到光标前 - 剪切:按
d完成剪切,同样用p/P在目标位置粘贴
二、更优实现方式
1. 优化搜索命令
你的原始搜索命令仅能匹配单行内容,若要匹配多行的<template>块,需调整为:
/<template>\_.\{-}<\/template>
其中\_让.匹配换行符,\{-}是非贪婪匹配,避免误匹配多个<template>块。
2. 无需手动选中的复制/剪切
- 复制匹配内容:搜索到目标后,执行以下命令自动复制匹配块:
若要直接复制到系统剪贴板(需Vim支持剪贴板功能),可执行::normal! v//e<CR>y:let @+=matchstr(getline(1,'$'), @/)<CR> - 剪切匹配内容:把上述命令中的
y替换为d即可::normal! v//e<CR>d
3. 自定义快捷键简化操作
在~/.vimrc中添加如下映射,搜索后按<leader>cy即可快速复制匹配内容到剪贴板:
nnoremap <leader>cy :let @+=matchstr(getline(1,'$'), @/)<CR>
内容的提问来源于stack exchange,提问作者mayorbyrne
相关产品推荐
相关产品推荐

