Vim: нужна функция для переключения на активный буфер по имени - PullRequest
0 голосов
/ 31 августа 2018

Скажем, у меня в терминальном буфере открыто окно с необходимыми размерами буфера и т. Д. Я хотел бы переключиться на окно, где оно открывается с помощью горячей клавиши. Я могу сделать это с помощью какого-нибудь большого плагина 'Denite':

function! FocusBufOrDo(arg,cmd)
  if buflisted(bufname(a:arg))
    " exec 'buffer ' . a:arg
    exec 'Denite buffer -default-action=switch -mode=normal -immediately-1 -input=' . a:arg 
  elseif !empty(a:cmd)
    " echo 'No such buffer'
    exec a:cmd
  endif 
endfunc

nnoremap <Leader>c :call FocusBufOrDo('/usr/bin/bash','term')<CR>
nnoremap <Leader>gi : call FocusBufOrDo('gist:','tabe \| Gist bf39XXXXXXXXXXXXXXXXX5')<CR>

Теперь я хочу, чтобы выделенная функция выполняла переключение. Плагины Tselectbuffer или tlib обладают такой функциональностью, но я не могу их разорвать. Буду очень признателен, если вы сделаете это для меня =)

1 Ответ

0 голосов
/ 02 сентября 2018
" Run through the list of buffers,
" match buffer's filename with the argument,
" switch to the 1st window, if found.

function! GotoWindowByFileName(name)
   for b in getbufinfo()
      if b.name =~ a:name
         call win_gotoid(b.windows[0])
         return
      endif
   endfor
endfunction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...