スポンサーリンク
Sublime Text 3 で文字列の置換を連続実行するマクロを組んだので、その方法を紹介します。
目次
スポンサーリンク
RegReplaceのインストール
「Preference>Package Control」を開いて、「Package Control: Install Package」を実行します。
そして、「RegReplace」をインストールします。
「置換」の内容を定義する
次に、「Preference>Package Settings>Reg Replace>Setting - Users」を開きます。
ここに、「置換」の内容を登録します(ちょっと変な例だけれど)。
ここでは、「replace_1」という置換と、「replace_2」という置換の、2つを登録しています。
正規表現で指定した「find」を、「replace」で指定した文字列に置換します。
{
"replacements": {
"replace_1": { "find": "\n", "replace": "<br />\n" },
"replace_2": { "find": "・(.+)$", "replace": "<li>\\1</li>" }
}
}
コマンドを定義する
次に、「Preference>Package Settings>Reg Replace>Commands - Users」を開きます。
そして、以下のように「RegReplace: replace1and2」という名前のコマンドを定義しました。
ここでは、その名前のコマンドを実行すると、「replace_1」と「replace_2」が実行されるようにしました。
[
{
"caption": "RegReplace: replace1and2",
"command": "reg_replace",
"args": {
"replacements": [
"replace_1",
"replace_2"
]
}
}
]
使い方(コマンドの実行方法)
「Tools>Command Palette」を開くと、コマンド入力欄が表示されるので、そこに、「caption」で指定したコマンド名を入力し、Enterキーで実行します。
入力補完がされるので、一部入力でも出てきます。
実行すると、現在表示しているタブのファイルに、全置換が順番に適用されていきます。
注意点
注意ポイントは以下のとおり:
- 括弧の種類「{}」「[]」を間違えないように
- 「\1」は、「\\1」としないと保存時にエラー(Error trying to parse settings: Invalid escape in Packages\User\reg_replace.sublime-settings)
- コマンド名は、「caption」で指定した文字列になるので、「captionはただの説明書きだろ」と勘違いして省略したりしない。「command」に指定する文字列は、設定内部での参照用であって、コマンド名としてcommand paletteに出てくることはない。
記述の際の参考資料
今回は、最も簡単なケースを例示したので、その他の用法、記述方法については、以下を参考にしてください。
置換設定サンプル
////////////////////////////////
// Regex with scope qualifiers//
////////////////////////////////
// Required parameters:
// find: Regex description of what you would like to target.
//
// Optional parameters:
// replace: description of what you would like to replace target with.
// Variables are okay for non-literal searches and are done by escaping
// the selection number \\1 etc. Default value is "\\0".
// literal: Boolean setting to define whether the find and replace is literal or not.
// Default is false.
// greedy: Boolean setting to define whether search is greedy or not. Default is true.
// case: Boolean defining case sensitivity. True equals sensitive. Defualt is true.
// dotall: Boolean defining whether to use dotall flag in regex (include \n etc. when using dot).
// Default is False
// scope_filter: an array of scope qualifiers for the match.
// - Any instance of scope qualifies match: scope.name
// - Entire match of scope qualifies match: !scope.name
// - Any instance of scope disqualifies match: -scope.name
// - Entire match of scope disqualifies match: -!scope.name
//////////////////////////////////////////////////////////////
// Scope search with regex qualifier (also find and replace)//
//////////////////////////////////////////////////////////////
// Required parameters:
// scope: scope you would like to target
//
// Optional parameters:
// find: regex description that is to be applied to the scope
// to qualify. Also can be used to find and replace
// within the found scope. Default is None.
// replace: description of what you would like to replace within the scope.
// Default value is "\\0".
// literal: Boolean setting to define whether the find and replace is literal or not.
// Default is false.
// greedy_replace: Boolean setting to define whether regex search is greedy or not. Default is true.
// greedy_scope: Boolean setting to define whether scope search is greedy or not. Default is true.
// case: Boolean setting to define whether regex search is case sensitive. Default is true.
// dotall: Boolean defining whether to use dotall flag in regex (include \n etc. when using dot).
// Default is False
// multi_pass_regex:Boolean setting to define whether there will be multiple sweeps on the scope region
// region to find and replace all instances of the regex, when regex cannot be formatted
// to find all instances in a greedy fashion. Default is false.
{
// Use sub notify if available
"use_sub_notify": true,
"replacements": {
// Example replacements
"html5_remove_deprecated_type_attr": {
"find": "(<(style|script)[^>]*)\\stype=(\"|')text/(css|javascript)(\"|')([^>]*>)",
"replace": "\\1\\6",
"greedy": true,
"case": false
},
// remove_json_dangling_commas
"remove_json_dangling_commas": {
"find": ",([\\r\\n\\s]*)(\\]|\\})",
"replace": "\\1\\2",
"greedy": true,
"scope_filter": ["-string", "-comment"]
},
"remove_html_comments": {
"find": "<!--[\\s\\S]+?-->",
"replace": "",
"scope_filter": ["!comment"],
"greedy": true,
"case": true
},
"remove_trailing_spaces": {
"find": "[ \\t]+$",
"replace": "",
"greedy": true,
"case": true
},
// Delete a comment or comment blocks
"remove_comments": {
"scope": "comment",
"find" : "([^\\n\\r]+)",
"replace": "",
"greedy_replace": true
}
},
// If on_save is true, RegReplace will search through the file patterns listed below right before a file is saved,
// if the file name matches a file pattern, the sequence will be applied before the file is saved.
// RegReplace will apply all sequences that apply to a given file in the order they appear below.
"on_save": false,
// Highlight visual settings
"on_save_highlight_scope": "invalid",
"on_save_highlight_style": "outline",
// on_save replacements
"on_save_sequences": [
// An example on_save event that removes dangling commas from json files
// - file_regex: an array of regex strings that must match the file for the sequence to be applied
// - case: regex case sensitivity (true|false) false is default (this setting is optional)
// - file_pattern: an array of file patterns that must match for the sequence to be applied
// - sequence: an array of replacement definitions to be applied on saving the file
// - multi_pass: perform multiple passes on file to catch all regex instances
// - action: (mark|fold|unfold) instead of replace. Only one action can be used
{
"file_regex": [".*\\.sublime-(settings|commands|menu|keymap|mousemap|theme|build|project|completions|commands)"],
"file_pattern": ["*.json"],
"sequence": ["remove_json_dangling_commas"]
},
// An example on_save_sequence that targets all files and trims trailing spaces
// - file_pattern: an array of file patterns that must match for the sequence to be applied
// - sequence: an array of replacement definitions to be applied on saving the file
{"file_pattern": ["*"], "sequence": ["remove_trailing_spaces"]}
],
// Show replace results in panel
"results_in_panel": false,
// Maximum sweep threshold for multi-pass
"multi_pass_max_sweeps": 100,
// Color? (scope)
"find_highlight_color": "invalid",
// Highlight style? (outline|solid|underline)
"find_highlight_style": "outline",
// Search under selection(s) if and only if exists
"selection_only": false,
// Use extended backreferences
"extended_back_references": false
}
コマンド設定サンプル
[
// Clear all find highlights
{
"caption": "Reg Replace: Clear Highlights",
"command": "reg_replace",
"args": {"clear": true}
},
// Example commands.
// {
// "caption": "Reg Replace: HTML5 Remove Deprecated Type Attr",
// "command": "reg_replace",
// "args": {"replacements": ["html5_remove_deprecated_type_attr"]}
// },
// {
// "caption": "Reg Replace: Remove Trailing Spaces",
// "command": "reg_replace",
// "args": {"replacements": ["remove_trailing_spaces"]}
// },
// // Chained replacements in one command
// {
// "caption": "Reg Replace: Remove HTML Comments and Trailing Spaces",
// "command": "reg_replace",
// "args": {"replacements": ["remove_html_comments", "remove_trailing_spaces"]}
// },
// Preferences
{
"caption": "Preferences: Reg Replace Settings – Default",
"command": "open_file",
"args": { "file": "${packages}/RegReplace/reg_replace.sublime-settings" }
},
{
"caption": "Preferences: Reg Replace Settings – User",
"command": "open_file",
"args": { "file": "${packages}/User/reg_replace.sublime-settings" }
},
{
"caption": "Preferences: Reg Replace Commands – Default",
"command": "open_file",
"args": { "file": "${packages}/RegReplace/Default.sublime-commands" }
},
{
"caption": "Preferences: Reg Replace Commands – User",
"command": "open_file",
"args": { "file": "${packages}/User/Default.sublime-commands" }
}
]
RegReplace公式ページ
RegReplaceの公式ドキュメントはこちら:RegReplace Documentation
スポンサーリンク
コメント(0)
新しいコメントを投稿
|HOME|
『iTunesが起動できないエラーと対策(iTunes.exe – エントリ ポイントが見つかりません)』 OLD >>

スポンサーリンク