Можно ли отменить: bdelete в Vim?

540
sundar

Я привык Ctrl-Shift-Tв Firefox отменить закрытие вкладки, возможно ли получить подобную функциональность в Vim? Гугл не указал мне на что-нибудь полезное для этого.

0

2 ответа на вопрос

1
romainl

I'm not aware of an existing solution but it seems relatively easy to save the name of the deleted buffer in a variable on BufDelete and define a simple mapping that uses that variable. Let's see...

autocmd BufDelete * let g:latest_deleted_buffer = expand("<afile>:p") nnoremap <F6> :e <C-R>=fnameescape(g:latest_deleted_buffer)<CR><CR> 
Спасибо, я не знал о событии BufDelete (и мой vimscript-fu все равно слаб). Можно ли превратить это в команду `:` вместо карты нормального режима? sundar 10 лет назад 0
Это прекрасно работает в Cygwin, но в Windows gVim после добавления данного `autocmd` я получаю ошибку` E18: Неожиданные символы в: let` всякий раз, когда я делаю `: bd`. Я предполагаю, что это символы обратной косой черты в путях Windows. Не могли бы вы предложить способ обойти это? sundar 10 лет назад 0
Хорошо, я разобрался со второй проблемой, изменив команду растяжения на `растянуть (": p: gs? \\? /? ")` решает эту проблему. Эта отмена теперь работает отлично, большое спасибо! sundar 10 лет назад 0
Извините, я был АФК на ночь. Мое решение предполагало UNIX, потому что вы не много говорили о своей среде. Я рад, что это простое решение работает для вас. romainl 10 лет назад 0
Черты не допускаются в именах переменных, что приводит к E18. Кроме того, вам, вероятно, следует перейти к полному пути.: p` для обработки изменений CWD и использования `fnameescape ()` в отображении. Ingo Karkat 10 лет назад 1
@IngoKarkat, ответ отредактирован согласно вашему комментарию. romainl 10 лет назад 0
0
BubbleMonster

Just to clarify, :bdelete in VIM is used to delete buffers (buffer delete). I am not aware of any way of 'undoing' it, however, maybe the following will help you:

I have a file on my desktop called test.rtf

If I use the following command in the terminal: vim test.rtf followed by: :bdelete + Enter - it opens up a blank screen ready to type into. If you type in: :q followed by Enter to quit, you aren't saving any changes, so you are effectively undoing the mistake.

I hope this may be somewhat helpful.

Мне кажется, что вы предполагаете, что `: bdelete` очищает содержимое открытого в данный момент файла или чего-то еще, но на самом деле просто закрывает файл, поэтому я не ищу способы отменить любые сделанные изменения (и`: В любом случае q` этого не сделает, нам понадобится либо `: q!`, либо лучше `: e!`). То, что я ищу, это простой ярлык, чтобы избежать необходимости набирать `: e`, за которым следует весь путь только что закрытого файла, когда я хочу открыть его немедленно. sundar 10 лет назад 0