Я пытался использовать Ctrl+ Vдля вставки содержимого в документ редактора vi, но Ctrl+ Vне интерпретируется как вставка.
Я пытался использовать Ctrl+ Vдля вставки содержимого в документ редактора vi, но Ctrl+ Vне интерпретируется как вставка.
Ответы:
Сначала убедитесь, что вы находитесь в режиме редактирования (нажмите i). Затем вы можете вставить с Ctrl+ Shift+ V, если вы находитесь в эмуляторе терминала, как gnome-terminal
(или выберите «Вставить» в меню правой кнопкой мыши).
Вы также можете ввести :set paste
vim перед вставкой, чтобы отключить автоматический отступ и т. Д. Затем :set nopaste
после вставки содержимого.
Также проверьте этот вопрос на stackoverflow.com для получения дополнительной информации.
Если вы хотите скопировать / вставить строки vim
(в отличие от вставки содержимого буфера обмена), вам нужно проверить команду yank . Вот шпаргалка, которая может помочь.
I
учетом регистра. Нижний регистр i
- это обычный способ входа в режим вставки. Заглавная I
переводит курсор в начало строки, а затем вводит вас в режим вставки.
Vi (и Vim) работает совсем по-другому по сравнению с обычным текстовым редактором, таким как Gedit. У этого также есть довольно крутая кривая изучения. Если вы хотите выучить некоторые основные команды, начните с этого интерактивного урока .
Тем не менее, чтобы ответить на ваш вопрос. Доступ к содержимому системного буфера обмена возможен через регистр «плюс». Таким образом, чтобы вставить что-то из системного буфера обмена, вы можете в обычном режиме нажать: "+p(Не одновременно, а один за другим).
vi
не vim
set :paste
).
Если вы хотите скопировать содержимое вставки в тот же файл , используйте yank
и paste
.
Если вы хотите скопировать содержимое вставки через терминалы , откройте первый файл, набрав нужный текст, затем откройте второй файл в vim (например :tabnew /path/to/second/file
) и нажмите, p
чтобы вставить его.
Если вы хотите скопировать содержимое вставки из vim во внешнюю программу , вам нужно получить доступ к системному буферу обмена. Я предполагаю, что вы используете Ubuntu. Версия vim с графическим интерфейсом всегда имеет поддержку буфера обмена, однако, если вы хотите использовать Vim из терминала, вам придется проверить поддержку буфера обмена X11.
С консоли введите:
$ vim --version | grep xterm
Если вы найдете -xterm_clipboard , у вас есть два варианта:
1) Скомпилируйте vim самостоятельно, установив флаг xterm_clipboard на
2) Удалите vim, установите вместо него gvim (vim-gtk или vim-gnome). Вы можете придерживаться vim без gui, вызывая vim из терминала, так же, как вы делали это раньше. На этот раз, когда вы проверяете, вы должны найти + xterm_clipborad .
Теперь, когда вы вытаскиваете некоторый текст в регистр + внутри вашего редактора vim (например, «+ yy»), он также копируется в системный буфер обмена, который вы можете извлечь из вашей внешней программы, такой как редактор gedit, с помощью Ctrl+ V.
Если вы хотите скопировать содержимое вставки из внешней программы в vim , сначала скопируйте текст в системный буфер обмена с помощью Ctrl+ C, затем в режиме вставки редактора vim щелкните среднюю кнопку мыши (обычно колесо) или нажмите Ctrl+ Shift+, Vчтобы вставить.
Это 4 основных условия копирования и вставки, связанных с vim. Надеюсь, это поможет.
vim-gtk
есть xterm_clipboard
поддержка и на Fedora xvim
.
Я всегда использую Shift+, Insertкогда хочу вставить текст в терминал, работает во всех терминальных программах.
(По этой же причине я никогда не получаю ноутбук, на котором невозможно нажать, Insertне нажимая вторичную клавишу)
Vi
/ Vim
! = терминал;)
Ctrl+A
, Ctrl+C
тоже?
Как только вы введете vi, нажмите, i
чтобы войти в режим вставки, щелкните правой кнопкой мыши в терминале, нажмите Вставить.
i
. Что делает заглавные буквы I
?
i
. Верхний регистр I
перемещает курсор в начало строки перед переходом в режим вставки, который здесь не нужен.
Подробные инструкции для копирования / вставки строк текста в vi с использованием yank
иput
(используйте следующее в командном режиме vi)
Копировать (YANK)
Чтобы скопировать одну строку в vi:
yy
или введитеY
Чтобы скопировать 2 строки в vi:
2yy
или введите2Y
(аналогично, любое количество строк может быть скопировано)
Чтобы скопировать все строки из текущего местоположения в конец файла:
yG
Чтобы скопировать весь текст из текущего местоположения в конец текущего слова:
yw
Чтобы скопировать весь текст из текущего местоположения в конец строки:
y$
Вставить (PUT)
Чтобы вставить текст в буфер обмена - после расположения курсора:
p
Чтобы вставить текст в буфер обмена - до расположения курсора:
P
У меня была проблема, потому что моя установка Vim не поддерживала буфер обмена :
vim --version | grep clip
-clipboard +insert_expand +path_extra +user_commands
+emacs_tags -mouseshape +startuptime -xterm_clipboard
Я установил vim-gnome (который поддерживает буфер обмена), а затем снова проверил:
vim --version | grep clipboard
+clipboard +insert_expand +path_extra +user_commands
+emacs_tags +mouseshape +startuptime +xterm_clipboard
Теперь я могу копировать и вставлять, используя "+ y и" + p соответственно.
С Vim 8+ на Linux или Mac вы теперь можете просто использовать встроенную вставку ОС ( ctrl+shift+V
на Linux, cmd+V
на Mac). Не нажимайте i
для режима вставки.
Он вставит содержимое буфера обмена вашей ОС, сохраняя пробелы и вкладки без добавления автоматического отступа. Это эквивалентно тому , что старый :set paste
, i
, ctrl+shift+V
, esc
, :set nopaste
метод.
Вам даже не нужны функции +clipboard
или +xterm_clipboard
vim, установленные больше. Эта функция называется «вставка в скобках». Для получения дополнительной информации см. Https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763
Если вы root : Ctrl+ Shift+V
Если вы не root, щелкните мышью по центру.
Я просто хотел отметить, что используя Vim через Git Bash в Windows, вы можете просто использовать p
или щелкать мышью по центру, не находясь в режиме вставки. Используя Vim через PuTTY , вы можете просто щелкнуть правой кнопкой мыши. И выделение делает копирование.
Я заметил это, потому что попал сюда, не видя, что это SE для Ubuntu.
Другие полезные команды:
Вы можете использовать Ctrl+ Shift+ Vдля вставки в терминальную версию vim, но для версии с графическим интерфейсом vim, например Neovim-Qt
, вставка текста из системного буфера обмена с Ctrl+ Shift+ Vпросто не будет работать. Вы должны получить доступ к буферу обмена "+
или "*
в редакторе 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)
vimtutor
Он», и вы получите скорость до того места, где его можно использовать примерно через 45 минут.