在 Sublime Text 3 中,Edit->Comment->Toggle Comment
(在 Mac 上为command- /)将注释掉当前选择(或当前行),或取消注释,具体取决于其当前状态。它通过在当前行的开头(当前行开始的列中)插入空格和注释起始字符来实现此目的,并保留前导空格。例如,注释掉此行的第四行:
#***************************************************************************
sub invoke
{
my($self) = @_;
结果是:
#***************************************************************************
sub invoke
{
# my($self) = @_;
如果它可以将注释字符左对齐,我会非常喜欢它,就像这样:
#***************************************************************************
sub invoke
{
# my($self) = @_;
有办法吗?谢谢!
答案1
警告:
执行此操作会涉及 Sublime 的核心文件之一。如果您对此感到不舒服,请不要继续。
话虽如此,您要做的变化并不大,而且很容易逆转。别担心,我会让它变得简单。
你需要做的第一件事是安装包控制如果你还没有安装。然后,安装PackageResourceViewer
. 打开命令面板,输入prv
调出PackageResourceViewer:
选项,然后选择PackageResourceViewer: Open Resource
。向下滚动一点,选择Default
,然后再滚动一点,选择comment.py
在 Sublime 中打开文件。现在您可以点击Esc关闭命令面板。前两个函数定义如下所示:
import sublime, sublime_plugin
def advance_to_first_non_white_space_on_line(view, pt):
while True:
c = view.substr(pt)
if c == " " or c == "\t":
pt += 1
else:
break
return pt
def has_non_white_space_on_line(view, pt):
while True:
c = view.substr(pt)
if c == " " or c == "\t":
pt += 1
else:
return c != "\n"
advance_to_first_non_white_space_on_line()
首先,注释掉除最后一条语句之外的所有行return
:
def advance_to_first_non_white_space_on_line(view, pt):
# while True:
# c = view.substr(pt)
# if c == " " or c == "\t":
# pt += 1
# else:
# break
return pt
继续has_non_white_space_on_line()
,注释掉全部以下行:
def has_non_white_space_on_line(view, pt):
# while True:
# c = view.substr(pt)
# if c == " " or c == "\t":
# pt += 1
# else:
# return c != "\n"
然后,在语句后创建一个新行return
,缩进 4 个空格,并粘贴以下内容:
return view.substr(pt) != "\n"
使整个事情看起来如下:
def has_non_white_space_on_line(view, pt):
# while True:
# c = view.substr(pt)
# if c == " " or c == "\t":
# pt += 1
# else:
# return c != "\n"
return view.substr(pt) != "\n"
就这样!保存文件,然后试着注释掉其中的一些行 - 您将看到所有#
注释字符都在第 1 列中。
现在,这显然会改变全部语言,而不仅仅是 Python,所以要做好准备。要撤消更改,只需将两个函数定义替换为上面第一个代码块中的函数定义。哦,要再次访问该文件,您不需要通过 PackageResourceViewer。而是选择Preferences -> Browse Packages...
(或者Sublime Text -> Preferences -> Browse Packages...
如果您使用的是 OS X)Packages
在操作系统的文件管理器(Windows 资源管理器、Finder、Nautilus 等)中打开文件夹。Packages/Default
您将在 中找到comment.py
,就像您更改的那样。如果您想恢复到以前的状态,只需删除该文件即可(原始文件存储在其他地方,但当 中存在同名文件时,它将被覆盖Packages
)。
如果你是真的如果你喜欢冒险,你可以克隆文件,重命名它,并修改它以包含仅使用某些语言进行缩进的逻辑,但这超出了本答案的范围。堆栈溢出如果你想知道如何做到这一点。
答案2
为了实现所有语言而不覆盖任何核心命令,您只需在您的文件夹disable_comment_indent.tmPreferences
中创建一个名为(只有文件扩展名很重要,基本名称本身并不重要) (即,其中指的是当您转到“首选项”菜单->浏览包时打开的文件夹)的文件,内容如下:Packages/User/
Packages
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>scope</key>
<string>source</string>
<key>settings</key>
<dict>
<key>shellVariables</key>
<array>
<dict>
<key>name</key>
<string>TM_COMMENT_DISABLE_INDENT</string>
<key>value</key>
<string>yes</string>
</dict>
</array>
</dict>
</dict>
</plist>