Переопределить vim: x, чтобы закрыть буфер, выход только если это последний буфер - PullRequest
4 голосов
/ 27 марта 2012

Я хотел бы изменить команду : x в Vim так, чтобы она закрывала буфер, если только он не является последним буфером, тогда она должна вести себя так же, как сейчас (т.е. закрывать vim).

Я прочитал кое-что здесь , но это не до конца.Я также использую NERDTree и хотел бы, чтобы это игнорировалось при рассмотрении того, является ли это последним буфером.

У меня есть частично работающее решение, основанное на ссылке, на которую я ссылался, но это делает невозможным выход из vim с помощью команды vim.(потому что команда выхода была переназначена).

У меня есть

cnoreabbrev <expr> x getcmdtype() == ":" && getcmdline() == 'x' ? 'w<bar>bd' : 'x'
cnoreabbrev <expr> wq getcmdtype() == ":" && getcmdline() == 'wq' ? 'w<bar>bd' : 'wq'
cnoreabbrev <expr> q getcmdtype() == ":" && getcmdline() == 'q' ? 'bd' : 'q'

Итак : x (или : w q ) сохранит и закроет текущий буфер и: q просто закроет его.

Что я хотел бы добавить ... Если этот буфертакже является последним буфером (игнорируя NERDTree), затем он также завершает работу vim.

Возможно ли это?

1 Ответ

0 голосов
/ 07 апреля 2012

Ответ от Автоматически выходить из vim, если NERDTree последний и работает только буфер :

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...