Как я могу скопировать и вставить за пределами Neovim?

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

Я хотел скопировать какой-то код из Neovim в Firefox, но то, что я скопировал, не переносится за пределы Neovim.

После того как я проверил :checkhealth, вот что он сказал:

Вывод :checkhealth

Что мне делать, чтобы решить эту проблему?

Чтобы иметь возможность вставлять текст, скопированный из Neovim в любое приложение, вы должны скопировать текст в системный буфер обмена. Это можно сделать следующим образом:

  1. Установите инструмент для работы с буфером обмена, так как, как указано на вашем скриншоте, у вас его нет.

    • Если вы используете сессию Xorg, вы можете установить либо xsel, либо xclip, выполнив:

      sudo apt install xsel
      

      или:

      sudo apt install xclip
      
    • Если вы используете сессию Wayland, вы можете установить wl-clipboard, выполнив:

      sudo apt install wl-clipboard
      
  2. Выберите текст, который вы хотите скопировать в Neovim.

  3. Нажмите следующие клавиши по одной: "+y

    Это копирует (y) выделенный текст в регистре выделения ("+).

  4. Вставьте выделенный текст в приложение, которое вы хотите, используя привычное сочетание клавиш вставки Ctrl+V.

Чтобы упростить задачу, вы также можете сделать так, чтобы текст, который вы копируете в Neovim, всегда копировался в системный буфер обмена, добавив следующее в ваш файл ~/.config/nvim/init.vim (создайте файл, если он не существует, или перейдите в правильное местоположение файла, если вы используете пользовательскую настройку Neovim):

set clipboard=unnamedplus

Если вы используете Lua API для настройки Neovim, вы можете достичь того же с помощью команды в ответе kkvamshee.

Вы также можете добиться этого, добавив следующую строку в ваш файл init.lua, если вы используете Lua API для настройки Neovim:

vim.api.nvim_set_option("clipboard", "unnamed")

Я только что протестировал свой nvim, и мои настройки, связанные с копированием/вставкой/мышью из (~/.config/nvim/init.vim), следующие:

    set mouse=nv                 " вставка с помощью средней кнопки
    set hlsearch                " подсветка поиска
    set clipboard+=unnamedplus   " использование системного буфера обмена
    # с этими плагинами
    call plug#begin("~/.vim/plugged")
    " Секция плагинов
    Plug 'dracula/vim'
    Plug 'ryanoasis/vim-devicons'
    " Plug 'SirVer/ultisnips'
    Plug 'honza/vim-snippets'
    Plug 'scrooloose/nerdtree'
    Plug 'preservim/nerdcommenter'
    Plug 'mhinz/vim-startify'
    Plug 'neoclide/coc.nvim', {'branch': 'release'}
    call plug#end()

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

Теперь все 1) нажатие средней кнопки мыши, 2) щелчок правой кнопкой мыши для открытия мини-меню снова для выбора Вставить и 3) старая привычная опция Ctrl+v будут выполнять вставку как в другом терминале xfce4, используя nvim на текстовом файле, так и в Firefox на Ask Ubuntu для этого.

И да, я видел вышеуказанный пост, у меня установлена версия xsel 1.2.1-1. Если вам нужен мой полный файл конфигурации nvim/init.vim, дайте мне знать.
С уважением, Джоно

Я столкнулся с той же проблемой, и ответ BeastOfCaerbannog решает проблему.

В Wayland у меня есть следующая привязка клавиш в init.lua:

-- Копировать/вставить из системного буфера обмена
vim.keymap.set({ 'n', 'x' }, 'cp', '"+y')
vim.keymap.set({ 'n', 'x' }, 'cv', '"+p')
-- Удалить без изменения регистров
vim.keymap.set({ 'n', 'x' }, 'x', '"_x')

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

Для вставки вам нужно быть в нормальном режиме и нажать cv

Это работает как для X11, так и для Wayland, просто нужно установить соответствующие менеджеры буфера обмена (wl-clipboard в моем случае).

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

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

1. Установка необходимого инструмента для работы с буфером обмена

Как указано в вашем выводе :checkhealth, у вас не установлен необходимый инструмент для работы с системным буфером обмена. В зависимости от вашей графической среды, выполните следующие действия:

  • Для Xorg:
    Убедитесь, что установлен один из следующих инструментов:

    • xsel:
      sudo apt install xsel
    • xclip:
      sudo apt install xclip
  • Для Wayland:
    Установите wl-clipboard:

    sudo apt install wl-clipboard

2. Копирование текста в Neovim

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

  1. Выделите текст, который хотите скопировать.
  2. Нажмите последовательности клавиш: "+y.
    • " – это указывает на использование регистров (в данном случае, системного буфера).
    • + – указывает на использование системного буфера обмена.
    • y – команда для копирования выделенного текста.

3. Вставка текста в другие приложения

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

4. Автоматизация копирования в буфер обмена

Чтобы сделать процесс копирования проще, можно настроить Neovim так, чтобы выделенный вами текст автоматически копировался в системный буфер обмена. Для этого выполните следующие шаги:

  • Откройте файл настройки Neovim ~/.config/nvim/init.vim и добавьте строку:
    set clipboard=unnamedplus

Если вы используете init.lua для настройки Neovim, добавьте:

vim.api.nvim_set_option("clipboard", "unnamedplus")

5. Настройка горячих клавиш для копирования и вставки

Для повышения удобства, вы можете настроить горячие клавиши. Например, добавьте следующие команды в файл конфигурации init.lua:

-- Копирование/вставка из системного буфера обмена
vim.keymap.set({ 'n', 'x' }, 'cp', '"+y')
vim.keymap.set({ 'n', 'x' }, 'cv', '"+p')
-- Удалить без изменения регистров
vim.keymap.set({ 'n', 'x' }, 'x', '"_x')

С этими настройками, вы сможете копировать текст, используя комбинацию клавиш cp, а для вставки — cv.

6. Заключение

Следуя данным инструкциям, вы сможете без проблем копировать текст из Neovim и вставлять его в другие приложения. Эти настройки не только упростят работу с текстом, но и значительно усовершенствуют вашу производительность. Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь обращаться за поддержкой.

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

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