【发布时间】:2012-07-27 17:29:08
【问题描述】:
在 shell 中,我使用以下函数创建文件列表并将其传递给 vim。
感觉不错,但我丢失了行引用,我以正确的顺序打开文件,但是当光标从第一行开始时,我必须再次搜索文本。
~/.bashrc 上的实际函数
function vimgrep(){
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' | grep -v 'Test\|test'` +ls
}
function vimgrep2(){
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' ` +ls
}
Obs.: filelist 必须来自 shell 到 vim,然后它必须保留缓冲文件的行引用,就像 :make 捕获任何错误时的结果一样(但没有底部窗口 [:cwindow] )。
编辑: 好的...不是那么优雅,但我可以将搜索到的字符串作为 +/"$1" 传递给 vim,例如:
vim `grep -IR "$1" * | awk -F: '$1!=f{print ""$1"";f=$1}' ` +/"$1"
如果脚本不使用临时文件会更好。
【问题讨论】:
-
在黑暗中拍摄,但您可以将行地址写入
list_of_lines并以-q list_of_lines启动vim。