【问题标题】:notepad++ user defined regions with foldingnotepad++ 用户定义的折叠区域
【发布时间】:2011-04-15 05:49:18
【问题描述】:

我不知道如何配置 notepad++ 以显示用户定义关键字的区域。

我有一个大的跟踪文件,它显示了一个过程的开始和结束。 跟踪文件如下所示:

Beginn abc.def;
   ...
   Beginn ghi.jkl;
   ...
   Ende ghi.jkl;
   ...
Ende abc.def;

我想像这样折叠这些区域:

[+] Beginn abc.def;

[-] Beginn abc.def;
       ...
[+]    Beginn ghi.jkl;
       ...
    Ende abc.def;

如何配置我的记事本++ 来显示它。 可能吗?您还有其他建议吗?

【问题讨论】:

标签: configuration notepad++ folding regions


【解决方案1】:

6.5.5及以上版本:

在“语言”菜单下有一个名为“Define your language...”的菜单项

在“文件夹和默认”选项卡中有一个名为“代码折叠”的组,您可以在其中输入“打开”和“关闭”关键字。

对于早于 6.5.5 的版本:

在“View”菜单下有一个名为“User-Defined Dialog...”的菜单项

在“文件夹和默认值”选项卡中,您可以输入“文件夹打开关键字”和“文件夹关闭关键字”

【讨论】:

  • 有没有办法将这些添加到现有的语言定义中?具体来说,我可以添加 cmets 来创建折叠部分,例如: /**/ ... [lots of code] ... /**/
  • 正如您在图片中看到的那样,有一种方法可以将语言文件复制并导出。 Notepad++ 存储现有的语言配置。也许您可以将它们导入用户定义的并编辑它们。祝你好运。
  • 在 6.5.5 版本中,此对话框位于“语言”菜单下。我刚刚添加了#region end #endregion,折叠效果很好!
  • @adg:我也想在 Javascript 中添加 // #region 折叠功能。你是怎么做到的?你把它添加到了哪种语言中?
  • @StephanSchielke,现在在“语言>>定义你的语言”下
【解决方案2】:

另一种简单的方法是添加一个注释标记,后跟一个 open-block 来开始一个块,一个注释标记后跟 end-block 来结束一个块。在 C、C++、Java、Javascript 等语言中,它看起来像这样:

//{

//}

【讨论】:

  • 从 NPP v6.4.3 开始,快速简便的用户定义对话似乎消失了(或转入用户定义的语言语法)。因此,简单地将可折叠区域语法添加到内置语言中变得不简单。但是来自 Marcelo 的这个解决方案非常快速和简单,并且适用于 NPP 6.4.3。
  • 谢谢!现在我做://{ #region LOADING//} #endregion LOADING 在 Javascript 中
  • “添加'评论命令'”是如何执行的?我有与所示相同的代码,但没有折叠选项。我想必须使用 Alt+h 选择和隐藏该块?
  • 我正在使用Notepad++ 6.7.9.2。在此版本中,您需要删除注释开头和括号之间的空格。所以//{ 有效,但// { 无效。
【解决方案3】:

第一步:添加一个具有打开和关闭功能的唯一键(即,

#1
{{{
#2
{{{
#2
}}}
##
}}}

使用缩进/或 cmets 表示嵌套级别。

第 2 步:完成后{CTRL}-H。替换所有 '{{{' 和 '}}}'。

第 3 步:评论条(应用)。

【讨论】:

  • 这些方法都很慢。
  • ?所以你每次添加一个新的都需要 Ctrl H 查找和替换?
【解决方案4】:

我也有类似的问题。我想添加一个自定义标签,如 #region / #endregion 以在不支持它的语言中创建任意折叠点。具体来说,我正在尝试为 php 执行此操作。

研究了一两个小时后,由于底层的闪烁词法分析器,修改现有语言似乎相当困难,编写插件可能是完成此任务的唯一方法。

我确实发现了一个不错的解决方法:

将要折叠的代码包装在 cmets 中,例如:

#{ 
...
#}

然后将光标移动到左大括号之前并按 CTRL+ALT+b 突出显示整个块,然后按 ALT+h 隐藏它。

这是一种与折叠不同的操作,但它可以在紧要关头工作。

【讨论】:

  • 这些快捷方式到底有什么作用?它们不适合我,maube 这是你安装的插件吗?
  • Alt+H 有效,但它似乎只是暂时的。我只需要扩展它就可以让它消失
  • 嗨!至少,您可以提到您复制了我的答案,就像“user1881282”一样,但我并不担心。祝你有美好的一天!
  • CTRL + ALT + b 突出显示块。 (我不同意这只是从 Marcelo 的答案中复制的——没有提到使用块选择和隐藏而不是折叠,这是这个答案的关键点)
  • 感谢@Nick Rice 对击键的更正,我已将答案更正为 CTRL+ALT+B 以突出显示该块,这似乎确实有效(光标必须在 # 和 { 字符之间)
【解决方案5】:

我使用 Marcelo 的答案为自己解决了这个问题(在 Perl 中),只是做了一个改动...
如果我在注释符号和括号之间包含一个空格,那么它将不起作用。它必须立即放置在:

#START example
################{

print "Hi there! ";
print "How are you?\n";

#}END example

请注意,如果我这样做:

#END example }

文本后面的括号也不起作用

【讨论】:

    【解决方案6】:

    !!免责声明:PHP 新手!

    假设您将 PHP 包装在一些 HTML 中,您可以使用 <?php and?> 定义自定义部分。

    例如:

    <html>
    <head></head>
    <body>
    <?php 
    $cities[1] = "Phoenix";$cities[2] = "Tucson";$cities[3] = "Flagstaff";  
    $capitals['CA'] = "Sacramento";$capitals['TX'] = "Austin";$capitals['OR'] = "Salem";    
    $cities[] = "Phoenix";$cities[] = "Tucson";$cities[] = "Flagstaff"; 
    echo "Here are cities: $cities[1]";echo nl2br("\n");
    ?>
    </br>
    <?php
    $cities = array( "Phoenix","Tucson","Flagstaff");   
    $capitals = array( "CA" => "Sacramento","TX" => "Austin","OR" => "Salem",);
    echo $capitals['TX'];echo nl2br("\n");  
    ?>
    <body>
    </html>
    

    Notepad++ 将允许您任意折叠这些部分,并且您可以用“#”标记这些部分。 刚学PHP,所以我的代码可能不太好;这仍然是一个持续的过程。

    【讨论】:

    • 谢谢!正是我需要的 PHP :)
    【解决方案7】:

    如果是 SQL,那么用 BE​​GIN 和 END 封装代码效果很好。显示 BEGIN 语句,以及您在同一行添加的任何 cmets。

    例如:

    BEGIN --creating temp table with eligible users
    
       ...code
    
    END
    

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2011-10-27
      相关资源
      最近更新 更多