Попробуйте что-то вроде этого:
\s[a-zA-ZΆΈ-ώἀ-ῼ]{2}\s
Для этого существует скрипт в Vim wiki . Я не думаю, что есть встроенная программа, которая делает то, что вы хотите.
Последняя версия vim-bufkill находится на github .
Я не думаю, что есть один способ сделать это, но вы можете сделать :enew
или :ls
, чтобы перечислить ваши буферы и обменять на другой, используя :b [number]
.
Как только у вас есть другой буфер в окне :bd #
, вы удалите предыдущий буфер в окне, и поскольку текущий буфер все еще существует, окно не будет закрыто.
Я искал это сегодня и придумал
:b#|bd#
, который изменяет текущее окно на ранее открытый буфер и удаляет / скрывает буфер, который вы только что отключили от .
Для этого требуется, по меньшей мере, два известных буфера.
Если другое окно, кроме текущего, показывает тот же буфер, это все равно разрушит расщепление. Вы можете изменить все окна на ранее открытый буфер с помощью
:windo b#
Я добавил более подробную информацию о прежней команде, обсуждая отображение для нее (и некоторые подводные камни) в ответить на аналогичный вопрос .
:#b|#bd
Простое изменение команды буфера & amp; номер буфера в приведенном выше.
– Ashish
30 July 2015 в 12:35
Я использовал:
:bp<bar>sp<bar>bn<bar>bd<CR>
Но я нашел определенные случаи, когда он закрыл мое окно.
Недавно я заметил, что всегда использую это, когда я работаю над проектом, и мне нужно быстро открыть мой .tmux.conf
.zshrc
, прежде чем вернуться к работе.
Для этого использования , Мне лучше:
C-6
:bd#
, чтобы удалить предыдущий буфер (я отобразил он выглядит так: nnoremap <leader>d :bd#<CR>
) Позволяет мне управлять буфером, к которому я возвращаюсь, и чувствует себя более естественным.
nmap <leader>d :bprevious<CR>:bdelete #<CR>
Работает так, как должен, пока один буфер не будет открыт в нескольких окнах. Достаточно хорошо, если вы не хотите использовать большие скрипты там.
Изменить: это то, что я использую прямо сейчас:
function! BufferDelete()
if &modified
echohl ErrorMsg
echomsg "No write since last change. Not closing buffer."
echohl NONE
else
let s:total_nr_buffers = len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
if s:total_nr_buffers == 1
bdelete
echo "Buffer deleted. Created new buffer."
else
bprevious
bdelete #
echo "Buffer deleted."
endif
endif
endfunction
nmap <leader>d :ene<CR>:bd #<CR>
– caio
5 September 2012 в 19:41
Моим любимым решением для этого является плагин bufkill.vim ( GitHub ). Он предоставляет альтернативные версии различных команд :b
-prefix, которые работают так же, как и их аналоги, но оставляют окно открытым. Они отображают содержимое последнего видимого буфера или пустой / новый буфер, если ранее не было буфера.
Из документации:
When you want to unload/delete/wipe a buffer, use: :bun/:bd/:bw to close the window as well (vim command), or :BUN/:BD/:BW to leave the window(s) intact (this script).blockquote>
Для тех, кто использует NERDTree.
Исправляю это, используя этот плагин https://github.com/jistr/vim-nerdtree-tabs , и теперь я могу закрыть только buff / file / tab, не закрывая окно.
После того, как установленный выше плагин установлен, введите следующий код в мой .vimrc:
let g:nerdtree_tabs_autoclose=0
Описание для указанной выше переменной : Закрыть текущую вкладку, если в ней есть только одно окно, и это NERDTree (по умолчанию 1)
Дополнительная информация здесь: https://github.com/jistr/vim-nerdtree-tabs#configuration
Будет ли
:enew
делать то, что вы хотите? он будет редактировать новый, неназванный буфер в текущем окне, оставляя существующий файл открытым в любых других окнах.
Я думаю, что это то, что вы ищете
http://www.vim.org/htmldoc/windows.html#window-moving
Попробуйте следующее:
Посмотрите на свой идентификатор буфера, используя
:buffers
, вы увидите список буферов там, например
1 a.cpp
2 b.py
3 c.php
, если вы хотите удалить b.py из буфера
:2bw
, если вы хотите удалить / закрыть все из буферов
:1,3bw
Я немного испортил это и, наконец, придумал:
blockquote>
:bp | sp | bn | bd
Вот версия копирования / вставки для сопоставления клавиш:
blockquote>
:bp<bar>sp<bar>bn<bar>bd<CR>
Я проверил это честно, и он работает последовательно в различных условиях. При использовании в последнем буфере он оставит вас с новым пустым буфером.
Бросьте это в свой .vimrc:
map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>.
Перезапустите Vim или просто
:source ~/.vimrc
для изменений для вступления в силу. В следующий раз, когда вы хотите закрыть буфер, просто введите:\q
(если\
- ваш лидерский ключ)
silent! bp | sp | silent! bn | bd
– ivan
17 January 2014 в 05:05
map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>
. Перезапустите VIM, в следующий раз, когда вы хотите закрыть буфер, просто введите: \q
– EasyCo
8 September 2014 в 02:03
sp
).
– hitzg
29 June 2015 в 13:26
Вот очень читаемая функция vimscript, которая хорошо справляется со всеми случаями,
:bd
(если только одно окно, просто вызовите его!), выполните предупреждение и ничего не делать, если буфер модифицирован. если нет другого буфера, создайте его через :enew
. если существует альтернативный буфер и в buffer-list
, переключитесь на него, иначе идите дальше, через :bn
. nnoremap <Leader>b :call DeleteCurBufferNotCloseWindow()<CR> func! DeleteCurBufferNotCloseWindow() abort if &modified echohl ErrorMsg echom "E89: no write since last change" echohl None elseif winnr('$') == 1 bd else " multiple window let oldbuf = bufnr('%') let oldwin = winnr() while 1 " all windows that display oldbuf will remain open if buflisted(bufnr('#')) b# else bn let curbuf = bufnr('%') if curbuf == oldbuf enew " oldbuf is the only buffer, create one endif endif let win = bufwinnr(oldbuf) if win == -1 break else " there are other window that display oldbuf exec win 'wincmd w' endif endwhile " delete oldbuf and restore window to oldwin exec oldbuf 'bd' exec oldwin 'wincmd w' endif endfunc
Чтобы закрыть окно, используйте :hid[e]
. Работает, если вам удалось разделить область просмотра или открыть несколько файлов. Вы не можете скрыть последний буфер на дисплее.
1 Еще один совет, который помог мне: используйте :e ./path/to/file.work
, чтобы открыть файл в видовом экране без разделения окна.
P.S. Через два дня в vim мне все еще трудно найти точные команды помощи. Надеюсь, это поможет кому-то еще работать, пока они не получат время, чтобы понять vim.
использовать команду ": bd" в качестве команды.