我想知道是否有一种更简单的方法,可以使用记事本++或崇高的文本按颜色逐一更改仅突出显示的彩色编程文本(用于在设置时等)的大小写。因此,例如,更改批处理文件test.bat中所有蓝色文本的大小写:
SETLOCAL DisableDelayedExpansion
FOR /F "delims=" %%A IN ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c
ECHO(0x09"') DO SET "TAB=%%A"
ECHO This is a %TAB%
语法将更改为标题大小写,例如:
Setlocal DisableDelayedExpansion
For /F "delims=" %%A In ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c
Echo(0x09"') Do Set "TAB=%%A"
Echo This is a %TAB%
我目前通过右键单击,然后从上下文菜单中选择“插件命令”>“使用语法突出显示复制文本”来执行此操作,将该文本复制到Microsoft Word并将其保存为html文件,然后在notepad ++中打开html文件进行编辑,然后将text-transform: uppercase;
粘贴到color:blue;
行下,然后再次以单词形式打开(不在编辑模式下),最后将其复制到notepad ++,但想知道是否有一种更简单的方法而不查找每个单词但相反,只是批量格式化相似颜色的单词。
答案 0 :(得分:2)
Sublime具有一个称为title_case
的内部命令来执行此操作,可以从菜单中以Edit > Convert Case > Title Case
或从命令面板中以Convert Case: Title Case
来使用。
因此,如果选择了文档中的所有关键字,则可以使用该命令执行操作。您可能必须分批执行(适度地使用双关语),例如将光标置于SETLOCAL
中,并反复按 Ctrl + D 以选择所有实例,然后循环返回并做下一个关键字。
为使过程更好地自动化,可以创建一个简单的插件,该插件选择所有关键字并运行命令,以便您可以在一个简单的步骤中执行大部分操作。
下面是一个示例,您可以通过从菜单中选择Tools > Developer > New Plugin...
,将存根代码替换为下面的代码,然后将Sublime保存为默认位置,例如{{ 1}}或类似的内容(仅位置和扩展名很重要):
dos_batch_case_fix.py
这将实现一个名为import sublime
import sublime_plugin
# A list of extra words to change the title case for that aren't considered
# keywords by the dos batchfile syntax.
_extra_words = ["do", "in"]
class BatchTitleCaseCommand(sublime_plugin.TextCommand):
"""
For a dos batch file, convert the case of all keywords and all found
instances of the words in _extra_words to title case.
"""
def run(self, edit):
# Save the current selection, then clear it
saved_sel = list(self.view.sel())
self.view.sel().clear()
# Find everything that the syntax thinks is a keyword and add it to
# the selection
for region in self.view.find_by_selector("keyword"):
self.view.sel().add(region)
# Convert the list of extra words to a regular expression and add all
# whole word matches to the selection.
regex = r"\b({0})\b".format("|".join(_extra_words))
for region in self.view.find_all(regex, sublime.IGNORECASE):
self.view.sel().add(region)
# Convert the selection to title case.
self.view.run_command("title_case")
# Restore the selection to what it was on entry.
self.view.sel().clear()
for region in saved_sel:
self.view.sel().add(region)
def is_enabled(self):
return self.view.match_selector(0, "source.dosbatch")
的新命令,该命令仅在批处理文件中有效。它保存当前选择,然后选择所有关键字(由当前使用的语法确定),运行命令以更改大小写,然后将原始选择放回去。您可以将此命令绑定到与其他任何内部命令相同的键。
由于这使用当前文件的语法来检测关键字是什么,因此它无法捕获batch_title_case
和IN
之类的东西,因为(至少当前)批处理文件的Sublime语法没有认为这些不是关键字。
因此,这也说明了如何处理这些单词。此处的代码执行不区分大小写的整个单词搜索,以搜索单词列表(以DO
表示),并选择这些单词以及所选文本。
这是半危险的,因为与按语法范围进行关键字搜索不同,正则表达式搜索将在任何位置找到这些单词,包括在字符串中可能不代表关键字而仅代表常规单词的字符串中。
因此,在文件副本上使用此文件(或能够_extra_words
)并确认它没有完成您原本没有期望的操作是一个好主意。
我可以想象,目视检查将比您当前使用的解决方案花费更少的精力。
如果需要,可以修改上面的插件以删除保存和恢复选择的部分,以及执行undo
命令;在这种情况下,该命令只会将文件中的选择更改为它认为需要加标题的单词,并允许您手动执行操作。
请注意,如果您使用包含很多关键字的非常大的文件,那么同时进行多个选择可能会使速度变慢。
上面的插件创建了一个名为title_case
的命令。有多种执行命令的方法,具体取决于您要如何执行。下面提到batch_title_case
软件包的地方,可以从菜单中使用User
命令来找到它。 Preferences > Browse Packages
包是上述插件的存储位置,因为使用User
时Sublime默认为该位置。
使用Developer > New Plugin
,可以在引用该命令的窗口的右侧添加自定义绑定:
Preferences > Key Bindings
可以通过将{
"keys": ["ctrl+alt+s"],
"command": "batch_title_case",
},
类型的文件添加到您的sublime-commands
包中并添加以下内容(例如User
)来将命令添加到命令面板。 MyCustomCommands.sublime-commands
将指定命令的显示方式:
caption
注意: 如上所述,该命令仅对批处理文件启用,并且“命令面板”仅显示可用命令,因此在非批处理文件中,命令不会出现在命令面板中。
通过在[
{ "command": "batch_title_case", "caption": "Command Caption Here" },
]
包中创建一个名为Context.sublime-menu
的文件,可以将该命令添加到右键单击上下文菜单中;如果已经存在这样的文件,则仅将User
行添加到现有文件中的适当位置。 { ... }
将指定命令的显示方式:
caption
注意: 如上所述,该命令仅对批处理文件启用,因此在非批处理文件中,菜单中的命令将显示为灰色。要将上下文菜单项隐藏在不适用的文件中,请在[
{ "command": "batch_title_case", "caption": "Command Caption Here" },
]
下的上方插件代码中添加以下几行:
is_enabled()