W Vimie, kiedy piszę kopię bieżącego bufora do nowego pliku za pomocą :w [filename]
, wydaje się, że Vim używa domyślnych (tj. Ustawionych przez umask lub cokolwiek) uprawnień do nowego pliku. Jeśli jednak bieżący bufor został załadowany z istniejącego pliku, czy „właściwym” zachowaniem nie powinno być powielanie uprawnień z tego pliku? Na przykład, jeśli edytuję plik wykonywalny i piszę nową kopię pliku, dlaczego Vim nie pisze nowego pliku wykonywalnego ? Czy jest jakiś sposób, aby zmusić Vima do zachowywania się tak, jak to opisuję, oprócz robienia czegoś takiego jak ! chmod --reference % [newfilename]
po zapisaniu nowego pliku?
unix
vim
file-permissions
Kyle Strand
źródło
źródło
chmod
za ciebie. AFAIK, vim nie ma tego wbudowanego.Odpowiedzi:
Możesz zrobić coś takiego. Najpierw przechwyć nazwę oryginalnego pliku.
Następnie, kiedy zapisujesz nowy plik, zmień jego uprawnienia, aby były takie same jak uprawnienia do oryginalnego pliku.
Wystarczy umieścić oba te polecenia automatyczne w swoim ~ / .vimrc.
źródło
echo system(
etc nasilent echo system(
itd. Pozwala to uniknąć zawieszenia się „naciśnij ENTER, aby kontynuować”.call system(...
uniknąć drukowania czegokolwiek na wyświetlaczu, ale starałem się uniknąć problemu z cichym wykonywaniem polecenia. Jeśli nie sądzisz, że to kiedykolwiek zawiedzie lub wolisz żyć z okazjonalnymi niepowodzeniami niż z nieznośnymiPress ENTER...
, to zgadzam się z twoją sugestią. Myślę jednak, że lepszym rozwiązaniem byłoby napisanie funkcji, która przechwytuje dane wyjściowe system () i wyświetla je tylko wtedy, gdy nie jest puste. Zrobiłem to we wtyczkach i działa całkiem dobrze.Press ENTER,
jednak, więc myślę, że będę albo trzymać sięsilent
lub wykorzystaniecall
. Jeszcze raz dziękuję za sugestie!Upewnij się, że w pliku nie ma niezapisanych zmian, a następnie użyj go
cp
do wykonania kopii. Spowoduje to utworzenie kopii z takimi samymi uprawnieniami jak oryginał.źródło