Полагаю, этот вопрос можно решить двумя способами ...
(универсальный) - есть ли способ указать «локальные» настройки функции (setlocal
изменения кажутся постоянными после вызова функции) ...
(Определенно) - у меня есть функция, которая вызывается из отображения imap
(который принимает пользовательский ввод для передачи в функцию. Функция отлично работает, если я запускаю set paste
или set noai | set nosi
либо непосредственно перед запуском моего ярлыка или добавлением в саму функцию. Проблема в том, каким образом я это делаю, эти настройки сохраняются после вызова моей функции.
По сути, мой рабочий процесс:
- В режиме вставки введите
////
, после чего мне будет предложено ввести текст, который я ввожу, и нажмите клавишу ввода.
Функция вызывается с моего ввода. Мне нужна функция для отключения отступов, возврата строки и повторного включения предыдущих настроек. Строка будет просто комментарием к PHP-блоку:
/**
* Blah {INPUT TEXT}
*/
Любые предложения приветствуются. Мой сценарий в настоящее время выглядит так:
function CommentInjector(txt)
return "\/**" ."\<CR>"
\ . " * foo " . a:txt . " bar " . "\<CR>"
\ . " */"
endfunction
imap <silent> //// <C-R>=CommentInjector(input("Enter some text:"))<CR>
UPDATE
Удалось по крайней мере понять, как создать комментарий ... Хотелось бы узнать, как получить / восстановить настройки ...
function! CommentInjector(txt)
set paste
exe "normal! i/**\<CR>"
\ . " * fooo " . a:txt . " bar\<CR>"
\ . " */\<Esc>"
set nopaste
endfunction
map <C-C><C-C><C-C> :call CommentInjector(input("Enter some text:"))<CR>
Используя это, вы можете просто нажать Ctrl + C 3 раза, ввести текст при появлении запроса и получить хороший комментарий. Он предполагает, что перед запуском вы отключили «set paste» ...