Почему курсор Vim переходит на выделенный текст в обход визуального режима? - PullRequest
0 голосов
/ 12 декабря 2018

Vim автоматический визуальный режим может раздражать.Он переключается в визуальный режим, когда вы щелкаете левой кнопкой мыши и выбираете текст в нем.К счастью, есть возможность обойти это поведение, удерживая клавишу Shift при выборе текста в терминале.Этот обход полезен, его легко использовать под рукой без предварительной настройки vim.

Однако недавно я заметил это, когда терминал обнаруживает что-то как ссылку (например, каталог /var/www/example.com/).в apache vhost config), и я пытаюсь выделить его с помощью комбинации мышь + клавиша shift, он не позволяет мне копировать выделенный текст, но переходит на следующую похожую строку в тексте, снова включая автоматический визуальный режим.

Почему это происходит и как я могу это обойти?

PS: я знаю о: set mouse- = a в vimrc, но так как я работаю на разных серверах, мне не нужно редактироватьvimrc каждый раз, когда я нахожусь на новом сервере.

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Если есть определенный параметр, который вы хотите использовать на своем основном компьютере, но не на других серверах и т. Д., То вы можете использовать оператор if в вашем .vimrc, чтобы указать, на какой системе вы хотите, чтобы этот параметр был активным.Например:

"My Linux machine
if readf('/etc/machine-id') == ['your-machine-id']
    set mouse=a
endif

"Only on Macs
if system('uname') == "Darwin\n"
    set mouse=a
endif
0 голосов
/ 22 декабря 2018

Кто-то настраивает mouse=a.Вы можете найти виновного, выполнив :verbose set mouse.

Тогда вам нужно либо изменить это, либо создать VIMRC для вашего пользователя.Насколько я понимаю, это может быть нелегко в вашей ситуации.

Вместо set mouse-=a вы также можете использовать set mouse=, чтобы отключить все функции мыши.Это то, что я предпочитаю, и это сохраняет два нажатия клавиш: -).


Вот как я справляюсь с этой проблемой.Это может или не может быть выполнимо для вас.

У меня есть один файл с именем .rks, который я просматриваю на каждом сервере, на котором мне нужно войти.Первая команда после входа в систему всегда

. ./.rks

Это устанавливает мою среду оболочки (приглашение, псевдонимы, режим редактирования vi и т. Д.) И создает файл с именем ~/.vimrc.rks (если он не существует), содержащий моибазовая настройка Vim (например, set mouse=).Наконец, он экспортирует переменную VIMINIT:

export VIMINIT="source $HOME/.vimrc.rks"

Теперь Vim получает ~/.vimrc.rks при запуске, и я получаю настройки.

Таким образом, я

  • нужно только передать один файл на все машины.Другие файлы (например, .vimrc.rks) создаются при получении этого файла.
  • имеет мои персональные настройки без изменения файлов по умолчанию.Другие могут также войти в систему с тем же именем пользователя.

Я только что узнал, что я могу автоматизировать передачу моего установочного файла, используя конфигурацию ssh LocalCommand.Смотрите этот ответ на serverfault .

0 голосов
/ 12 декабря 2018

Единственный vim для выделения текста - это визуальный режим.Таким образом, вы говорите vim с mouse=a, что он должен использовать мышь для выделения текста.Что вы ожидаете?

Вы всегда можете скопировать текст вообще без мыши ("+yy, если у вас есть поддержка буфера обмена).

Я не смог воспроизвести ваше поведение со ссылками.Это также происходит без плагинов?

Но в любом случае, если вам не нужен визуальный режим для вашей мыши, вы должны изменить настройку mouse и прекратить указывать vim использовать визуальный режим для вашей мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...