Скопируйте текст из редактора nano в оболочку

Можно ли скопировать текст из файла, открытый с помощью nano, в оболочку?

У меня есть текстовый файл, и я хочу скопировать несколько строк в консоль, но я не могу найти комбинацию клавиш для копирования текста.

Ответы

Ответ 1

Нано в оболочку:

1. Используя мышь, чтобы отметить текст.

2. Щелкните правой кнопкой мыши в командной консоли.

В Нано:

1. CTRL + 6 для Mark Set и отметьте, что вы хотите (end может оказать некоторую дополнительную помощь).

2. CTRL + k для вырезания того, что вы хотите скопировать

3. CTRL + u для вставки только что вырезанного, потому что вы просто хотите скопировать.

4. CTRL + u в том месте, куда вы хотите вставить.

или

1. CTRL + 6 для Mark Set и отметьте, что вы хотите (end может оказать некоторую дополнительную помощь).

2. ALT + 6 для копирования отмеченного текста.

3. CTRL + u в том месте, куда вы хотите вставить.

Ответ 2

Для тех, кто все еще ищет решение " копировать + вставить" в нано-редакторе

Выбрать текст

  • ctrl + 6
  • Используйте стрелку, чтобы переместить курсор туда, где вы хотите, чтобы метка заканчивалась

Примечание: если вы хотите скопировать всю строку, не нужно отмечать, просто переместите курсор на строку

Копировать:

  • Нажмите alt + 6

Вставить:

  • Нажмите ctrl + U

Ссылка

Ответ 3

nano, похоже, не имеет возможности копировать/вставлять из глобального/системного буфера обмена или оболочки.

Однако вы можете скопировать текст из одного файла в другой, используя nano файловые буферы. Когда вы открываете другой файловый буфер с помощью ^R (Ctrl + r), вы можете использовать встроенную функцию nano копирования/вставки (обрисована в общих чертах ниже) для копирования между файлами:

  • M-6 (Meta + 6) для копирования строк в буфер обмена nano.
  • ^K (Ctrl + k), чтобы вырезать текущую строку и сохранить ее в буфере обмена nano.
  • ^^ (Ctrl + Shift + 6) для выбора текста. Выбрав текст, вы можете использовать приведенные выше команды для его копирования или вырезания.
  • ^U (Ctrl + u), чтобы вставить текст из буфера обмена nano.

Наконец, если вышеупомянутое решение не будет работать для вас, и вы используете эмулятор терминала, вы можете копировать/вставлять из глобального буфера обмена с помощью Ctrl + Shift + c и Ctrl + Shift + v (Cmd + c и Cmd + v в OSX) соответственно. screen также предоставляет внешнюю копию/вставку, которая должна работать в nano. Наконец, если вам нужно только захватить определенные строки или текст из файла, рассмотрите возможность использования grep для поиска строк и xclip или xsel (или pbcopy/pbpaste в OSX), чтобы скопировать их в глобальный буфер обмена (и/или вставить из буфера обмена) вместо nano.

Ответ 4

Нить довольно старая, но сегодня я смирился с тем же вопросом, и все вышеупомянутые решения не помогли. Поскольку я хотел скопировать длинные строки, мое решение - в соответствии с тем, что @themisterunknown написал выше - вне nano. Я использовал awk!

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

где NR == [номер строки] и $ 0 - полная строка.

Ответ 5

Я не знаю, как это сделать прямо в nano. Однако вы можете использовать "cat" или "grep" для отображения строк вашего файла в консоли.

Если вы используете терминальный мультиплексор типа "экран", вы можете скопировать и вставить строки как это.

Ответ 6

Просто используйте Ctrl + Shift + 6, чтобы скопировать текущую строку, или вы можете установить метку, используя Ctrl + 6, и скопировать несколько строк, используя вышеупомянутую команду.

Ответ 7

Относительно простое решение:

  1. От первого символа, который вы хотите скопировать, удерживайте Shift и идите до конца.

  2. Нажмите Ctrl + K, чтобы вырезать текст из файла.

  3. Нажмите Ctrl + X, а затем N, чтобы не сохранять никаких изменений.

  4. Вставьте вырезанный текст в любое место.

