Я хотел бы изменить команду : 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.
Возможно ли это?