При написании, например, скриптов оболочки я хочу изменить их разрешения (в первую очередьисполняемыйразрешения) из Sublime Text 2.
Как мне этого добиться?
решение1
Ниже приведена команда редактирования прав доступа общего назначения для файла, который в данный момент редактируется. Для более подробного объяснения плагинов и редактирования меню Sublime Text 2 см.эта почта.
Это добавитИзменить режимкоманда вРедактироватьmenu. При выборе этого параметра пользователю предлагается ввести допустимую строку аргумента для chmod (например, u+rwx
или 755
; по умолчанию используется текущая установленная строка из 4 восьмеричных цифр, например 0644
), которая затем применяется к редактируемому файлу.
ВыбиратьИнструменты » Новый плагин, вставьте следующее содержимое и сохраните как chmod.py
в ~/Application Support/Sublime Text 2/Packages/User/
:
import sublime, sublime_plugin, subprocess
def chmod(v, e, permissions):
subprocess.call( [ "chmod", permissions, v.file_name() ] )
def stat(filename):
proc = subprocess.Popen( [ "stat", "-f", '%Mp%Lp', filename ], stdout=subprocess.PIPE )
return str(proc.communicate()[0]).strip()
class ChangeModeCommand(sublime_plugin.TextCommand):
def run(self, edit):
if sublime.platform() != 'osx':
return
fname = self.view.file_name()
if fname == None:
sublime.message_dialog("You need to save this buffer first!")
return
perms = stat(fname)
def done(permissions):
chmod(self.view, edit, permissions)
sublime.active_window().show_input_panel(
"permissions to apply to the file " + fname + ": ", perms, done, None, None)
Чтобы вставить пункт меню для этой команды, добавьте следующее ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu
, объединив его с существующим содержимым файла, если файл уже существует:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "change_mode" }
]
}
]
решение2
В принципе, он работает и под Linux, но stat
команда работает по-другому и показывает много информации, которая не нужна.
stat -c %a filename
вместо этого сделает и вернет что-то вроде «644».