16

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

sed G

但如果我可以直接在 Nano 中完成,那就太好了。

我试图搜索行尾 ( $),然后用类似的东西替换它,\n[:newline:]似乎 RegExp 只被识别用于搜索而不是替换——它总是插入文字表达式。

但是,这个问题表明这是可能的。虽然我不知道怎么做。是的,我有:

set regexp

在我的 .nanorc

4

3 回答 3

15

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

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

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

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

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

回答

它不能完成,没有任何效果,尝试过:

  • 空白显示切换Meta+ P-无可见变化
  • Verbatim Input Meta++然后按下将转换为可见编码(但适用于输入ShiftVEnter^MTab
  • 特殊功能Esc+Esc然后是 3 位数字序列 -不接受控制字符(但接受可见字符013实际上会像用户按下一样解释它Enter
  • Unicode 输入 Ctrl++ -不接受控制字符(但接受可见字符ShiftU

一些控制字符的 ASCII 码:

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

纳米命令:

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

* Meta 通常是Alt关键


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

于 2015-03-29T11:51:12.457 回答
6

不仅目前无法在 nano 中执行此操作,而且我的功能请求也在错误跟踪器中被标记为“不会修复,太难了”。

于 2016-02-18T11:18:15.037 回答
4
  1. 选择文本块。
  2. 按插入命令。
  3. 按翻转执行命令。
  4. 按 Flippipe 命令。
  5. 按flipnewbuffer 命令。
  6. 执行您想要的任何外部命令。该命令将通过管道将选择输入标准输入,并且选择将被命令的标准输出替换。

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

于 2018-07-03T09:27:50.783 回答