从less中复制特定行

时间:2014-10-29 09:38:44

标签: linux clipboard

在搜索谷歌之后,我决定写一下stackoverflow,我无法找到关于我的简单问题的任何解决方案,因此我更加惊讶。

问题是:

如何从less中复制特定行?让我们说我正在打开一个男人(默认情况下打开较少)并想要选择并将其复制到剪贴板,之后可以说将其粘贴到vim中打开的文件中?我不想用鼠标滚轮粘贴。我正在寻找一个简单的Ctrl-cCtrl-v方法,就像在Windows中一样。

打开手册页时,我无法使用' v'切换到我的默认编辑器(即vim)。关键是因为" Cannot edit standard input"错误。 非常感谢,如果这个问题很愚蠢,我很抱歉。

4 个答案:

答案 0 :(得分:9)

tl; dr,使用m|

实施例

  1. 7g
  2. mx
  3. 6g
  4. |x
    • xclip(Linux)或pbcopy(macOS),复制到剪贴板。
    • cat > file,保存到文件,或cat >> file用于追加模式。
  5. less的手册页中,我们会得到:

       less - opposite of more    
        
    

    要学习的关键事项只有两个less命令: m (标记), | < / kbd>(管道)。

    命令m(标记)

      
        

    后跟任何小写字母,用该字母标记当前位置。

      

    我们上面使用的标记为x,与步骤2中一样,它标记了 7 x

    命令|(管道)

      

    | <m> shell-command

         
        

    <m>代表任何标记字母。将输入文件的一部分输入到给定的shell命令     要传送的文件部分 当前屏幕上的第一行字母标记的位置。
        <m>也可以^$分别表示文件的开头或结尾。如果<m>.<newline>,则会显示当前屏幕。

      

    使用 |x pbcopy,我们将行范围[7, 6]传输到pbcopy,因为行6当前是屏幕上的第一行,行7是我们标记为x的行,pbcopy是将文本放入macOS剪贴板的命令。

    替代方案,在Linux上使用xclip,甚至dd of=/path/to/file来保存为文件。

    注意

    实际上文本范围是包含边界的,因此范围的起始行和结束行都被复制。或者至少复制2行。

    我们以向后的方式标记范围,即从下到上,否则less可能表现得很笨拙,并将整个屏幕扔过管道。

答案 1 :(得分:0)

我想我找到了解决方案:它正在使用tmux。 Tmux提供了它自己的剪贴板(如果我错了,请纠正我)。从tmux我可以进入复制模式,无论我在哪里(在MAN页面,少,控制台输出),让我复制内容。

答案 2 :(得分:0)

当前接受的答案是基于设置标记、导航一行、将当前屏幕向上输送到该标记到剪贴板。

复制 1 行到剪贴板

  1. 导航到该行(使用 1g 转到第一行)
  2. |
  3. RETURN
    • head -1 | clip(或 xclip 等)
    • head -1 | tr '\n' '\' | clip

说明

  1. | 将整个屏幕输入到命令中,所以导航到我们想要的开始位置。

2-3。 | <m> shell-command 如果 <m>.newline,当前屏幕是管道传输的。

    • head -1 只是第一行
    • | tr '\n' '\'\ 替换回车符(用于粘贴到 shell)
    • | clip 管道到剪贴板(或 /dev/clipboardxclip 等)

答案 3 :(得分:-1)

简答: Ctrl + C Ctrl + V 与其他操作相关联。例如, Ctrl + C 向前台进程发送中断信号。通常你需要使用 Ctrl + Shift + C Ctrl + Shift + V ,以便从终端进行复制和粘贴。

答案很长:来自超级用户的very good thread