提问人:Basj 提问时间:1/18/2023 最后编辑:Basj 更新时间:1/24/2023 访问量:76
删除每个空格、制表符或换行符,直到出现一个带有 Sublime 的字符
Delete every whitespace or tab or newline until a character is present with Sublime
问:
使用 ST2,在当前光标位置,我想删除每个空格或制表符或换行符,直到出现字符。 或者某种作品,但有时你必须多次重复它(或者当中间有空行时,它不起作用)等等。
有没有办法用 Sublime 2 做到这一点?CTRL+DELCTRL+J
以前:
hello here is the cursor |
dfsdlkf
后:
hello here is the cursor |dfsdlkf
答:
编辑
虽然下面在我最初的答案中描述的 RegReplace 插件非常适合各种事情,包括此任务,但这里并不是绝对需要的。您可以制作一个快速的专用插件,该插件是硬编码的,可以做到这一点。
在 ST2 中,选择“工具”→“新建插件...
”。擦除显示的文件的内容并粘贴到其中:
import sublime_plugin
class RemoveWhitespaceToNextCharCommand(sublime_plugin.TextCommand):
def run(self, edit):
reg = self.view.find(r"\s+", self.view.sel()[0].a)
self.view.replace(edit, reg, "")
点击保存,它会自动选择您的文件夹作为位置。将文件命名为 。保存后,该命令将可用,无需重新启动。Packages/User
remove_whitespace_to_next_char.py
remove_whitespace_to_next_char
按照以下说明创建自定义键绑定,请仅使用此键绑定:
{
"keys": ["ctrl+alt+space"],
"command": "remove_whitespace_to_next_char"
}
同样,您可以使用当前未使用的任何键组合。保存键绑定文件,就是这样!每当您想删除光标前面的下一个非空格字符之前的任何空格时,只需按 .CtrlAltSpace
该插件也将在 ST3 和 ST4 中按原样工作。
原始答案
遗憾的是,无法用宏记录查找/替换操作。但是,可以使用名为 RegReplace
的插件来执行此任务。由于仍在使用 ST2,因此需要将存储库的 ST2 分支直接克隆到文件夹中,该文件夹是在选择“首选项”→“浏览包...
”时打开的文件夹。克隆存储库并切换到 ST2 分支后,重新启动 ST2 以使正确版本的插件生效。Packages
现在,选择“首选项”→“包设置”→“Reg Replace → Settings-User
”,将打开一个空白文件。将其内容设置为以下内容:
{
"replacements": {
"remove_spaces_to_next_char": {
"find": "(\\s+)",
"replace": "",
"greedy": false,
"case": false
}
}
}
保存文件 - 它应该自动保存在您的目录中。正则表达式非常简单 - 它只是在当前光标位置的前面找到一个或多个空格字符(包括、、和),直到下一个非空格字符,并将它们替换为任何内容。Packages/User
\s
\t
\r
\n
接下来,我们需要将新命令分配给键绑定。选择“首选项”→“键绑定-用户
”以打开自定义键绑定文件。如果没有任何设置,则该文件将包含一个空的 JSON 数组:
[
]
如果您已经分配了自定义键绑定,则可以将新键绑定放在您想要的任何位置。在开头和结尾之间添加以下内容:[
]
{
"keys": ["ctrl+alt+space"],
"command": "reg_replace",
"args": {"replacements": ["remove_spaces_to_next_char"]}
}
这会将我们的新命令分配给 ,该命令在 ST2 的全新安装中未使用。您需要验证它是否在您的环境中未使用。您可以将其更改为您喜欢的任何组合。CtrlAltSpace
就是这样。在光标位于第一行位置的示例文本中,运行该命令将生成:|
hello here is the cursor |dfsdlkf
注意:该解决方案也应该使用 ST3 和 ST4 开箱即用。只需确保使用包控制来安装插件而不是手动克隆,这样您就可以获得更新(如果将来有更新)。RegReplace
评论
RegReplace
评论