我经常想要擦除加载了给定扩展名的所有缓冲区(通常是由补丁生成的.rej文件)。只是在做:bw [!] * .rej会抱怨如果有多个匹配。有没有人有任何好的提示?目前我要么重复使用:bw * .rej + tab-complete,或者如果有很多缓冲区,请使用:ls和:bw一组数字的缓冲区。如何获得:bwipe * .ext擦除匹配vim中的通配符的所有人
1
A
回答
1
在vim中泛化有点困难(除了文件系统上的文件)。因此,最好的方法似乎是将通配符转换为正则表达式,然后检查缓冲区列表中的每个缓冲区以查看它是否匹配。事情是这样的:
" A command to make invocation easier
command! -complete=buffer -nargs=+ BWipe call BWipe(<f-args>)
function! BWipe(...)
let bufnames = []
" Get a list of all the buffers
for bufnumber in range(0, bufnr('$'))
if buflisted(bufnumber)
call add(bufnames, bufname(bufnumber))
endif
endfor
for argument in a:000
" Escape any backslashes, dots or spaces in the argument
let this_argument = escape(argument, '\ .')
" Turn * into .* for a regular expression match
let this_argument = substitute(this_argument, '\*', '.*', '')
" Iterate through the buffers
for buffername in bufnames
" If they match the provided regex and the buffer still exists
" delete the buffer
if match(buffername, this_argument) != -1 && bufexists(buffername)
exe 'bwipe' buffername
endif
endfor
endfor
endfunction
它可以作为:
:BWipe *.rej
或:
:BWipe *.c *.h
+0
这非常有帮助,谢谢! – Luke 2010-08-20 16:48:01
0
顺便说一句,我结束了一个非常低技术的解决方案去(我个人喜欢尽可能少的修改vim以便我在任何机器上都可以):
我添加了一个映射:
:地图<比照>:BW *名为.rej
后来我反复按 <比照> <标签> <CR>
+0
听起来合理。通过在可用的任意版本控制下保留整个'.vim'(或Windows上的vimfiles)和vimrc,我可以绕过“在任何机器的家中”问题。这样,我所做的任何更改都会被推送到我正在使用的任何一台机器(或USB存储棒)。 – DrAl 2011-01-11 18:00:48
相关问题
- 1. 如何从word文档中获得匹配通配符的所有字符串
- 2. 模式匹配中的Scala擦除
- 3. 匹配除匹配(多字)模式以外的所有字符
- 4. 如何在VIM中获得更好的支架匹配/对齐?
- 5. 狮身人面像通配符匹配
- 6. 使用XPath函数擦除所有匹配内容
- 7. 如何列出easymotion vim中的所有匹配
- 8. 如何在正则表达式中获得通配符的匹配部分?
- 9. 如何获取字符串中所有匹配的位置?
- 10. 删除所有匹配类中的jQuery
- 11. 如何获得所有匹配regex1的字符串后跟一个字符串?
- 12. 如何获得字符串中正则表达式的所有匹配?
- 13. awk,第4列所有匹配通配符之前的@
- 14. 如何在Vim中删除所有匹配模式和行的行?
- 15. 除匹配值外,我如何匹配所有内容?
- 16. 如何获得所有可能的匹配std :: regex
- 17. 如何获得与MongoDB $ elemMatch的所有匹配?
- 18. 如何获得通过通配符
- 19. 如何删除不匹配通配符的文件?
- 20. 删除所有匹配键
- 21. 如何获得仅匹配字符的第一个字符匹配结果
- 22. Vim语法高亮文件:如何匹配所有出现的字符/符号?
- 23. 如何匹配除逗号以外的所有特殊字符
- 24. PHP如何找到字符串后匹配/通配符/匹配
- 25. .NET路由匹配所有模式(通配符),但有例外
- 26. 如何匹配R中的所有匹配项?
- 27. 如何匹配Regex中特定模式的所有匹配项?
- 28. 如何匹配排除特定字符的序列中的所有字符?
- 29. 正则表达式:如何匹配字符串中@something的所有匹配项
- 30. 还有就是得分的通配符匹配和精确匹配之间的不匹配
听起来像是你可能需要编写(或发现)一个插件来做到这一点。 :bwipe只会像你所经历的那样需要一个'bufname'。 – cam 2010-08-17 21:59:19