しかだよ。 SublimeTextの簡単なプラグイン作成の依頼があったのでちょっと作ってみたよ。
コピーしたテキストの最終行の行末に改行があった場合、その改行を消してペーストしたい。
tool > new plugin でテンプレートが作れます。
{% highlight python %} import sublime, sublime_plugin
class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World!")
{% endhighlight %}
sublime.get_clipboard()
でクリップボードのデータを取得できるみたい。 あとはpythonの正規表現で良い感じにする。
command + v の処理を上書きするので、ペーストと同じ働きをさせたい。
self.view.insert
だと、挿入になってしまい、範囲選択した状態でペーストすると置換されなくなっちゃう。なので
self.view.replace
でペースト処理を行う。
カーソル位置は
self.view.sel()
で取得できる。戻り値は配列で、
を表す。範囲選択とかしてなかったら、[0]と[1]は同じ値を指す。
プラグインはフォルダを作ってパッケージ化すると使いやすい。後述するショートカットキーの割り当てにも必要になる。
├Sublime Text 2
├─Packages
├─新規プラグインフォルダ
こんな感じの構成にするといい。
キーの設定はプラグインフォルダに下記の設定ファイルを配置することで可能になる。
ファイルの中身はJSONで記述する。command + vにコマンドを割り当てる場合はこんな感じ。
{% highlight json %}
[
{
"keys": ["super+v"], "command": "garyuten"
}
]
完成はこちら。名前 GaryutenPaste。 由来は @garyuten さんに頼まれたから。 shikajiro/GaryutenPaste · GitHub