Выделите текст в выводе терминала с помощью VIM - PullRequest
1 голос
/ 29 мая 2020

Допустим, у меня сейчас в окне терминала следующий вывод:

1. vsud@vsud:~$ pwd
2. /home/vsud
3. vsud@vsud:~$ echo "Hello, world!"
4. Hello, world!

Я хочу скопировать в буфер обмена 1-ю и 2-ю строки.

vsud@vsud:~$ pwd
/home/vsud

С помощью мыши - I можно сделать это, выделив эти 2 строки и нажав Ctrl + Shift + C. Но могу ли я каким-то образом войти в режим VIM и работать со всем этим выводом в моем терминале, как с чистым текстом - поэтому, чтобы скопировать 2 строки, мне нужно будет набрать просто «H2yy»? Нужно ли мне для этого установить специальный c эмулятор терминала?

Теперь я использую эмулятор терминала, встроенный в XFCE.

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Есть два способа сделать это: (1) Используя tmux и используя (2) ': term' внутри vim

tmux

Если вы используя свой терминал из tmux, вы можете войти в режим копирования и выбирать и копировать строки из вашего терминала. Предполагая, что префиксом tmux является Ctrl-b, точные шаги для этого:

  1. Введите режим копирования : Ctrl-b [

  2. Начать выбор: Пробел

  3. Расширить выделение: использовать клавиши со стрелками

  4. Сохранить выбор в буфере: введите

  5. Перенести выделение в системный буфер обмена: Ctrl-b: run-shell "tmux save buffer - | xsel -i -b"

  6. Вставить выделение в буфер vim (+ register): "+ p

Дополнительные примечания:

a. tmux предлагает команду под названием« capture-pane », с помощью которой вы можете скопировать всю панель (терминал).

b. Для работы шага 5, описанного выше, вам необходимо установить xsel. Шаг 5 можно сократить, используя привязку клавиш. Для этого в вашем. tmux.conf (или, введя эту команду в командной строке tmux Ctrl-b :)

bind C-c run-shell "tmux save-buffer - | xsel -i -b"

Теперь шаг 5 эквивалентен нажатию Ctrl- c.

c. Вы можете использовать vi m клавиши для навигации в режиме копирования: Ctrl-b: setw -g mode-keys vi

: term

Если вы запускаете терминал изнутри vim с помощью команды ex ': term', вы можете войти в "нормальный" режим, используя: Ctrl-W Shift-n. Затем вы можете перемещаться (и копировать) терминал с помощью клавиш vim, как если бы это был обычный буфер vim.

0 голосов
/ 29 мая 2020

Вы можете направить вывод в vim, используя view -. Например:

ls -la | view -

Это открывает экземпляр vim в режиме только для чтения, который может читать из stdin

...