Использование двойного щелчка в окне терминала в Fedora 24 с помощью vim для выполнения копирования и вставки

Я очень привык использовать двойной щелчок мыши в терминале для копирования слова, например, имя файла, а затем с помощью среднего щелчка мыши в другом терминале для вставки.

Однако это поведение не работает в Fedora 24 при использовании vim. Если я дважды кликнул в сеансе vim, он выбирает только один сегмент имени файла, и он фактически не копирует эту часть в буфер обмена, потому что я не могу вставить ее средним щелчком.

Есть ли какая-то настройка в vim, которая вызывает это поведение (поэтому я могу отключить его)? Если я использую \vi file скопировать-вставку \vi file работает нормально, но я теряю подсветку синтаксиса.

Я использую Fedora 24 и vim версии 2: 8.0.124-2.fc24. У меня установлены следующие пакеты: vim-common, vim-Enhanced, vim-filesystem, vim-minimal.

  • Как я могу сделать алиасы оболочки доступными при обстреле из Vim?
  • vim: создать файл с + x бит
  • vim - Храните резервную копию перед каждой записью
  • vi commandline, goto строка и столбец
  • Auto indent C ++ 11 лямбда-функций Vim
  • Как повторно запустить автоиндексирование vim в файле tex?
  • Отправка команд на dbx из Vim
  • Как остановить Vim от изменения моего каталога при выполнении make-файла?
  • One Solution collect form web for “Использование двойного щелчка в окне терминала в Fedora 24 с помощью vim для выполнения копирования и вставки”

    Все это в онлайн-справке vim. Но он распределяется по doco для ряда переменных и опций, и на самом деле нет действительно всеобъемлющего руководства по всему этому.

    Нормальный режим

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

    Если вы запускаете минимальный vim (который является программой с именем vi ) или используйте :set mouse= в полном vim, это то, что вы получаете. Если вы когда-либо пробовали вставлять в vim с помощью средней кнопки мыши, вы поймете, что vim явно не участвует в пасте, потому что если вы не находитесь в режиме вставки в то время, когда вставленный текст рассматривается как команды vim.

    Режим сообщений мыши

    Однако в режиме отчетности с мышью ваш эмулятор терминала сам не обрабатывает действия мыши. Скорее он передает действия, как если бы они вводили типичный ввод, закодированный как специальные управляющие последовательности. Программа приложения выводит другие управляющие последовательности, чтобы включить и выключить режим сообщений мыши . (Существует довольно много тонкостей, которые связаны с тем, что некоторые протоколы сообщений мыши, изобретенные в мире свободного программного обеспечения, были действительно плохими, но это выходит за рамки этого ответа.)

    Когда у вас есть mouse=a или mouse=h или аналогичный набор в vim, он изменяет режим терминала «на лету» между нормальными режимами и режимами сообщений мыши, в зависимости от точной настройки mouse и того, что вы делаете в то время. Например: Когда mouse=h , при переключении на экран справки он переключается на мышь, и при повторном выключении выключается.

    Когда режим отчетности мыши включен, именно vim сам определяет, что такое слово, которое делает выделение вашего выбора и которое передает выбор на и с X-сервера. Если вы запускаете (полный) vim с помощью mouse=a или аналогичный, но не можете узнать, что есть доступный графический интерфейс, удалив переменную среды DISPLAY из своей среды, вы обнаружите, что при выборе и вставке в vim, он не может видеть, что X-выбор и X-приложения не могут его выбрать. Действительно, на экране одновременно могут быть два выбора: один в приложении X и один в vim. (Минимальный vim не имеет возможности разговаривать с X-сервером в своем коде вообще).

    Решив, что такое слово

    Правила для определения того, что слово отличается. Ваш эмулятор терминала, в зависимости от того, какая программа эмулятора он может, может или не позволить вам настроить, как он определяет границы слов. roxterm, Terminate и LXTerminal имеют в настройках диалоги предпочтений «выбор за слова». Другие просто прокладывают это.

    В любом случае ясно, что a/b/c/d – все одно слово. Поэтому, когда эмулятор терминала отвечает за работу с мышью, это то, что он устанавливает как выбор в ответ на двойной щелчок.

    vim имеет свой собственный набор совершенно независимых настроек, которые основаны на том, что считается «ключевым словом» и, таким образом, ссылаются на регулярное соответствие выражений и раскраску синтаксиса. Очевидно, что все, что у вас есть vim, сконфигурированное для понимания текущего файла (параметр iskeyword являющийся локальным для буфера и настраиваемый вашим выбором типа файла), считает, что a/b/c/d является несколькими словами, разделенными слэшами. Так вот что вы получаете, когда vim взял на себя ответственность за действия с мышью.

    дальнейшее чтение

    • :help mouse-using
    • :help mouse
    • :help ttymouse
    • :help double-click
    • :help iskeyword
    • Что означает «мышиная отчетность»?
    • Глобально замените Vi на Vim на Fedora
    • https://unix.stackexchange.com/a/307925/5132
    Interesting Posts

    Как заставить KDE запрашивать новых пользователей для пароля, когда я использую / etc / skel для настройки их среды?

    GRUB: как изменить диск по умолчанию для будущих обновлений ОС?

    Использование Unison с colordiff

    Как я могу привязать strace к процессу, который не находится в выходе ps?

    usermod изменить пароль пользователя не работает

    Ошибка входа в систему Putty через SSH (ошибка сети: время ожидания подключения)

    Удаленный запуск сценария

    Разработка приложений для Linux и обработка сигналов

    find (1): как применяется групповой символ звезды для отказа от некоторых имен файлов?

    Попытка SSH на Android-телефон, но соединение закрыто

    Интерфейс Tap не принимает пакеты

    Setuid, бит SUID, не предоставляющий права root

    Как установить новый дистрибутив Linux на существующие зашифрованные разделы?

    inotifywait и rsync печатает временные имена файлов

    @ERROR: chdir не удалось, но каталог существует

    Linux и Unix - лучшая ОС в мире.