Vim разделен, если не открыт - PullRequest
7 голосов
/ 10 июля 2011

При использовании разделенных окон в VIM иногда я создаю новый разделенный файл, уже открытый в другом разделенном файле (обычно с помощью плагинов, которые открывают модульный тест для данного файла в новом разделенном разделе).

Есть ли способ, как переназначить команду разбиения, чтобы она проверяла, открыт ли файл перед разбиением, и, если это так, сфокусировалась на нем?

Ответы [ 3 ]

10 голосов
/ 10 июля 2011

Насколько я знаю, вы не можете переназначить существующую команду split, но вы можете добиться того же эффекта, написав новую функцию Split и затем используя сокращение в командном режиме (cabbrev).,

Вот функция / отображение, которая должна делать то, что вы хотите.

function! MySplit( fname )
    let bufnum=bufnr(expand(a:fname))
    let winnum=bufwinnr(bufnum)
    if winnum != -1
        " Jump to existing split
        exe winnum . "wincmd w"
    else
        " Make new split as usual
        exe "split " . a:fname
    endif
endfunction


command! -nargs=1 Split :call MySplit("<args>")
cabbrev split Split

Обратите внимание, что это будет «проверять» только существующие расщепления в текущей вкладке, а скрытые буферы игнорируются.(Тем не менее, не должно быть слишком сложно добавить дополнительные случаи для улучшения этой функциональности.)

3 голосов
/ 11 июля 2011

Альтернативой будет использование :drop {file}.

Edit the first {file} in a window.
- If the file is already open in a window change to that
    window.
- If the file is not open in a window edit the file in the
    current window.  If the current buffer can't be abandoned,
    the window is split first.

Также может быть полезно использование :sb для переключения буферов.См. vim: перейти в буфер?

Для получения дополнительной информации:

:h :drop
:h :sb
:h 'swb'
0 голосов
/ 11 июля 2011

Это одна из особенностей searchInRuntime .

:GSplit и :GVSplit могут быть переименованы, они поддерживают завершение имени файла, и они спросят, какой файл открыть, когда несколько соответствуют шаблону в &path.

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