Вопрос или проблема
Иногда я хочу скопировать какой-то текст в сессии 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
редактировать удаленные файлы на локальной машине…
- Переместите курсор к началу того, что вы хотите скопировать.
- Нажмите v
- Переместите курсор к концу того, что вы хотите скопировать, прокручивая
- Нажмите y
.
Ответ или решение
Вы задаете вопрос о том, как эффективно копировать многостраничный текст из Vim-сессии на удаленной машине на локальную систему. Этот процесс может быть вызовом, если не используются соответствующие техники, особенно когда дело касается содержимого, превышающего экран.
Теория
Vim — это мощный текстовый редактор, популярный среди разработчиков и системных администраторов. Его интерфейс и поддержка различных команд позволяют пользователям выполнять сложные задачи редактирования текста. Однако работа с Vim на удаленной системе через SSH может породить определенные сложности, такие как копирование текста, превышающего размер одного экрана.
Пример
-
Конфигурация мыши в Vim: Использование мыши может облегчить навигацию и выбор текста. Команда
:set mouse=a
позволяет использовать мышь для выделения текста, однако при этом может возникнуть проблема с прокруткой текста. При использовании сенсорной панели или колесика мыши текст может не выделяться, как ожидалось. Чтобы преодолеть это, рекомендуется кликнуть на начальную точку и просто перетаскивать мышь вниз — в этом случае выделение будет происходить, а страницы будут автоматически прокручиваться. -
Выделение без мыши: Vim предлагает удобные команды для выделения текста без использования мыши:
V
: выделяет целые строки.v
: выделяет диапазон текста.Ctrl-v
: выделяет столбцы.gv
: повторное выделение блока.
После выделения текста его можно копировать с помощью команды
y
(yank), удалять с помощьюd
, либо применять другие команды редактирования, такие как:s/match/replace/
для замены текста или!sort
для сортировки. -
Clipboard и X11: В X11 есть две независимые буферные зоны: primary (вставка с помощью средней кнопки мыши) и clipboard (вставка с помощью Ctrl-V и аналогичных команд). В Vim они обозначаются регистрами
"*
и"+
соответственно. Чтобы использовать эти буферы в Vim, необходим Vim, скомпилированный с поддержкой+clipboard
. -
X11 и SSH: При работе с удаленными системами через SSH для использования этих буферных зон потребуется задействовать X11-forwarding. С помощью команды
ssh -XY remoteHost
вы можете пересылать X11 на свою локальную машину, что позволит копировать текст в системный буфер обмена и вставлять его обычным способом. -
Копирование файлов с помощью SCP: В крайнем случае, если ни один из методов не сработал, вы можете использовать команду
scp
для загрузки файла на локальную машину. С помощью следующей команды можно открыть удаленный файл в локальной системе:vim scp://host/file
. Это позволяет редактировать файл, как если бы он находился на вашем компьютере.
Применение
Итак, в зависимости от вашего текущего окружения, начальный процесс будет варьироваться. Если у вас есть доступ к X11 через ssh -XY
, вы сможете использовать Vim для копирования текста в системный буфер обмена, и затем вставки его на локальную систему. Также вы можете использовать стандартные команды копирования внутри Vim и вставить их в нужном месте, если у вас есть поддержка +clipboard
.
Заключительно, даже такие простые системы, как Vim, могут иметь огромное количество нюансов и предложений для облегчения работы с текстом. Понимание их работы и уметь применять их на практике может значительно усилить вашу продуктивность и облегчить взаимодействие с удаленными системами.
Применяя эти техники в повседневной работе, вы сэкономите время и сможете более эффективно управлять текстом на удаленных системах. Надеюсь, эти рекомендации помогут вам в дальнейшем работе с Vim и удаленными файлами.