是否可以在第 1 行使此标题成为每个单词或符号的项目列表,并使用键盘快捷键用空格分隔。这样我就可以选择标题,然后点击快捷方式,它将使标题成为如下项目列表:
尝试保存键绑定文件。
是否可以在第 1 行使此标题成为每个单词或符号的项目列表,并使用键盘快捷键用空格分隔。这样我就可以选择标题,然后点击快捷方式,它将使标题成为如下项目列表:
尝试保存键绑定文件。
没有内置任何东西,但您可以使用插件来完成。
import sublime
import sublime_plugin
import re
class SplitLineCommand(sublime_plugin.TextCommand):
def run(self, edit, split_pattern=" "):
view = self.view
cursors = view.sel()
if len(cursors) == 1:
cursor = cursors[0]
begin_offset = 0
end_offset = 0
if cursor.empty():
region = view.line(cursor)
content = view.substr(region)
new_content = re.sub(split_pattern, "\n", content)
view.replace(edit, region, new_content)
else:
region = cursor
content = view.substr(region)
new_content = ""
if view.line(region).begin() != region.begin():
new_content = "\n"
begin_offset = 1
new_content += re.sub(split_pattern, "\n", content)
if view.line(region).end() != region.end():
new_content += "\n"
end_offset = - 1
view.replace(edit, region, new_content)
cursors.clear()
cursors.add(sublime.Region(region.begin() + begin_offset, region.begin() + len(new_content) + end_offset))
view.run_command("split_selection_into_lines")
然后,您可以在密钥绑定文件中添加以下内容。
[
{ "keys": ["f8"], "command": "split_line", "args": {"split_pattern": " "}}
]
当然,将密钥更改为您想要的东西。args
如果您只是使用空格,则实际上不需要该参数。它默认为。为了完整起见,我只是将其包括在内。
编辑: 我已经更新了插件,因此它现在可以处理选择,尽管此时它不处理多个光标。
编辑 2
如果它不起作用,请尝试打开控制台并输入view.run_command("split_line")
. 这将在切换到控制台之前在您所在的任何视图中运行命令。这样你就知道命令是否真的有效。如果没有,则说明插件有问题。如果是这样,则键绑定存在问题。
我修改了上面的代码供我自己使用,所以它现在尊重空格。但我硬编码制表符而不是空格,所以如果你使用空格,你可能需要进一步改变它。它现在还假设您没有选择文本,而是将光标放在要更改为垂直间距的行中间。我将 intro/outro 作为参数保留,因此您也可以将其用于 [] 或 (),尽管在这种情况下,对于正则表达式可能需要更多的转义。
前:
fields = { 'Team1', 'Team2', 'Player1', 'Player2', 'Tab=Round', 'DateTime_UTC=DateTime', 'HasTime=TimeEntered', 'OverviewPage=Tournament', 'ShownName', 'Winner', 'Stream' },
后:
fields = {
'Team1',
'Team2',
'Player1',
'Player2',
'Tab=Round',
'DateTime_UTC=DateTime',
'HasTime=TimeEntered',
'OverviewPage=Tournament',
'ShownName',
'Winner',
'Stream',
},
import sublime
import sublime_plugin
import re
class SplitLineCommand(sublime_plugin.TextCommand):
def run(self, edit, sep=",", repl= "\n", intro="{", outro="}"):
view = self.view
find = re.escape(sep + ' ') + '*(?! *$| *\n)'
intro_repl = intro + repl
intro = intro + ' *'
outro_repl_start = sep + repl
outro_repl_end = outro
outro = ',? *' + outro
repl = sep + repl
cursors = view.sel()
if len(cursors) == 1:
cursor = cursors[0]
begin_offset = 0
end_offset = 0
if cursor.empty():
region = view.line(cursor)
content = view.substr(region)
line_str = view.substr(view.line(view.sel()[0]))
tabs = len(line_str) - len(line_str.lstrip())
intro_repl = intro_repl + '\t' * (tabs + 1)
repl = repl + '\t' * (tabs + 1)
outro_repl = outro_repl_start + ('\t' * tabs) + outro_repl_end
content = re.sub(outro, outro_repl, content)
content = re.sub(find, repl, content)
content = re.sub(intro, intro_repl, content)
view.replace(edit, region, content)
cursors.clear()
cursors.add(sublime.Region(region.begin() + begin_offset, region.begin() + len(content) + end_offset))
view.run_command("split_selection_into_lines")