2015-01-19 4 views

ответ

4

нормально, он получил. это смесь

Preferences> Ключ Bindings- Пользователь

[ 
    {"keys": ["ctrl+s"], "command": "date_and_save" } 
] 

add_date.py

''' 
Autodate header 
@date <> 
''' 
from datetime import datetime 
import sublime, sublime_plugin 

class AddDateCommand(sublime_plugin.TextCommand): 
    def run(self, args): 
     content = self.view.substr(sublime.Region(0, self.view.size())) 
     begin = content.find('@date <',0,100) 
     if begin == -1: 
      return 
     end = content.find("\n", begin) 
     target_region = sublime.Region(begin, end) 
     self.view.sel().clear() 
     self.view.sel().add(target_region) 

     self.view.run_command(
     "insert_snippet", 
     { "contents": "@date <%s>" % datetime.now().strftime("%Y-%m-%d %H:%M:%S") }) 

class DateAndSaveCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     self.window.run_command("add_date") 
     self.window.run_command("save") 

\ о/

+0

Вы используете привязку клавиш ctrl + s, в этом случае файлы не будут сохранены. – Sinac

+0

Ограничение замены «даты» на ряд из N первых символов делает его более безопасным. Вероятно, вы не хотите, чтобы в коде было заменено другое значение даты. Еще лучший подход - указать, сколько строк сканировать. Вам также может понадобиться час пересмотра файла. Клавиша C-s работает отлично. – Flint

0

Удивительный материал! Небольшое дополнение к вышеуказанному решению:

Вместо

end = begin + 19 

Эта линия будет сделать его более динамичным, так как он не будет избавиться от всего, до конца строки.

end = content.find("\n", begin) 

Помогает с версией вверх, например, где длина строки может варьироваться.

+0

Это было бы лучше, как комментарий, так как он напрямую не отвечает на вопрос. – mjk

+0

Я согласен - я хотел сделать это, но так как я новый пользователь, он не дал мне комментариев :(Извините. – MischaKolbe