3

При написании скриптов например, я хочу изменить свои права ( в первую очередь исполняемым разрешения) изнутри Sublime Text 2.

Как я могу это сделать?

2 ответа2

6

Ниже приведена команда редактирования разрешений общего назначения для редактируемого файла. Более подробное описание плагинов и редактирование меню Sublime Text 2 см. В этом посте.

Это добавит команду « Изменить режим» в меню « Правка» . Когда выбрано, пользователя просят ввести действительную строку аргумента в 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" }
        ]
    }
]
3

Он в основном работает и под Linux, но команда stat работает по-другому и показывает множество ненужной информации.

stat -c %a filename 

будет делать вместо этого и возвращает что-то вроде «644».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .