2017-09-20 58 views
2

通常,我編輯文檔字符串並找到我的編輯將線條的寬度推過所需的右邊距。因此,在我的文檔字符串再次被接受之前,可能需要重新格式化此編輯下面的許多行文本。
什麼是自動解決這個問題的簡單而安全的方法?自動將文檔重新格式化以尊重右邊距

例如:

class WellDocumentedClass: 
    """The first line of this is <72 characters wide. And is above lots| 
    more text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.| 
    et mauris ac eros placerat auctor. Mauris mollis est scelerisse | 
    accumsan dapibus. Ut imperdiet suscipit lacinia. Maecenas volutpat | 
    iaculis malesuada. Sed venenatis ipsum gravida molestolaoreet. Fuse| 
    facilisis neque nec mauris maximus rutrum. Suspendisse at vestibulo| 
    orci, ut feugiat odio. Aliquam erat volutpat. Nulla accumsan justo | 
    ligula, at imperdiet quam ultrices non. Cras vitae vehicula ligula.| 
    Quisque quam massa, dignissim in volutpat in, mattis eu urna.  | 
    """ 
    pass 

哦,不!我意外地從第一行中省略了「docstring」這個詞。它的格式非常完美!

class WellDocumentedClass: 
    """The first line of this docstring is <72 characters wide. And is |above lots 
    more text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.| 
    et mauris ac eros placerat auctor. Mauris mollis est scelerisse | 
    accumsan dapibus. Ut imperdiet suscipit lacinia. Maecenas volutpat | 
    iaculis malesuada. Sed venenatis ipsum gravida molestolaoreet. Fuse| 
    facilisis neque nec mauris maximus rutrum. Suspendisse at vestibulo| 
    orci, ut feugiat odio. Aliquam erat volutpat. Nulla accumsan justo | 
    ligula, at imperdiet quam ultrices non. Cras vitae vehicula ligula.| 
    Quisque quam massa, dignissim in volutpat in, mattis eu urna.  | 
    """ 
    pass 

Argh。時間使用我的鼠標和按下輸入很多...除非...你在這樣的時刻做什麼?

回答

2

您可以通過創建一個(相對)簡單的插件,在崇高的文本3實現這一點:

  • 工具菜單 - >開發 - >新建插件...
  • 選擇所有與以下
  • 更換
import sublime 
import sublime_plugin 
import textwrap 


class WrapTextCommand(sublime_plugin.TextCommand): 
    def run(self, edit, width=0): 
     # use the narrowest ruler from the view if no width specified, or default to 72 if no rulers are enabled 
     width = width or next(iter(self.view.settings().get('rulers', [])), 72) 
     new_sel = list() 
     # loop through the selections in reverse order so that the selection positions don't move when the selected text changes size 
     for sel in reversed(self.view.sel()): 
      # make sure the leading indentation is selected, for `dedent` to work properly 
      sel = sel.cover(self.view.line(sel.begin())) 
      # determine how much indentation is at the first selected line 
      indentation_amount = self.view.indentation_level(sel.begin()) * self.view.settings().get('tab_size', 4) 
      # create a wrapper that will keep that indentation 
      wrapper = textwrap.TextWrapper(drop_whitespace=True, width=width, initial_indent=' ' * indentation_amount, subsequent_indent=' ' * indentation_amount) 
      # unindent the selected text before then reformatting the text to fill the available (column) space 
      text = wrapper.fill(textwrap.dedent(self.view.substr(sel))) 
      # replace the selected text with the rewrapped text 
      self.view.replace(edit, sel, text) 
      # resize the selection to match the new wrapped text size 
      new_sel.append(sublime.Region(sel.begin(), sel.begin() + len(text))) 
     self.view.sel().clear() 
     self.view.sel().add_all(new_sel) 
  • 保存它,該文件夾中ST建議(Packages/User/),就像這樣wraptext.py
  • 創建鍵綁定來調用新的換行功能:
{ "keys": ["alt+."], "command": "wrap_text" }, 
  • 享受

wrap docstring

1

在pycharm,標記文檔字符串,然後單擊Edit -> Fill Paragraph