问题 纳米插入换行搜索和替换


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

sed G

但如果我可以直接在Nano中做到这一点会很棒。

我试图寻找行尾($)然后用类似的东西替换它 \n 要么 [:newline:] 但似乎RegExp仅被识别为搜索而不是替换 - 它总是插入文字表达式。

然而, 这个问题 表明它有可能。虽然我无法弄清楚如何。是的,我有:

set regexp

在我的.nanorc


12582
2017-09-21 13:18


起源



答案:


set regexp 在您的配置文件中将:

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

您也可以使用以交互方式激活它  + [R*

但就是这样!使用RegEx进行搜索,但作为替换Nano仅接受字符串,但引用的捕获组除外 \1 至 \9 。

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

回答

它无法完成,没有任何效果,尝试过:

  • 空白显示切换  + P  - 没有明显的变化
  • 逐字输入  + 转移 + V 然后按 输入 会翻译成一个 可见 ^M 编码(但适用于 标签 输入)
  • 特殊功能退出 + 退出 然后是一个3位数的序列 - 控制字符 不接受 (但接受可见的字符 013 实际上会像用户按下那样解释它 输入
  • Unicode输入  按Ctrl + 转移 + ü  - 控制角色 不接受 (但接受可见的字符)

某些控制字符的ASCII代码:

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

Nano命令:

  • 搜索 按Ctrl + w ^
  • 找下一个  + w ^*
  • 搜索时切换替换 按Ctrl + [R
  • 搜索和替换 按Ctrl + \

*Meta通常是 Alt键 键


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


11
2018-03-29 11:51



哇,谢谢你的广泛调查!至少现在我可以肯定:) - Tom Karger
实际上,第二个公告点是不正确的。而不是“可见^ M”,它转换为ASCII 13,或 CR 字符。但是Unix换行是 ^J 代替。不幸, meta-V + ctrl-J也不起作用。 - Antti Haapala


答案:


set regexp 在您的配置文件中将:

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

您也可以使用以交互方式激活它  + [R*

但就是这样!使用RegEx进行搜索,但作为替换Nano仅接受字符串,但引用的捕获组除外 \1 至 \9 。

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

回答

它无法完成,没有任何效果,尝试过:

  • 空白显示切换  + P  - 没有明显的变化
  • 逐字输入  + 转移 + V 然后按 输入 会翻译成一个 可见 ^M 编码(但适用于 标签 输入)
  • 特殊功能退出 + 退出 然后是一个3位数的序列 - 控制字符 不接受 (但接受可见的字符 013 实际上会像用户按下那样解释它 输入
  • Unicode输入  按Ctrl + 转移 + ü  - 控制角色 不接受 (但接受可见的字符)

某些控制字符的ASCII代码:

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

Nano命令:

  • 搜索 按Ctrl + w ^
  • 找下一个  + w ^*
  • 搜索时切换替换 按Ctrl + [R
  • 搜索和替换 按Ctrl + \

*Meta通常是 Alt键 键


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


11
2018-03-29 11:51



哇,谢谢你的广泛调查!至少现在我可以肯定:) - Tom Karger
实际上,第二个公告点是不正确的。而不是“可见^ M”,它转换为ASCII 13,或 CR 字符。但是Unix换行是 ^J 代替。不幸, meta-V + ctrl-J也不起作用。 - Antti Haapala


不仅是目前 纳米不可能做到这一点但是 我的功能要求 在bug追踪器中也被标记为“wontfix,too hard”。


4
2018-02-18 11:18



这不再是真的。借助外部命令和宏,nano已成为一个文本编辑强国。 - MarkWeston


  1. 选择文本块。
  2. 按插入命令。
  3. 按flipexecute命令。
  4. 按flippipe命令。
  5. 按flipnewbuffer命令。
  6. 执行您想要的任何外部命令。该命令将被选择传送到stdin,选择将被命令的stdout替换。

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


0
2017-07-03 09:27