2016-03-16 6 views
0

Я использую горячую клавишу для переключения буферов, и у меня есть проблема, что некоторые окна рисуются в главном окне, когда я перехожу через буферы.Как получить тип текущего окна в vim

Мне удалось отключить сопоставления для NERDTree, окна Quickfix и окна Tagbar, но мне всегда нужно имя окна, чтобы добиться этого с помощью автокоманды. Поиск имени окна в основном требует чтения через много файлов справки или даже плагинов источников, и это очень много времени: D

Например, я использую это для QuickFix окна:

augroup qf 
    autocmd! 
    autocmd FileType qf set nobuflisted 
augroup END 

Есть ли более простой способ получить имя текущего окна?

+0

Вы можете также проверьте, что '& buftype' пуст (« обычные »буферы) или нет (специальные буферы), и просто переключайтесь между обычными. Не знаю, как NERDTree или Tagbar устанавливают свои буферы, но меня не удивит, если их тип «nofile» или что-то подобное. – VanLaser

+0

Это также интересно, спасибо, что упомянули об этом. – mw88

ответ

1

Буферное имя: :echo @%. Тип файла: :echo &ft. Буферный номер: echo bufnr(@%).

+0

: echo & ft - это именно то, что я хочу, спасибо. – mw88

1

Я не уверен, что вы говорите о vim's window или buffer.

Есть ли более простой способ получить имя текущего окна?

окно ВИМ имеет winnr, вы можете получить его, вызвав функцию winnr(), то же самое для буфера Н.Р., получить текущий номер буфера: bufnr('%') и получить имя текущего буфера (имя файла) bufname('%')

+0

Благодарим вас за ответ. Функции, которые вы имеете в виду, хороши для получения информации в скриптах, но мне нужно знать тип файла в буфере. Я не знал, что filetype - это информация, которая мне нужна, пока я не прочитаю ответ выше: D – mw88

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