【问题标题】:Sublime Text and Python plugin: How to incorporate a python code with a for loop in sublime text editorSublime Text 和 Python 插件:如何在 sublime 文本编辑器中将 python 代码与 for 循环合并
【发布时间】:2018-03-10 20:03:39
【问题描述】:

我对在 Sublime Text 中使用 python 脚本作为插件比较陌生(注意:我不是开发人员)。但是,我处于这样一种情况,即我总是以相同的某些事件告终,我需要通过脚本自动执行对字符串的一些操作。

例如,假设我在一个文本文件中有以下值:

@article{jentsch2010multiple,
      title={The multiple hybrid bootstrap—Resampling multivariate linear processes},
      author={Jentsch, Carsten and Kreiss, Jens-Peter},
      journal={Journal of Multivariate Analysis},
      volume={101},
      number={10},
      pages={2320--2345},
      year={2010},
      publisher={Elsevier}
    }

    @article{buhlmann1997sieve,
      title={Sieve bootstrap for time series},
      author={B{\"u}hlmann, Peter},
      journal={Bernoulli},
      volume={3},
      number={2},
      pages={123--148},
      year={1997},
      publisher={Bernoulli Society for Mathematical Statistics and Probability}
    }


@article{kreiss2011bootstrap,
  title={Bootstrap methods for dependent data: A review},
  author={Kreiss, Jens-Peter and Paparoditis, Efstathios},
  journal={Journal of the Korean Statistical Society},
  volume={40},
  number={4},
  pages={357--378},
  year={2011},
  publisher={Elsevier}
}

我想要的是将每个都排成一行,即

@article{jentsch2010multiple,   title={The multiple hybrid bootstrap—Resampling multivariate linear processes},   author={Jentsch, Carsten and Kreiss, Jens-Peter},   journal={Journal of Multivariate Analysis},   volume={101},   number={10},   pages={2320--2345},   year={2010},   publisher={Elsevier} }
@article{buhlmann1997sieve,   title={Sieve bootstrap for time series},   author={B{"u}hlmann, Peter},   journal={Bernoulli},   volume={3},   number={2},   pages={123--148},   year={1997},   publisher={Bernoulli Society for Mathematical Statistics and Probability} }
@article{kreiss2011bootstrap,   title={Bootstrap methods for dependent data: A review},   author={Kreiss, Jens-Peter and Paparoditis, Efstathios},   journal={Journal of the Korean Statistical Society},   volume={40},   number={4},   pages={357--378},   year={2011},   publisher={Elsevier} }

目前,我所做的是将所有内容复制到文本编辑器(即 Sublime Text 3),然后将其作为字符串值粘贴到 Python 中以执行代码。

这是我所拥有的:

A='''
@article{jentsch2010multiple,
  title={The multiple hybrid bootstrap—Resampling multivariate linear processes},
  author={Jentsch, Carsten and Kreiss, Jens-Peter},
  journal={Journal of Multivariate Analysis},
  volume={101},
  number={10},
  pages={2320--2345},
  year={2010},
  publisher={Elsevier}
}

@article{buhlmann1997sieve,
  title={Sieve bootstrap for time series},
  author={B{\"u}hlmann, Peter},
  journal={Bernoulli},
  volume={3},
  number={2},
  pages={123--148},
  year={1997},
  publisher={Bernoulli Society for Mathematical Statistics and Probability}
}

@article{kreiss2011bootstrap,
  title={Bootstrap methods for dependent data: A review},
  author={Kreiss, Jens-Peter and Paparoditis, Efstathios},
  journal={Journal of the Korean Statistical Society},
  volume={40},
  number={4},
  pages={357--378},
  year={2011},
  publisher={Elsevier}
}
'''

print(
    '\n'.join(
        [' '.join(para.splitlines()) for para in A.split('\n\n')]
    )
)

但是,我注意到可以在 Sublime Text 中完成所有这些操作,因此我不必复制并粘贴整个字符串然后执行脚本。

链接是here。但是,该链接明确表示有关此主题的文档很少。有人可以帮我弄这个吗?

到目前为止,我所知道的有关该主题的全部过程如下:

1) 选择工具 |开发商 |菜单中的新插件。 这将打开以下内容:

 import sublime
    import sublime_plugin


    class ExampleCommand(sublime_plugin.TextCommand):
        def run(self, edit):
            self.view.insert(edit, 0, "Hello, World!")
  1. 如何调整此代码以添加我的代码?

非常感谢!

【问题讨论】:

    标签: python sublimetext3 sublime-text-plugin


    【解决方案1】:

    创建问题中提到的以下插件,即Tools ---> Developer ---> New Plugin ...,并在最后使用 .py 将其保存为您希望的任何名称。

    插件

    import sublime, sublime_plugin, re, string   #import the required modules
    
    class ConvertCommand(sublime_plugin.TextCommand): #create Text Command
        def run(self, edit):   #implement run method
            for region in self.view.sel():  #get user selection
                if not region.empty():  #if selection not empty then
                    s = self.view.substr(region)  #assign s variable the selected region
                    replace = '\n'.join([' '.join(para.splitlines()) for para in s.split('\n\n')])
                    self.view.replace(edit, region, replace) #replace content in view
    
    
    class UndoCommand(sublime_plugin.TextCommand): #create Text Command
        def run(self, edit):   #implement run method
            for region in self.view.sel():  #get user selection
                if not region.empty():  #if selection not empty then
                    s = self.view.substr(region)  #assign s variable the selected region
                    replace = '\n'.split([' '.join(para.splitlines()) for para in s.split('\n\n')])
                    self.view.replace(edit, region, replace) #replace content in view
    

    这创建了一个名为ConvertUndo 的新command

    菜单视图

    然后创建一个 sublime-menu,它将创建一个名为 convert 的新命令,并将其保存为 id 名称

    备注:SUBLIME-MENU 文件用于控制 Sublime Text 中的主菜单和上下文菜单。

    菜单:另存为context.sublime-menu

    [
    { 
        "caption": "Convert", 
        "id": "convert", 
        "children":
        [
        {
        "caption": "Convert",
        "command": "convert"
        },
        {
        "caption": "Undo Convert",
        "command": "undo"
        }
        ]
    }
    ]
    

    键绑定

    Preferences ---> Key Bindings
    

    那就这样写

    [
    {"keys": ["alt+enter"], "command": "convert"},
    ]
    

    这将允许您选择并只需按键盘上的alt+enter 即可完成任务。

    【讨论】:

    • 非常感谢您。我非常感谢您的帮助,但请您告诉我这是如何完成的。所以我将第一个代码保存为 .py (它需要任何特殊名称吗?)然后我保存它然后我该如何做菜单?对于所有这些问题,我很抱歉,但我是新手,我在网上找不到教我们如何做到这一点的东西,我无法在我的 jupyter 编辑器中导入 sublime。
    • 插件不需要特殊名称,只需将其保存在 ~/Library/Application Support/Sublime Text 3/Packages/User/convert.py 中即可。菜单应该保存为context.sublime-menu在同一路径中
    • 非常感谢你,伙计!我怎样才能学会这个?我的问题的原因是我发现自己总是在这个主题上提出问题,我不知道如何将 sublime 导入编辑器以了解 sublime 文本如何使用命令,请参阅我关于此主题的未回答问题stackoverflow.com/questions/49200465/…跨度>
    • 例如,我可以将其作为键绑定而不是菜单吗?
    • 是的,只需创建这个文件而不是菜单docs.sublimetext.info/en/latest/customization/key_bindings.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2014-08-05
    • 2014-03-01
    • 2013-11-16
    • 2012-01-23
    相关资源
    最近更新 更多