2015-01-19 2 views

답변

4

이 그것을 얻었다. 는

환경의 혼합> 키 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") 

\ o/

+0

당신은 ctrl + s 키 바인딩을 사용하고 있습니다.이 경우 파일은 저장되지 않습니다. – Sinac

+0

'date' 발생을 N 개의 첫 번째 문자의 범위로 대체하는 것을 제한하면보다 안전합니다. 당신은 아마'date'의 다른 발생이 코드에서 대체되기를 원하지 않을 것입니다. 더 나은 방법은 스캔 할 선의 양을 나타내는 것입니다. 파일의 수정 시간을 원할 수도 있습니다. C의 열쇠 바인딩이 잘 작동합니다. – Flint

0

굉장한 것들! 위의 솔루션 작은 추가 :이 줄이 끝날 때까지 모든 것을 제거하기 때문에이 라인은, 좀 더 역동적 인 것

대신

end = begin + 19 

.

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

예를 들어, 줄 길이가 다를 수있는 곳에서 버전을 올리는 데 도움이됩니다.

+0

이것은 직접 질문에 대답하지 않기 때문에 주석으로 더 좋을 것입니다. – mjk

+0

동의합니다 - 저는 그 일을하고 싶었습니다. 그러나 새로운 사용자가되어서 나에게 코멘트하지 않았습니다 : (미안 해요. – MischaKolbe