Удалите атрибут файла «только для чтения» в vim после его редактирования и сохранения с помощью: w! - PullRequest
4 голосов
/ 18 сентября 2010

Я хочу изменить атрибут «только для чтения» из файла, когда я сохраняю его с помощью :w! в vim. Как мне это сделать? (Я не против, если мне придется вызывать внешний скрипт).

Я использую Linux.

Я знаю, что могу использовать внешний скрипт с помощью этой команды: autocmd BufWrite /tmp/* !sh /tmp/script.sh. Итак, я хотел бы вызвать команду chmod при вызове :w!: команда chmod будет выглядеть примерно так:

autocmd BufWrite <:w! condition> !chmod u+w %

Итак, как мне сделать ": w!" состояние? Это возможно или мне нужно использовать другую структуру?

Ответы [ 3 ]

5 голосов
/ 18 сентября 2010

v: cmdbang - это то, что вы ищете.

function! g:ChmodOnWrite()
  if v:cmdbang
    silent !chmod u+w %
  endif
endfunction

autocmd BufWrite * call g:ChmodOnWrite()
2 голосов
/ 18 сентября 2010

Вы должны быть в состоянии использовать только *:

autocmd BufWrite * !chmod u+w %

Лучше использовать BufWriteCmd. Я думаю, что если chmod не удастся, Vim не будет пытаться писать.

0 голосов
/ 18 сентября 2010

Команда оболочки chmod u+w <name of file> делает то, что вы хотите.Я не знаю, как это сделать изнутри.

...