Существует гораздо более простое решение, чем использование мыши или жестко настроенных отображений движения; они сломаются, если нумерация окон отличается от того, что вы имеете в виду для матрицы 3х3, или если вы решите работать с менее чем 9 окнами. Вот как:
Включите в ваш .vimrc
следующее:
let i = 1
while i <= 9
execute 'nnoremap <Leader>' . i . ' :' . i . 'wincmd w<CR>'
let i = i + 1
endwhile
Теперь вы можете просто нажать <Leader><number>
и перейти к нужному номеру окна. Я бы не рекомендовал выходить за пределы 9, потому что IMO, утилита с несколькими окнами просмотра, следует за распределением Рэлея и быстро становится бесполезной при слишком большом количестве окон просмотра в одном окне.
Будет полезно, если у вас есть номер окна, отображаемый в вашем statusline
, чтобы помочь вам быстро выяснить, в каком окне вы находитесь и в какое окно вы хотите перейти. Чтобы сделать это, используйте эту маленькую функцию и добавьте ее соответственно в statusline
.
function! WindowNumber()
let str=tabpagewinnr(tabpagenr())
return str
endfunction
См. Это в действии в вашем statusline
:
set laststatus=2
set statusline=win:%{WindowNumber()}
Обратите внимание, что вышеуказанная строка заменит ваш statusline
. Он был предназначен только для иллюстрации, чтобы показать, как вызывать функцию. Вы должны разместить его там, где считаете нужным, в вашем statusline
. Вот как выглядит моя шахта:
EDIT:
romainl попросил мою строку состояния в комментариях, поэтому вот она:
"statusline
hi StatusLine term=bold cterm=bold ctermfg=White ctermbg=235
hi StatusHostname term=bold cterm=bold ctermfg=107 ctermbg=235 guifg=#799d6a
hi StatusGitBranch term=bold cterm=bold ctermfg=215 ctermbg=235 guifg=#ffb964
function! MyGitBranchStyle()
let branch = GitBranch()
if branch == ''
let branchStyle = ''
else
let branchStyle = 'git:' . branch
end
return branchStyle
endfunction
function! WindowNumber()
let str=tabpagewinnr(tabpagenr())
return str
endfunction
set laststatus=2
set statusline=%#StatusLine#%F%h%m%r\ %h%w%y\ col:%c\ lin:%l\,%L\ buf:%n\ win:%{WindowNumber()}\ reg:%{v:register}\ %#StatusGitBranch#%{MyGitBranchStyle()}\ \%=%#StatusLine#%{strftime(\"%d/%m/%Y-%H:%M\")}\ %#StatusHostname#%{hostname()}
Последняя строка должна быть одной строкой (будьте осторожны, если ваша установка автоматически разбивает ее на несколько строк). Я знаю, что есть способы сохранить это организованным с постепенным объединением строк на каждом шаге, но я слишком ленив, чтобы изменить это. :) Функция GitBranch()
(с другими возможностями git) предоставляется плагином git.vim . В нем есть ошибка, как отмечено здесь , и я использую вилку с исправлением ошибки . Однако я оставляю здесь обе ссылки и блог, чтобы отдать должное всем.
Также обратите внимание, что я использую темный фон, поэтому вам, возможно, придется немного изменить цвета, если вы используете светлую схему (а также по своему вкусу).