как получить: bwipe * .ext чтобы стереть всех, кто соответствует шаблону в vim - PullRequest
1 голос
/ 18 августа 2010

Я часто хочу стереть все буферы, загруженные с заданным расширением (обычно файлы .rej, созданные патчем). Просто сделайте: bw [!] * .Rej будет жаловаться, если найдено более одного совпадения. У кого-нибудь есть хорошие советы? В настоящее время я либо постоянно использую: bw * .rej + tab-complete, либо, если буферов много, использую: ls и: bw набор буферов по номеру.

Ответы [ 2 ]

1 голос
/ 18 августа 2010

Глобировать в 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 голосов
/ 19 октября 2010

Кстати, в итоге я выбрал очень низкотехнологичное решение (лично мне нравится как можно меньше изменять vim, чтобы я чувствовал себя как дома на любой машине):

Я добавил отображение:

: карта: bw * .rej

Затем я несколько раз нажимаю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...