2015-08-11 22 views
9

Es handelt sich nicht um Dateien, deren schreibgeschütztes Flag auf Betriebssystemebene festgelegt ist, sondern um jede Datei, die Benutzer nicht ändern möchten. Ich möchte einfach nur erhabenen Text zu ignorieren Sie alle Änderungen und verhindern, dass irgendetwas zu solchen Dateien zu speichern. Ein Beispiel für dieses Szenario ist, wenn der Benutzer Quellcode liest, der sowieso nicht geändert werden sollte.Hat Sublime Text 2 einen schreibgeschützten Modus?

"Seien Sie nur sehr vorsichtig, und drücken Sie keine Tasten" ist zweifellos ein guter Rat, aber wenn ich "versehentlich" (< - Luft-Anführungszeichen) löschen Sie das octothorpe vor einem Kommentar oder neu hinzufügen Zeilen zu einer Datei, die für solche Dinge empfindlich ist (einige Konfigurationsdateien in Linux) und dann durch Zufallshit speichern ...

Ich fand this plugin bei Github, aber es ist tatsächlich Umschalten der Dateiberechtigungen (Read Only, Write) - nicht ganz was ich wollte.

Antwort

6

Ja, das ist möglich, aber Sie müssen ein Plugin schreiben (was eigentlich nicht so schwer ist, besonders wenn Sie Python kennen). Der API Anruf ist view.set_read_only(flag) im sublime Modul, in dem Flag ein boolean ist. Hier ist ein kurzes Beispiel, das prüft, ob eine neu geöffnete Datei ein bestimmtes Suffix hat, und wenn ja, setzt sie es auf schreibgeschützt.

import sublime 
import sublime_plugin 


class MakeViewReadOnlyCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     if self.view.file_name().endswith(".cfg"): 
      self.view.set_read_only(True) 


class ConfigFileListener(sublime_plugin.EventListener): 
    def on_load(self, view): 
     view.run_command("make_view_read_only") 

Öffnen Sie eine neue Datei mit Python-Syntax, kopieren Sie den Code in sie, ändern sie je nach Bedarf, es dann als make_view_read_only.py in Ihrem Packages/User Verzeichnis speichern. Starten Sie Sublime neu, um es zu laden, und Sie sollten alle eingestellt werden. Um zu testen, ob eine bestimmte Ansicht schreibgeschützt ist, öffnen Sie die Konsole und geben Sie

view.is_read_only() 
+0

+1 Brilliant. Ich kenne ein bisschen Python, und ich muss ihre API-Dokumentation lesen, um mit dem manuellen Erstellen eines Plugins fortzufahren. Wäre es möglich, im Kontextmenü des Editors für alle Dateitypen einen "toggle read-only mode" hinzuzufügen? –

+0

@RenaeLider ja, es ist möglich. Da dies außerhalb des Rahmens dieser ursprünglichen Frage liegt, stelle einfach eine neue Frage und beziehe diese - wenn du es in den nächsten 24 Stunden machst, sollte ich in der Lage sein, es zu beantworten (ich gehe am Freitag in den Urlaub). – MattDMo

+0

Hat das OP tatsächlich eine solche Frage gestellt? Es wäre nett mit einem Link von dieser QA, kann nicht scheinen, es zu finden. – emilBeBri

0

Das Plugin Toggle the View Read-Only soll es tun. Es macht im Grunde nur das, was MattDMo gesagt hat: Wenn Sie die Ansicht als schreibgeschützt einstellen, kann die Datei immer noch von einem anderen Programm (oder einem anderen Benutzer) geändert werden, und Sublime Text übernimmt diese Änderungen. Es hat auch den Kontext-Menü-Punkt, nach dem Sie gefragt haben. Ich mag das "Readonly" Indikator in der Statusleiste.

Nicht auf Sublime Text 2 getestet, aber in Sublime Text 3 funktioniert es gut, und es behauptet, auch an Sublime Text 2 zu arbeiten.