【发布时间】:2015-08-10 23:43:40
【问题描述】:
是否可以将使用nano 打开的文件中的文本复制到shell?
我有一个文本文件,我想将几行复制到控制台,但找不到复制文本的键盘快捷键。
【问题讨论】:
-
你在用鼠标吗?
标签: linux ubuntu text editor nano
是否可以将使用nano 打开的文件中的文本复制到shell?
我有一个文本文件,我想将几行复制到控制台,但找不到复制文本的键盘快捷键。
【问题讨论】:
标签: linux ubuntu text editor nano
我不知道有什么方法可以直接在 nano 中执行此操作。但是,您可以使用“cat”或“grep”在控制台中显示文件的行。
如果你使用像“screen”这样的终端多路复用器,你可以复制和粘贴字符串like this。
【讨论】:
nano 似乎无法从全局/系统剪贴板或外壳复制/粘贴。
但是,您可以使用nano 的file buffers 将文本从一个文件复制到另一个文件。当您使用^R (Ctrl + r) 打开另一个文件缓冲区时,您可以使用nanos 内置的复制/粘贴功能(如下所述)复制文件之间:
M-6 (Meta + 6) 将行复制到nano 的剪贴板。^K (Ctrl + k) 剪切当前行并将其存储在nano的剪贴板中。^^ (Ctrl + Shift + 6) 选择文本。选择文本后,您可以使用上述命令对其进行复制或剪切。^U (Ctrl + u) 从nano 的剪贴板粘贴文本。最后,如果上述解决方案不适合您并且您使用的是终端模拟器,您可以使用 Ctrl + Shift 从全局剪贴板复制/粘贴kbd> + c 和 Ctrl + Shift + v (Cmd + c 和 Cmd + v 在 OSX 上)。 screen 还提供了应在 nano 中工作的外部复制/粘贴。最后,如果您需要做的只是从文件中捕获某些行或文本,请考虑使用grep 来查找这些行并使用xclip 或xsel(或在OSX 上为pbcopy/pbpaste)将它们复制到全局剪贴板(和/或从剪贴板粘贴)而不是nano。
【讨论】:
Meta?我的键盘上没有这样的键。
Meta 是操作系统系统密钥;所以,Win 在 Windows 上,that weird looped square thing 或 Command 在 macOS 上。然而,在 nano 中,M 代表 Alt——不要问我为什么。
纳米到壳牌:
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 没有复制,使用ALT +SHIFT + 6
1) Ctrl + 6 标记您要复制的文本
2)Ctrl + k剪切文字,Ctrl + u粘贴回原处
3) 转到您要粘贴步骤 (2) 中标记的代码的所需行。 Ctrl + u 粘贴。
希望对你有帮助。
【讨论】:
只需使用 Ctrl+Shift+6 即可复制当前行,也可以使用 Ctrl+ 设置标记6 并使用上述命令复制多行。
【讨论】:
这个帖子很老了,但今天我对同样的问题感到谦卑,上面提到的所有解决方案都没有帮助。正如我希望复制长线我的解决方案是 - 根据上面@themisterunknown 写的 - 在 nano 之外。我用过 awk!
awk '{ if (NR==87) print $0 }' filename
其中 NR==[行号] 和 $0 是完整的行。
【讨论】:
相对简单的解决方案:
从要复制的第一个字符开始,按住 Shift 一直到最后。
按 Ctrl+K,从文件中剪切文本。
按 Ctrl+X,然后按 N 不保存任何更改。
将剪切的文本粘贴到您想要的任何位置。
或者,如果您的文本适合屏幕,您可以简单地使用鼠标进行选择,它会自动将其复制到剪贴板。
【讨论】:
对于仍在寻找纳米编辑器中复制+粘贴解决方案的人
注意:如果要复制整行,无需标记,只需将光标移至该行即可
【讨论】:
当内容不包含●时,此方法似乎有效。
在您的 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。选择后单击您的组合键;行已被复制并准备好粘贴到您喜欢的任何地方。
没有第一种方法的缺点。
安装xdotool 和xsel 或类似的。
这两行
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。在此之后,再次通过您的自定义全局快捷方式调用脚本。行的范围被复制并准备粘贴到您喜欢的任何地方。
【讨论】:
更简单的方法:$ cat my_file
Ctrl+Shift+c 从终端复制所需的输出
Ctrl+Shift+v把它粘贴到你喜欢的地方
【讨论】:
无法在 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粘贴。
【讨论】:
用鼠标选择nano中的文本,然后右键单击鼠标。 文本现在已复制到剪贴板。 如果它不起作用,请尝试使用鼠标选项启动 nano: nano -m 文件名
【讨论】:
M-^ 是复制文本。我的环境中的“M”是“Esc”键!不是“Ctrl”; 所以我使用 Esc + 6 来复制它。
[nano help] 退出键 序列用 Meta (M-) 符号表示,可以使用 Esc、Alt 或 Meta 键,具体取决于您的键盘设置。
【讨论】:
以下内容适用于 Nano,但也适用于终端中的任何地方:
从终端复制文本,用鼠标选择后:Ctrl + shift + C。
将文本粘贴到终端:Ctrl + shift + V。
【讨论】: