Belirli bir dosya için yürütülebilir bit otomatik olarak nasıl ayarlanır


10

Belirli bir dosya oluşturduğumda, vim editöründe oluşturduğumu varsayalım, oluşturulan dosya oluşturulduğunda da yürütülebilir izin almalıdır. Ben bazı python dosyaları oluşturuyorum ve bu yüzden ben belirli bir uzantı veya belirli bir düzenleyici ile bir dosya oluşturmak gibi yürütülebilir bit ayarlanır böylece bir şekilde istiyorum açıkça dosya izinlerini ayarlamak istemiyorum istiyorum.

Yanıtlar:


11

Vim için güçlü komut dosyalarınız var. Örneğin, .vimrc dosyamda:

" Stolen from http://www.debian-administration.org/articles/571
" Sets +x on stuff starting with the magic shebang.
au BufWritePost * if getline(1) =~ "^#!" | silent !chmod a+x <afile>

Bunu sadece dosya adıyla yapmak istiyorsanız, #! satır, şunları yapabilirsiniz:

au BufWritePost *.ext silent !chmod a+x <afile>     " untested

Debian Yönetimi hakkındaki bu makalede EMACS için de talimatlar bulunmaktadır.


otomatik başlığınız o zaman ne olarak ayarlanmış?
dustin

@dustin autoread benim vimrc (AFAIK, onun sadece bir boolean, onun açık veya kapalı) ayarlanır (true / on / yes)
derobert

1

Çok ben gibi gibi derobert cevabı , bu neden VIM bana şu uyarıyı vermek:

W16: Uyarı: "test.sh" dosyasının modu düzenleme başladığından beri değişti

Aşağıdaki (biraz daha uzun) kod bu sorunu çözer (Python özellikli bir vim gerektirir):

function! SetExecutableBit()
python <<EOD
import vim
import os
import stat
filename = vim.current.buffer.name
mode = os.stat(filename).st_mode
os.chmod(filename, mode | stat.S_IXUSR)
EOD
endfunction

autocmd BufWritePost *
    \ if getline(1) =~ "^#!" | call SetExecutableBit()

Ah, autoreadayarladığım gibi muhtemelen bu uyarıyı almıyorum .
derobert

Uyarıyı susturduğum için kafam karıştı, çünkü aynı şeyi yapıyor gibi görünüyor - sadece chmod yerine bir python komut dosyası çağırıyor ...
derobert

Evet. Ancak bazı nedenlerden dolayı, Python işlevi mod değiştirme algılamasını tetiklemez. Ubuntu kurulumunda oldukça vanilyalı bir Vim çalıştırdığımı düşünüyorum, ancak kurulumumun bir tuhaflığı olabilir.
Søren Løvborg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.