Как мне скопировать вывод команды в vim?

33

Например, если я наберу ' :pwd', чтобы получить текущий рабочий каталог, я могу выделить текст в gvim, но не могу понять, как скопировать его в буфер обмена. Если я попробую то же самое в консоли VIM, я даже не могу выбрать его с помощью мыши. Я хотел бы, чтобы это работало со всеми командами vim, такими как set guifontкопирование guifont=Consolas:h10:cANSIвывода.

Стивен
источник

Ответы:

41

Вы ищете это,

:redir @* | set guifont | redir END

: redir команда перенаправляет вывод команды в регистр (@ *). Регистр @ * относится к буферу обмена.

Для получения дополнительной информации об этом,

:help :redir
Asdfg
источник
не работает в vim-gtk какая-то подсказка?
Серхио Абреу
@SergioAbreu попробуйте @+вместо @*(ну, это работает в gvim).
leeand00
10

Попробуйте ' :r !pwd', чтобы получить текущий рабочий каталог непосредственно в открытый файл GVIM.
Затем вы можете скопировать его в буфер обмена так же, как и любое другое содержимое текстового файла, открытое там.

Nik
источник
Это полезно, но могу ли я использовать это, set guifontнапример?
Стивен
Нет, это не команда оболочки, поэтому она не будет работать.
Кевин Панко
4

Для этого конкретного примера вы можете сделать (обратите внимание на «!», Который заставляет его проходить через оболочку):

:!pwd | xclip

или

:!pwd | xclip -selection secondary

(в зависимости от того, какой X-выбор вы хотите).

Возможно, вам придется сначала установить xclip

sudo apt-get install xclip

(или эквивалент)

NISC
источник
3

Если вы запускаете vim в xterm, удерживая клавишу Shift при выделении текста, вы скопируете текст в X-эквивалент буфера обмена.

garyjohn
источник
X имеет два буфера обмена (как минимум); Ваше предложение поместит текст в ПЕРВИЧНЫЙ выбор (вставка с помощью среднего щелчка), а не в выборку КЛИПАТА (вставка с помощью Ctrl + V в большинстве приложений).
Мариус Гедминас