Cách tự động thiết lập bit thực thi cho một tệp cụ thể


10

Tôi muốn rằng khi tôi tạo một tệp cụ thể, giả sử tôi tạo nó trong trình soạn thảo vim, tệp đã tạo cũng sẽ có quyền thực thi khi nó được tạo. Tôi muốn điều này vì tôi đang tạo một số tệp python và không muốn thiết lập quyền cho tệp một cách rõ ràng vì vậy tôi muốn một số cách để bit thực thi được đặt ngay khi tôi tạo một tệp có phần mở rộng cụ thể hoặc với một trình soạn thảo cụ thể.

Câu trả lời:


11

Đối với vim, bạn có sẵn kịch bản mạnh mẽ. Ví dụ: trong .vimrc của tôi, tôi có:

" 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>

Nếu bạn chỉ muốn làm điều đó bằng tên tệp, thay vì tìm kiếm #! dòng, bạn có thể làm:

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

Bài viết đó về Quản trị Debian cũng có hướng dẫn cho EMACS.


Autoread của bạn được thiết lập để sau đó là gì?
Dustin

@dustin autoread được đặt (true / on / yes) trong vimrc của tôi (AFAIK, nó chỉ là một boolean, bật hoặc tắt)
derobert

1

Nhiều như tôi thích câu trả lời của derobert , nó khiến VIM đưa ra cảnh báo sau:

W16: Cảnh báo: Chế độ của tệp "test.sh" đã thay đổi kể từ khi bắt đầu chỉnh sửa

Đoạn mã sau (hơi dài hơn) giải quyết vấn đề đó (yêu cầu vim hỗ trợ Python):

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, tôi có lẽ không nhận được cảnh báo như tôi đã autoreadđặt.
derobert

Tôi bối rối làm im lặng cảnh báo, bởi vì nó dường như thực hiện chính xác điều tương tự mà chỉ gọi một kịch bản python thay vì chmod ...
derobert

Vâng Nhưng vì một số lý do, hàm Python không kích hoạt phát hiện thay đổi chế độ. Có thể là một sự giải thích cho thiết lập của tôi, mặc dù tôi tin rằng tôi đang chạy một Vim khá vani trên cài đặt Ubuntu.
Søren Løvborg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.