2012-01-14 2 views
2

Чтобы найти все измененные файлы в Vim I ТипPiping вывод Vim команды для командной оболочки

:ls 

Это даст мне список, как так

2 h "index.html"     line 98 
3 h "Category/Category.Bg_S.js" line 1 
4 h "Category/Category.Box0_S.js" line 1 
5 + "Category/Category.Box10_S.js" line 1 
6  "Category/Category.Box11_S.js" line 1 
7 + "Category/Category.Box12_S.js" line 1 

Но если есть слишком много буферов это может быть утомительным. То, что я думал делать было бы что-то вроде:

:ls !grep + 

к трубе содержимое ВИМ-х ls для командного интерпретатора grep функции. Но это не работает. Поэтому у меня есть 2 вопроса:

  1. Как узнать список всех измененных файлов?
  2. Если есть более легкое решение для 1), то как бы я по какой-либо причине передал вывод команды vim команде оболочки?
+1

Что вы хотите делать с этими измененными файлами? – romainl

+0

@romainl Мне нравится видеть, какие файлы были изменены до выхода, а не слепо выдавать ': xa' – puk

ответ

2

Самый простой способ, вероятно, чтобы «перенаправить» вывод в VIM переменной, затем процеживают для модифицированных буферов:

function! GetModifiedBuffers() 
    redir => bufoutput 
    buffers " same as ls 
    redir END 
    return join(filter(split(bufoutput,'\n'),"v:val =~ '\\%8c+'"),'\n') 
endfunction 

Затем сделать что-то вроде :echo GetModifiedBuffers(), чтобы показать список измененных буферов.

Смежные вопросы