【问题标题】:Nano insert newline in search and replaceNano 在搜索和替换中插入换行符
【发布时间】:2014-11-15 13:33:39
【问题描述】:

基本上,我需要将文本的一部分加倍。我知道我可以做到:

sed G

但如果我可以直接在 Nano 中完成它会很棒。

我尝试搜索行尾 ($),然后将其替换为 \n[:newline:] 之类的内容,但似乎 RegExp 仅用于搜索而不用于替换——它总是插入文字表达。

但是,this question 表示这是可能的。虽然我不知道怎么做。是的,我有:

set regexp

在我的 .nanorc 中

【问题讨论】:

    标签: regex search replace nano


    【解决方案1】:

    set regexp 在你的配置文件中会:

    默认情况下进行扩展正则表达式搜索。

    您也可以使用 Meta + R* 交互激活它

    但就是这样!使用 RegEx 搜索,但作为替换 Nano 只接受字符串,除了引用的捕获组 \1\9

    Nano 的 RegEx 风格是 POSIX 实现,您可能会感兴趣,它不计算 [:newline:],但接受 \s[:cntrl:](控制字符)和 [:space:](所有空格字符,包括换行符)也否定了POSIX classes[^[:graph:]]

    回答

    做不到,没用,试过了:

    • 空白显示切换 Meta + P - 无可见变化
    • 逐字输入 Meta + Shift + V 然后按 Enter 将转换为 可见 ^M 编码(但适用于 Tab 输入)
    • "Special Functions" Esc + Esc 然后是 3 位数字序列 - 控制字符 不接受 (但接受可见字符 013 实际上会将其解释为用户按下 Enter)
    • Unicode Input Ctrl + Shift + U - 控制字符不接受(但是接受可见字符)

    一些控制字符的ASCII码:

          DEC   HEX   
    (\t)    9  0x09   Horizontal Tab
    (\n)   10  0x0a   New Line
    (\r)   13  0x0d   Carriage Return
     ( )   32  0x20   Space
    

    纳米命令:

    • 搜索 Ctrl + W
    • 查找下一个 + W*
    • 搜索时切换替换 Ctrl + R
    • 搜索和替换 Ctrl + \

    *元通常是 Alt


    PS:“有时失败就是答案,或者有人应该证明我错了”
    PPS:

    【讨论】:

    • 哇,感谢您的广泛调查!至少现在我可以确定 :)
    • 其实第二个公告点是错误的。它不是“可见的 ^M”,而是转换为 ASCII 13 或 CR 字符。但是 Unix 换行符是 ^J。不幸的是,meta-V + ctrl-J也不起作用。
    【解决方案2】:

    不仅目前在 nano 中无法做到这一点,而且my feature request 在错误跟踪器中也被标记为“不会修复,太难了”。

    【讨论】:

    • 这不再是真的。借助外部命令和宏,nano 已成为文本编辑强国。
    • @MarkWeston 我的回答指出编辑器本身不支持它,也不会,因为它的内部结构,你的回答是唯一有效的。
    【解决方案3】:
    1. 选择文本块。
    2. 按插入命令。
    3. 按翻转执行命令。
    4. 按翻管命令。
    5. 按 flipnewbuffer 命令。
    6. 执行您想要的任何外部命令。该命令会将选择通过管道传输到标准输入,并且选择将被命令的标准输出替换。

    此外,您可以通过录制和运行宏来自动执行此操作。 您还可以将键绑定到宏序列。

    【讨论】:

    • 为像我这样的新手进一步阐述,具体步骤如下: 1.选择整个搜索区域(Shift+Arrows,或 Alt+A)。 2.打开执行菜单(Ctrl+T)。 3.输入|sed 's/to_be_cut/to_be_put/g' 例如用 2 个换行符替换换行符:|sed 's/\n/\n\n/g'。 4.按回车。 5.成功。
    猜你喜欢
    • 2022-08-03
    • 2017-01-05
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多