Кроме того, если ваш текст помещается на экране, вы можете просто использовать мышь для выбора, и он автоматически копирует его в буфер обмена.

Ответ 8

То, что я написал ранее, может быть хорошим для копирования части одной строки, но не подходит для полных строк. Для одной или нескольких полных строк:

Установите fzy (или fzf или аналогичный) и поместите его в ~/.bashrc:

nc () {
      fil=$(ps aux | grep [n]ano | grep -oE '[^ ]+$' | rev | cut -d'/' -f 1 | rev | uniq | fzy)
      find ~ -type d -name .cache -prune -o -type f -name "$fil" -exec sed -n ""[email protected]"p" {} + | xsel -b && pkill -f 40x15
}

И поместите это в свой глобальный конфигурационный файл ярлыков или утилиту:

xterm -geometry 40x15

Теперь вы можете вызвать это маленькое окно xterm с помощью ярлыка и ввести

nc FIRST_LINE_NUMBER,LAST_LINE_NUMBER

и выберите файл для копирования этих строк. Вставьте их куда угодно, даже в другой nano (после отключения автоиндента M-I).

Для одной строки просто введите

nc LINE_NUMBER

Это может быть полезно только для копирования части длинной строки:

Вам нужна утилита fmt и xsel (или xclip или wl-clipboard или аналогичная) и поместите эту команду в файл или утилиту глобальных привязок клавиш:

xsel | fmt -c -w 1000 - | xsel

Тогда:

  1. Отключить нумерацию строк, если она включена M-N (Alt-N в моей конфигурации)
  2. Отключить поддержку мыши с помощью M-M (Alt-M в моем конфиге)
  3. Вы можете легко выделить всю область для копирования мышью, как в терминале или любой другой программе.
  4. Нажмите на свою пользовательскую привязку клавиш для указанной выше команды
  5. Нажмите среднюю кнопку мыши там, где вы хотите вставить текст

Это сохранит исходные/преднамеренные пустые строки, но все остальные строки будут объединены.

Это для первичного отбора. Если вы предпочитаете буфер обмена, замените xsel на xsel -b, и перед четвертым шагом вам нужно нажать Ctrl-Shift-C, а вместо 5-го вставить его с помощью Ctrl-V или Ctrl-Shift-V, в зависимости от того, где вы хотите вставить.

Ред.: Вместо первых трех шагов вы можете просто нажать Shift и щелкнуть в начале текста, который нужно скопировать, и отпустить Shift, но не отпускать мышь и перетаскивать мышь до конца текста, который нужно скопировать, и отпускать мышь. И следуйте вышеупомянутым шагам для буфера обмена, а не первичного выбора

Ответ 9

Еще одна потенциальная вещь, которую вы можете сделать, используя Google Cloud Platform, - это открытый редактор Cloudshell, который преобразует нанотекст в копируемое и вставляемое содержимое https://cloud.google.com/shell/docs/using-the-session-window.

Ответ 10

Доступ к буферу копирования невозможен за пределами nano, и нигде я не нашел ни одного файла буфера для чтения.

Вот полная альтернатива в полном NOX: печать заданной строки файла в истории bash.

Таким образом, данная строка доступна как команда с клавишей UP.

sed "LINE q;d" FILENAME >> ~/.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 для вставки.

Ответ 11

1) Ctrl + 6, чтобы отметить текст, который вы хотите скопировать

2) Ctrl + k, чтобы вырезать текст и Ctrl + u, чтобы вставить обратно в исходное место

3) Перейдите к нужной строке, где вы хотите вставить код, отмеченный на шаге (2). Ctrl + u, чтобы вставить его.

Надеюсь, что это поможет.

Ответ 12

Намного проще метод:
$ cat my_file

Ctrl + Shift + c, чтобы скопировать требуемый вывод с терминала

Ctrl + Shift + v, чтобы вставить его куда угодно

Ответ 13

ctrl + shift + c, чтобы скопировать текст, вам выделено.
ctrl + shift + v для вставки текста