【问题标题】:Copy text from nano editor to shell [closed]将文本从 nano 编辑器复制到 shell [关闭]
【发布时间】:2015-08-10 23:43:40
【问题描述】:

是否可以将使用nano 打开的文件中的文本复制到shell?

我有一个文本文件,我想将几​​行复制到控制台,但找不到复制文本的键盘快捷键。

【问题讨论】:

  • 你在用鼠标吗?

标签: linux ubuntu text editor nano


【解决方案1】:

我不知道有什么方法可以直接在 nano 中执行此操作。但是,您可以使用“cat”或“grep”在控制台中显示文件的行。

如果你使用像“screen”这样的终端多路复用器,你可以复制和粘贴字符串like this

【讨论】:

  • 这对我有用。 cat 文件到终端,然后突出显示文本并使用 shell 复制和粘贴。 (Shift Ctrl C/Shift Ctl V)
【解决方案2】:

nano 似乎无法从全局/系统剪贴板或外壳复制/粘贴。

但是,您可以使用nanofile buffers 将文本从一个文件复制到另一个文件。当您使用^R (Ctrl + r) 打开另一个文件缓冲区时,您可以使用nanos 内置的复制/粘贴功能(如下所述)复制文件之间:

  • M-6 (Meta + 6) 将行复制到nano 的剪贴板。
  • ^K (Ctrl + k) 剪切当前行并将其存储在nano的剪贴板中。
  • ^^ (Ctrl + Shift + 6) 选择文本。选择文本后,您可以使用上述命令对其进行复制或剪切。
  • ^U (Ctrl + u) 从nano 的剪贴板粘贴文本。

最后,如果上述解决方案不适合您并且您使用的是终端模拟器,您可以使用 Ctrl + Shift 从全局剪贴板复制/粘贴kbd> + cCtrl + Shift + v (Cmd + cCmd + v 在 OSX 上)。 screen 还提供了应在 nano 中工作的外部复制/粘贴。最后,如果您需要做的只是从文件中捕获某些行或文本,请考虑使用grep 来查找这些行并使用xclipxsel(或在OSX 上为pbcopy/pbpaste)将它们复制到全局剪贴板(和/或从剪贴板粘贴)而不是nano

【讨论】:

  • 什么是Meta?我的键盘上没有这样的键。
  • M- 代表 Meta 键,可以表示在按字母键的同时按“Alt”键或在按字母键之前按“Esc”键。 "Alt" 通常只在使用 X 版本的应用程序时有效,所以在使用哑终端时,只有 "Esc" 有效。引用自:link@FredericLachasse 的回答
  • Meta 是操作系统系统密钥;所以,Win 在 Windows 上,that weird looped square thingCommand 在 macOS 上。然而,在 nano 中,M 代表 Alt——不要问我为什么。
【解决方案3】:

纳米到壳牌:

1.用鼠标标记文字。

2. 在 Shell 中右键单击鼠标。

在 Nano 中:

1. CTRL+6 CTRL+ Shift+6 按住Shift并移动光标)标记设置并标记你想要的(end 可以做一些额外的帮助)。

2. ALT+6 用于复制标记的文本。

3. CTRL+u 在要粘贴的位置。

1. CTRL+6 CTRL+ Shift+6 按住Shift并移动光标)标记设置并标记你想要的(end 可以做一些额外的帮助)。

2. CTRL+k 用于剪切要复制的内容

3. CTRL+u 用于粘贴刚刚剪切的内容,因为您只想复制。

4. CTRL+u 在你要粘贴的地方。

【讨论】:

  • 但不是复制,是剪切!
  • 如果文本比当前显示长,这不起作用。
  • 你没有提到使用 alt + 6 来复制标记的文本。
  • 这里的问题是你的鼠标复制的时间不能超过 nano 中的显示时间。
  • 如果ALT + 6 没有复制,使用ALT +SHIFT + 6
【解决方案4】:

1) Ctrl + 6 标记您要复制的文本

2)Ctrl + k剪切文字,Ctrl + u粘贴回原处

