Выбор и копирование текста с нескольких страниц из удаленного Vim на локальную систему

Вопрос или проблема

Иногда я хочу скопировать какой-то текст в сессии Vim на удаленном хосте, который занимает больше экрана. Но когда я кликаю левой кнопкой мыши и прокручиваю вниз, я обнаруживаю, что застрял на первой странице текста, который хочу выделить.

Я знаю, что могу использовать scp или сначала cat file, а затем выделить, но есть ли способ включить прокрутку мышью, чтобы выделить текст естественным образом в Vim с помощью мыши?

Попробуйте :set mouse=a, это должно решить вашу задачу.

Редактирование: Как примечание, когда вы пытаетесь прокручивать файл (например, прокрутка двумя пальцами на тачпаде), текст может не выделяться так, как вы ожидаете. Однако, если вы кликнете там, где хотите начать, а затем просто потянете мышь вниз, то все должно выделиться, когда мышь движется, и страница также должна автоматически прокручиваться вниз.

Без использования мыши вы можете выделять строки в Vim.

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

V       - выделяет целые строки
v       - выделяет диапазон текста
ctrl-v  - выделяет столбцы
gv      - повторное выделение блока

После выделения текста попробуйте d чтобы удалить, или y чтобы скопировать, или :s/match/replace/, или :center, или !sort.

X11 буферы обмена

В X11 существует 2 независимых буфера обмена:

  • основной (вставка средней кнопкой мыши) (в vim — регистр "*)
  • буфер обмена (вставка с (CTR+V) или похожий способ; как в Windows) (в vim — регистр "+)

Vim + X11 буферы обмена

Связь между "+ "* и системными буферами обмена требует vim с
+clipboard (см. vim --version для активного параметра).

"+ – это vim регистр для системного буфера обмена (CTR-C / CTR-V или похожий способ).

С помощью @grish и @serenesat мы можем выделить немного визуального текста,
и ввести

"+y

Как обычно, мы можем использовать любой другой vim позиционер для определения области “копировать в буфер обмена”. Например:

"+yG    (чтобы сохранить от текущей позиции до EOF)

Таким образом, текст копируется в системный буфер обмена и может быть вставлен с
технологией буфера обмена или в другом vim

"+p

Vim + X11 буферы обмена + ssh

Когда задействованы удаленные хосты, вам нужно использовать ssh -XY remoteHost
чтобы включить пересылку X11. Таким образом:

ssh -XY remoteHost
vim file   # и   "+yG  или  визуальное выделение и "+g

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

Vim + ssh

Если ничего не работает, мы всегда можем:

vim scp://host/file

редактировать удаленные файлы на локальной машине…

  1. Переместите курсор к началу того, что вы хотите скопировать.
  2. Нажмите v
  3. Переместите курсор к концу того, что вы хотите скопировать, прокручивая
  4. Нажмите y

.

Ответ или решение

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

Теория

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

Пример

  1. Конфигурация мыши в Vim: Использование мыши может облегчить навигацию и выбор текста. Команда :set mouse=a позволяет использовать мышь для выделения текста, однако при этом может возникнуть проблема с прокруткой текста. При использовании сенсорной панели или колесика мыши текст может не выделяться, как ожидалось. Чтобы преодолеть это, рекомендуется кликнуть на начальную точку и просто перетаскивать мышь вниз — в этом случае выделение будет происходить, а страницы будут автоматически прокручиваться.

  2. Выделение без мыши: Vim предлагает удобные команды для выделения текста без использования мыши:

    • V: выделяет целые строки.
    • v: выделяет диапазон текста.
    • Ctrl-v: выделяет столбцы.
    • gv: повторное выделение блока.

    После выделения текста его можно копировать с помощью команды y (yank), удалять с помощью d, либо применять другие команды редактирования, такие как :s/match/replace/ для замены текста или !sort для сортировки.

  3. Clipboard и X11: В X11 есть две независимые буферные зоны: primary (вставка с помощью средней кнопки мыши) и clipboard (вставка с помощью Ctrl-V и аналогичных команд). В Vim они обозначаются регистрами "* и "+ соответственно. Чтобы использовать эти буферы в Vim, необходим Vim, скомпилированный с поддержкой +clipboard.

  4. X11 и SSH: При работе с удаленными системами через SSH для использования этих буферных зон потребуется задействовать X11-forwarding. С помощью команды ssh -XY remoteHost вы можете пересылать X11 на свою локальную машину, что позволит копировать текст в системный буфер обмена и вставлять его обычным способом.

  5. Копирование файлов с помощью SCP: В крайнем случае, если ни один из методов не сработал, вы можете использовать команду scp для загрузки файла на локальную машину. С помощью следующей команды можно открыть удаленный файл в локальной системе: vim scp://host/file. Это позволяет редактировать файл, как если бы он находился на вашем компьютере.

Применение

Итак, в зависимости от вашего текущего окружения, начальный процесс будет варьироваться. Если у вас есть доступ к X11 через ssh -XY, вы сможете использовать Vim для копирования текста в системный буфер обмена, и затем вставки его на локальную систему. Также вы можете использовать стандартные команды копирования внутри Vim и вставить их в нужном месте, если у вас есть поддержка +clipboard.

Заключительно, даже такие простые системы, как Vim, могут иметь огромное количество нюансов и предложений для облегчения работы с текстом. Понимание их работы и уметь применять их на практике может значительно усилить вашу продуктивность и облегчить взаимодействие с удаленными системами.

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

Оцените материал
Добавить комментарий

Капча загружается...