Яндекс.Метрика

пятница, 21 сентября 2012 г.

Извечные вопросы при работе в терминале


Есть вечные вопросы, мучающие каждого, кто часто работает с терминалом под Unix'ом, пользуется tmux-ом и vim-ом. Итак, открываем секреты!
  1. Как продолжить поиск в истории с помощью ctrl+R после первого неподходящего варианта?
  2. Как двигаться по экрану вверх после выполненной команды, если вы находитесь в tmux-е? (Не во всех системах это можно сделать мышечкой.)
  3. Как копировать без GUI в vim'е из одного файла в другой, если они были открыты отдельно, разными vim-ами, а не одним и тем же.

А теперь ответы:

  1. Нужно еще раз нажать ctrl+R.
  2. Нажать ctrl+B, [ и стрелочками или page-up/page-down будет возможно перемещаться по предыдущим записям на ст. вывод. Выйти из режима — q. Вимовские клавиши для перемещения не работают.
  3. Вот это сложный вопрос, на который нет однозначного ответа. Можно поставить некий Emacs-овский сервер, который позволяет также редактировать vim-овскими клавишами. И тогда копирование из одного файла в другой будет как и из одного в тот же самый. Но есть момент, по-умолчанию в этой версии, вход в режим комманд в vim-е происходит не по ctrl+[, а по esc, а это меня раздражает. Поэтому нужно искать что-то подобное под vim-ом.
Обновление:

Итак, ответ на третий вопрос.
Можно копировать всё внутри tmux-а с помощью tmux-а. Делается это так. Входим режим перемещения по экрану tmux-а

ctrl + B [

Затем, перемещаемся, копируем. Выходим с помощью q. Вставляем.

Но есть поправка. Если вы хотите перемещаться в стиле vim-а. То в файлик ~/.tmux.conf поместите

set-window-option -g mode-keys vi

Тогда после

ctrl + B [

можно будет перемещаться с помощью

j, k, h, l,

Копирование происходит так.

Начать выделение с помощью пробела Space,

закончить выделение копированием с помощью Enter.

Вставить все можно с помощью

ctrl + B ]

По-моему удобно.

Спасибо комментаторам ;)

Вот вам полезная ссылочка. https://wiki.archlinux.org/index.php/Tmux_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

9 комментариев:

  1. 2. Гораздо удобнее будет перебиндить контрольный символ на Ctrl+A, он в tmux по дефолту на Ctrl+B сделан, чтобы не конфликтовать со скриновским контрольным символом, но Ctrl+A нажимать проще. Вимовские клавиши для перемещения будут работать, если сделать:

    set-window-option -g mode-keys vi

    3. Опять же можно использовать tmux. У разных запущенных сеансов tmux используется общий буфер, поэтому можно tmux-овскими средствами выделять и вставлять.

    ОтветитьУдалить
    Ответы
    1. 2. Одновременно использовать tmux и screen? И насчет удобнее нажимать, это очень спорно, тем более, что раскладки могут быть самыми разными ;)

      А вот set-window-option и копировать tmux-ом попробую ;)

      Удалить
    2. Я, наоборот, меняю в скрине Ctrl+A на Ctrl+B, потому что Ctrl+A позволяет удобно переходить в начало строки, а на Ctrl+B ничего такого важного не висит.

      Удалить
    3. В vim-е ctrl+B листать на страницу назад ;)

      Удалить
    4. А зачем одновременно использовать tmux и screen?

      Удалить
    5. Ну, я сначала подумала, что вы это предлагаете, так как говорите поменять ctrl+B на ctrl+A, мол, чтобы клавиши не различались. А так, действительно, ctrl+B удобнее немножко лично мне.

      Удалить
  2. В начало строки из скрина: Ctr-A A

    ОтветитьУдалить
  3. До сих пор сюда подглядываю :)

    ОтветитьУдалить