Пытаетесь написать функцию / команду Vim? - PullRequest
0 голосов
/ 20 октября 2011

Я использую Janus (хотя и не является ключевым для понимания вопроса).По сути, они переписывают: e быть: редактировать для работы с NERDTree, но NERDTree не поддерживает принудительное открытие файла (например, e!).Итак, я написал что-то, что переписывает: Edit!to: e !, но мне нравятся преимущества использования просто: Edit !, поэтому я пытаюсь подделать, как будто он уже встроен. Вот что я придумал:

ca Edit! e! <bar> Edit

Единственная проблема заключается в том, что вы не можете сделать это для файлов, которые не были сохранены хотя бы один раз.Но я знаю, что

ca Edit! bd! <bar> Edit

будет работать: он закроет несохраненный буфер и продолжит движение, как будто ничего не произошло.Все, что мне нужно сделать, это написать логику, которая будет постоянно использовать правильную команду в правильном сценарии.Предпочтительно логика не работает на каждой странице: только когда я действительно запускаю команду, она должна попытаться понять это.Любые идеи?

Редактировать: Я пытался спросить канал #vim (дал мне кучу помощи) ... они сказали, используя расширение ("%") и проверка, если он существует, может помочь моему делу?Не знаю, просто предоставлю как можно больше деталей.

1 Ответ

0 голосов
/ 29 октября 2011

Попробуй это. Определите функцию следующим образом:

function! CommandAbbrForEdit()
    if &modified
        return 'bd! | Edit'
    endif
    return 'e! | Edit'
endfunction

Затем определите свою аббревиатуру следующим образом:

cabbrev <expr> Edit! CommandAbbrForEdit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...