Я пытался использовать Ctrl kbd> + V kbd> для вставки содержимого в документ редактора vi, но Ctrl kbd> + V kbd> не интерпретируется как паста.
Во-первых, убедитесь, что вы находитесь в режиме редактирования (нажмите i kbd>). Затем вы можете вставить с помощью Ctrl kbd> + Shift kbd> + V kbd>, если вы находитесь в эмуляторе терминала, например gnome-terminal
(или выберите «Вставить» из контекстного меню).
Вы также можете ввести :set paste
в vim перед вставкой, чтобы отключить автоматическое отступление и т. Д. Затем :set nopaste
после вставки содержимого.
Также проверьте этот вопрос на stackoverflow.com для получения дополнительной информации.
Если вы хотите скопировать / вставить строки в vim
(в отличие от вставки содержимого буфера обмена), вам нужно проверить команду yank . Вот шпаргалка , которая может помочь.
Vi (и Vim) работают совсем по-другому по сравнению с обычным текстовым редактором, таким как Gedit. У этого также есть довольно крутая кривая изучения. Если вы хотите выучить некоторые основные команды, начните с этого интерактивного урока .
Однако, чтобы ответить на ваш вопрос. Доступ к содержимому системного буфера обмена возможен через регистр «плюс». Таким образом, чтобы вставить что-то из системного буфера обмена, вы можете, в обычном режиме, нажать: "+ p kbd> (не одновременно, а один за другим).
Если Вы хотите скопировать контент вставки в том же файле, использовать yank
и paste
.
Если Вы хотите скопировать контент вставки через терминалы, открыть первый файл, дергая текст Вы хотите, то открываете свой второй файл в энергии (например. :tabnew /path/to/second/file
) и нажмите p
вставлять его.
Если Вы хотите скопировать контент вставки от энергии до внешней программы, необходимо получить доступ к системному буферу обмена. Я предполагаю, что Вы используете Ubuntu. Версия GUI энергии всегда имеет поддержку буфера обмена, однако, если Вам нравится использовать Vim от терминала, необходимо будет проверить на поддержку X11-буфера-обмена.
От консоли введите:
$ vim --version | grep xterm
При нахождении-xterm_clipboard у Вас есть две опции:
1) Скомпилируйте энергию сами с флагом xterm_clipboard на
2) Энергия удаления, установка gvim (энергия-gtk или гном энергии) вместо этого. Можно придерживаться non-gui энергии путем вызова энергии от терминала, тот же способ, которым Вы сделали прежде. На этот раз, когда Вы проверяете, что необходимо найти +xterm_clipborad.
Теперь, когда Вы дергаете некоторый текст в + регистр в Вашем редакторе Vim (например, "+yy), он также копируется в системный буфер обмена, который можно получить из внешней программы как gedit редактор, при помощи Ctrl+V.
Если Вы хотите скопировать контент вставки с внешней программы в энергию, сначала скопировать Ваш текст в системный буфер обмена через Ctrl+C, то в режиме вставки редактора Vim, нажмите кнопку середины мыши (обычно колесо) или нажмите Ctrl+Shift+V для вставки.
Они - 4 основных копии и вставляют условия, связанные с энергией. Я надеюсь, что это помогает.
Я всегда использую Shift kbd> + Insert kbd>, когда я хочу вставить текст в терминал, работает во всех программах терминала.
(По этой же причине я никогда не получаю ноутбук, на котором нельзя нажать Вставить kbd> без нажатия дополнительной клавиши)
Как только вы введете vi, нажмите i
, чтобы войти в режим вставки, щелкните правой кнопкой мыши в терминале и нажмите «Вставить».
С помощью центральной кнопки мыши вставьте текст, выделенный в другом месте.
Это полезно, когда у вас нет доступа к системному буферу обмена (например, во время удаленного сеанса SSH).
Должен быть в режиме редактирования / вставки для Vim.
Подробные инструкции к скопировать/вставить строкам текста в использовании vi yank
и put
(используйте следующее в командном режиме vi),
Копия (ЯНКИ)
Скопировать одну строку в vi:
yy
или введите Y
Скопировать 2 строки в vi:
2yy
или введите 2Y
(аналогично, любое количество строк может быть скопировано),
Скопировать все строки с текущего местоположения в конец файла:
yG
Скопировать весь текст с текущего местоположения в конец текущего слова:
yw
Скопировать весь текст с текущего местоположения в конец строки:
y$
Вставка (ПОМЕЩАЕТСЯ)
Вставлять текст в буфере обмена - после местоположения курсора:
p
Вставлять текст в буфере обмена - перед местоположением курсора:
P
У меня была проблема, потому что моя установка Vim не поддерживала буфер обмена :
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
Я установил vim-gnome (который поддерживает буфер обмена) и затем проверил снова: [ 113]
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
Теперь я могу копировать и вставлять, используя "+ y и" + p соответственно.
Если вы root : Ctrl kbd> + Shift kbd> + V kbd>
Если вы re non-root : щелчок по центру мыши.
Я просто хотел заметить, что используя Vim через Git Bash в Windows, вы можете просто использовать p
или щелчок по центру мыши, не находясь в режиме вставки. Используя Vim через PuTTY , вы можете просто щелкнуть правой кнопкой мыши. И выделение делает копирование.
Я заметил это, потому что попал сюда, не видя, что это SE для Ubuntu.
Другие полезные команды:
Вы можете использовать Ctrl kbd> + Shift kbd> + V kbd> для вставки в терминальную версию vim, но для версии GUI vim, например Neovim-Qt
, вставка текст из системного буфера обмена с помощью Ctrl kbd> + Shift kbd> + V kbd> просто не будет работать. Вы должны получить доступ к буферу обмена "+
или "*
в редакторе vim.
Добавление новой привязки клавиш в .vimrc
будет просто командами копирования / вставки:
" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
С Vim 8 + на Linux или Mac, можно теперь просто использовать собственную вставку ОС (ctrl+shift+V
на Linux, cmd+V
на Mac). Не нажимать i
для режима вставки.
Это вставит содержание Вашего буфера обмена ОС, сохраняя пробелы и вкладки, не добавляя автоматический отступ. Это эквивалентно старому :set paste
, i
, ctrl+shift+V
, esc
, :set nopaste
метод.
Вам даже не нужно +clipboard
или +xterm_clipboard
функции энергии больше устанавливаются. Эту функцию называют "заключенной в скобки вставкой". Для получения дополнительной информации см. https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763
Во-первых, проверьте, установлена ли в вашем vim поддержка буфера обмена
:echo has('clipboard')
Если он возвращает 1, у вас есть поддержка буфера обмена
Для копирования в буфер обмена вы должны либо выбрать свою цель, скажем, абзац vip
, а затем "+ y
, что означает, что в регистр +
скопируйте выбранную часть, или вы можете просто ввести в обычном режиме: " + yip
, что означает: в регистр +
скопировать внутренний абзац.
Чтобы вставить из буфера обмена в обычном режиме, вы можете:
"+p
В режиме вставки вы можете просто Ctrl-r Ctrl-o + . Tha вставит содержимое вашего буфера обмена и сохранит все отступы, как они есть в буфере обмена.
Если вы хотите скопировать весь буфер в буфер обмена, вы можете:
:%y+
% ........ the whole file
y ........ yank (copy)
+ ........ to the clipboard
Чтобы скопировать последнюю команду в буфер обмена:
:let @+=@:
Чтобы скопировать последний поиск в буфер обмена:
:let @+=@/
чтобы скопировать с отметки " a "до метки" b "в буфер обмена:
:'a,'b y+
Чтобы протестировать любую функцию, которая находится в буфере обмена, вы можете
:@+ (and then type Enter)
:call FunctionName() (and then type Enter)
Чтобы увидеть, что находится в буфере обмена:
:reg +
Чтобы скопировать все строки, которые имеют" шаблон ", в в буфере обмена вы можете:
:let @a=""
:[range]g/pattern/y A
:let @+=@a
:let @a="" ............ cleanses the register 'a'
:[range]g/pattern/y A append to the register A every line with pattern
:let @+=@a ............ copy register 'a' to the clipboard