例如,我有一個任務,搜索當前目錄下包含「foo」的所有文件,然後替換爲「bar」。
現在,這裏是我目前的解決方案:
:vim /bar/ **/*
使用該搜索的foo
悉數亮相,然後逐一更換一個「棒」
:s/foo/bar/gc
顯然,這是不是一個很好的解決方案在更換變大。所以如果有更好的解決方案將這兩種操作合併爲一種。但是有一個先決條件:必須在更換之前給出提示,就像c
在第二個命令中所做的一樣。這是防止替換一些不需要替換的詞。如何結合:vim和:vim中的:s
0
A
回答
3
公開賽在vim的所有文件:
$ vim *
更換foo
與bar
:argdo %s/foo/bar/ | update
教程:http://vim.wikia.com/wiki/Search_and_replace_in_multiple_buffers
0
最簡單的將是:
vim $(egrep -l '/foo/' **/*) -c 'bufdo %s/foo/bar/g'
但是如果文件名上有空格,這將失敗,更可靠的方法是:
files=()
while IFS= read -rd '' filename; do
files+=("$filename")
done < <(egrep -Zl '/foo/' **/*)
vim "${files[@]}" -c 'bufdo %s/foo/bar/g'
相關問題
- 1. C,I和S命令組合在VIM
- 2. 如何在vim中合併vim命令行和狀態行
- 3. vim iabbrev S自我
- 4. 如何使用<S-Up>&<S-Down>在Terminal.app和VIM
- 5. 如何結合:b和:ls在Vim中的功能?
- 6. vim如何支持C/S模式?
- 7. VIM:結合兩個搜索
- 8. 如何結合Vim和Pydiction的自動完成功能?
- 9. Vim supertab和jedi-vim
- 10. vim <C-S-Key> mapping
- 11. 如何設置合成vim?
- 12. 在vim中結合filetype命令?
- 13. 在vim中結合寄存器
- 14. 什麼是:%S在vim中做什麼?
- 15. 如何在Vim中
- 16. 如何在Vim中
- 17. 如何在Vim中
- 18. 如何在Vim中
- 19. 如何在Vim中
- 20. 如何在Vim中
- 21. 如何修復Vim中的Home和End?
- 22. vim中的C,cc和S命令有什麼區別
- 23. vi/vim中的s,c和r命令有什麼區別?
- 24. 如何在Vim中使用兩個寄存器替代:s
- 25. 如何在tpope/vim-surround中將'S'更改爲's'VIM
- 26. 如何在ViM中取消C-s C-x?
- 27. 如何結合vim wiki插件的兩個特性?
- 28. 如何在VIM
- 29. 如何在vim
- 30. 如何在vim