vim sudo hack auto reload

e

создать файл с вашей задачей crone и т. Д. Cron.txt

cat cron.txt 0 1 * * * systemctl stop iradio; shutdown -P 0 30 23 * * * systemctl stop clock 34 23 * * * systemctl start clock

затем crontab новый файл

crontab cron.txt

Кажется чтобы работать сейчас.

3
23.05.2017, 15:40
1 ответ

Принятый ответ (с вознаграждением )неверен. Это никак не решит проблему, потому что предупреждение W12 произойдет после возврата из функции.

Проблема заключается в том, как указано в документе , цитируемом в вопросе (мой полужирный):

autoread' 'ar' 'noautoread' 'noar' 'autoread' 'ar'
boolean (default on) global or local to buffer |global-local|

When a file has been detected to have been changed outside of Vim and it has not been changed inside of Vim, automatically read it again.

Это означает, что опция autoread предназначена только для предупреждений W11 .

Чтобы решить проблему, я часами пытался придумать решение, временно изменяя buftype, среди прочего, но оно оказалось довольно простым:

cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!

Это означает принудительную перезагрузку файла после сохранения. Это гарантирует, что предупреждение не появится, поскольку теперь файл идентичен буферу.

  • Это решение также работает независимо от вашего autoreadварианта. Мне нравится мой noautoread, поэтому я знаю, хочу ли я отказаться от изменений или нет.

В конце можно поставить дополнительный " <CR>",

cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!<CR>

или, если вам нужна функция, что-то вроде:

cnoremap w!! call SudoWriteBangBang()<CR>
function! SudoWriteBangBang()
    execute 'silent! write !sudo tee % >/dev/null' <bar> edit!<CR>
endfunction

но я предпочитаю не выполнять команду сразу. Без <CR>у вас есть возможность еще раз взглянуть на команду, прежде чем принять решение. Кроме того, он лучше имитирует поведение :wи :w!, так как они также ожидают руководства <CR>.

1
27.01.2020, 21:19

Теги

Похожие вопросы