3) 转到您要粘贴步骤 (2) 中标记的代码的所需行。 Ctrl + u 粘贴。

希望对你有帮助。

【讨论】:

  • 所以这是一个两步过程...我们剪切、恢复、然后复制。很棒
【解决方案5】:

只需使用 Ctrl+Shift+6 即可复制当前行,也可以使用 Ctrl+ 设置标记6 并使用上述命令复制多行。

【讨论】:

    【解决方案6】:

    这个帖子很老了,但今天我对同样的问题感到谦卑,上面提到的所有解决方案都没有帮助。正如我希望复制长线我的解决方案是 - 根据上面@themisterunknown 写的 - 在 nano 之外。我用过 awk!

    awk '{ if (NR==87) print $0 }' filename
    

    其中 NR==[行号] 和 $0 是完整的行。

    【讨论】:

    • 我认为这应该被标记为正确答案。该问题清楚地要求将文本粘贴到 nano 编辑器之外,如果行太长而无法在屏幕上显示,那么 nano 是不可能的。
    • 这就是答案,简单明了
    【解决方案7】:

    相对简单的解决方案:

    1. 从要复制的第一个字符开始,按住 Shift 一直到最后。

    2. Ctrl+K,从文件中剪切文本。

    3. Ctrl+X,然后按 N 不保存任何更改。

    4. 将剪切的文本粘贴到您想要的任何位置。

    或者,如果您的文本适合屏幕,您可以简单地使用鼠标进行选择,它会自动将其复制到剪贴板。

    【讨论】:

    • 应该的。当你这样做时会发生什么?
    【解决方案8】:

    对于仍在寻找纳米编辑器中复制+粘贴解决方案的人

    选择文本

    • ctrl+6
    • 使用箭头将光标移动到您希望标记结束的位置

    注意:如果要复制整行,无需标记,只需将光标移至该行即可

    复制:

    • alt + 6

    粘贴:

    • ctrl + U

    Reference

    【讨论】:

      【解决方案9】:

      第一种方法

      当内容不包含●时,此方法似乎有效。

      在您的 WM 或 DE 中安装 xsel 或类似的并为此命令分配一个全局快捷键:

      xsel -o | sed -r 's/^ ?[[:digit:]]+($| +)//g' | perl -pe 's/\n/●/g' | sed -r 's/●●/\n\n/g; s/ ?● {1,}/ /g; s/●/\n/g' | xsel -b
      

      把它放在你的 ~/.Xresources 中:

      *selectToClipboard: false
      

      在您的xterm 中发出一次以激活上述选项:

      xrdb -load ~/.Xresources
      

      现在选择行包括行号,方法是在拖动鼠标的同时按 Shift。选择后单击您的组合键;行已被复制并准备好粘贴到您喜欢的任何地方。

      第二种方法

      没有第一种方法的缺点。

      安装xdotoolxsel 或类似的。

      这两行

      Ctrl <Btn3Down>: select-start(PRIMARY, CLIPBOARD)
      Ctrl <Btn3Up>: select-end(CLIPBOARD, PRIMARY)
      

      在你的 ~/.Xresources 中像这样:

      *VT100*translations: #override \n\
          Alt <Key> 0xf6: exec-formatted("xdg-open '%t'", PRIMARY, CUT_BUFFER0) \n\                           
          Ctrl <Key>0x2bb: copy-selection(CLIPBOARD) \n\                              
          Alt <Key>0x2bb: insert-selection(CLIPBOARD) \n\                             
          Ctrl <Key> +:       larger-vt-font() \n\                                    
          Ctrl <Key> -:       smaller-vt-font() \n\
          Ctrl <Btn3Down>: select-start(PRIMARY, CLIPBOARD) \n\
          Ctrl <Btn3Up>: select-end(CLIPBOARD, PRIMARY) 
      

      在您的xterm 中发出一次以激活上述选项:

      xrdb -load ~/.Xresources
      

      在您的路径中创建此脚本:

      #!/bin/bash                                                                  
      
      filepid=$(xdotool getwindowpid $(xdotool getactivewindow))                   
      file=$(ps -p "$filepid" o cmd | grep -o --color=never "/.*")                   
      
      firstline=$(xsel -b)                                                         
      lastline=$(xsel)                                                             
      
      sed -n ""$firstline","$lastline"p" "$file" | xsel -b
      

      分配一个全局快捷键以在您的 WM 或 DE 中调用此脚本。

      现在,当您要复制一行(段落)时,在按住 Shift+Ctrl 的同时通过鼠标右键仅选择该行(段落)的行号。选择后单击您之前创建的自定义全局键组合。行(段落)已被复制并可以粘贴到您喜欢的任何位置。

      如果要复制多行,请先执行上述操作,然后复制范围的最后一行,而不是 Shift+Ctrl+Btn3(鼠标右键),只需通过鼠标左键选择数字,同时仅按 Shift。在此之后,再次通过您的自定义全局快捷方式调用脚本。行的范围被复制并准备粘贴到您喜欢的任何地方。

      【讨论】:

        【解决方案10】:

        更简单的方法
        $ cat my_file

        Ctrl+Shift+c 从终端复制所需的输出

        Ctrl+Shift+v把它粘贴到你喜欢的地方

        【讨论】:

        • 这不是所需的响应,问题是如何 cpy 显示到 nano 编辑器中的文本
        • 确实,这是解决手头问题所需的唯一适当响应。这对于那些发现无法在 nano 中完成但仍希望从文本文件中复制行的人来说非常有用。我们应该接受“做不到”的答案并提供有用的替代方案。
        • 实际上,问题(除非在编辑中更改)不是如何将文本显示复制进入 nano 编辑器,而是输出
        • 对不起,我的错。我正在回复@DaniloCalzetta。我认为这在上下文中很明显,但事实并非如此。我很抱歉。
        • 你的意思是我的第一条评论?我只能在约 5 分钟左右后进行编辑。 SO 规则。
        【解决方案11】:

        无法在 nano 之外访问复制缓冲区,而且我在任何地方都找不到要读取的缓冲区文件。

        完全 NOX 时,这是一个肮脏的替代方案:在 bash 历史记录中打印给定的文件行。

        因此,给定的行可以通过 UP 键作为命令使用。

        sed "LINEq;d" 文件名 >> ~/.bash_history

        示例

        sed "342q;d" doc.txt >> ~/.bash_history
        

        然后将历史重新加载到当前会话中:

        history -n
        

        或者要在新提示下自动重新加载历史记录,请将其粘贴到 .bash_profile

        PROMPT_COMMAND='history -n ; $PROMPT_COMMAND'
        

        注意 AZERTY 键盘和很可能需要 SHIFT 以从顶部键打印数字的其他布局。

        要切换nano 文本选择 (Mark Set/Unset),快捷方式是:

        CTRL + SHIFT + 2

        或者

        ALT + a

        然后您可以使用箭头键选择文本。

        所有其他快捷方式都可以作为文档正常工作:

        CTRL + k F9 剪切。

        CTRL + u F10粘贴。

        【讨论】:

          【解决方案12】:

          用鼠标选择nano中的文本,然后右键单击鼠标。 文本现在已复制到剪贴板。 如果它不起作用,请尝试使用鼠标选项启动 nano: nano -m 文件名

          【讨论】:

            【解决方案13】:

            M-^ 是复制文本。我的环境中的“M”是“Esc”键!不是“Ctrl”; 所以我使用 Esc + 6 来复制它。

            [nano help] 退出键 序列用 Meta (M-) 符号表示,可以使用 Esc、Alt 或 Meta 键,具体取决于您的键盘设置。

            【讨论】:

              【解决方案14】:

              以下内容适用于 Nano,但也适用于终端中的任何地方:

              • 从终端复制文本,用鼠标选择后:Ctrl + shift + C

              • 将文本粘贴到终端:Ctrl + shift + V

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-09-21
                • 2018-12-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多