Просто обратите внимание, что основная причина использования Vi в том, что Vim не установлен. Если у вас установлен Vim, возможно, стоит использовать его вместо этого. Vi на самом деле не имеет никаких преимуществ, кроме того, что он уже присутствует в каждой установке Unix. На мой взгляд, лучший способ изучить Vim - это открыть эмулятор терминала (не из Vim) и набрать « vimtutorОн», и вы получите скорость до того места, где его можно использовать примерно через 45 минут.
Бен Мордехай
1
+1 @BenMordecai - я уже был знаком с vi (из старых), включая его удобную функцию sub-shell, но мне нужно было это обновить. Отличное занятие. Прошел через это как ветер. Благодарю.
Cbhihe
Ответы:
192
Сначала убедитесь, что вы находитесь в режиме редактирования (нажмите i). Затем вы можете вставить с Ctrl+ Shift+ V, если вы находитесь в эмуляторе терминала, как gnome-terminal(или выберите «Вставить» в меню правой кнопкой мыши).
Вы также можете ввести :set pastevim перед вставкой, чтобы отключить автоматический отступ и т. Д. Затем :set nopasteпосле вставки содержимого.
Также проверьте этот вопрос на stackoverflow.com для получения дополнительной информации.
Если вы хотите скопировать / вставить строки vim(в отличие от вставки содержимого буфера обмена), вам нужно проверить команду yank . Вот шпаргалка, которая может помочь.
Я думаю, что если у вас есть курсор мыши, вы не можете вставить, используя Ctrl + Shift + V.
Элвин Вонг
14
Просто примечание, с Iучетом регистра. Нижний регистр i- это обычный способ входа в режим вставки. Заглавная Iпереводит курсор в начало строки, а затем вводит вас в режим вставки.
Бен Мордехай,
64
Vi (и Vim) работает совсем по-другому по сравнению с обычным текстовым редактором, таким как Gedit. У этого также есть довольно крутая кривая изучения. Если вы хотите выучить некоторые основные команды, начните с этого интерактивного урока .
Тем не менее, чтобы ответить на ваш вопрос. Доступ к содержимому системного буфера обмена возможен через регистр «плюс». Таким образом, чтобы вставить что-то из системного буфера обмена, вы можете в обычном режиме нажать: "+p(Не одновременно, а один за другим).
В терминале GNOME ярлыками для копирования и вставки являются Ctrl-Shift-C и Ctrl-Shift-V соответственно.
Flimm
1
Я по очереди пытался нажать <kbd> "</ kbd>, <kbd> + </ kbd> и <kbd> p </ kbd>, а также <kbd>" </ kbd> и <kbd> p < / kbd> и ничего не произошло. Что я сделал не так? Я viне vim
пользуюсь
1
Это правильный ответ. Используя, например. Ctrl-Shift-v будет работать только с самым простым содержимым (разрывы строк и отступы могут быть действительно неправильными, если вы находитесь в терминале, и вы забыли использовать set :paste).
rsenna
29
Если вы хотите скопировать содержимое вставки в тот же файл , используйте 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. Надеюсь, это поможет.
Какой смысл: tabnew / path / to / second / file? Вы можете добиться того же, что и в первом файле: копировать / копировать / вырезать, открывая второй файл с: vi / path / to / second / file и вставляя в него (p / P). По крайней мере, в моем случае ... Или потому, что у меня включена функция + xterm_clipboard vim? Или есть что-то большее, чем просто новое?
Cbhihe
1
На Ubuntu vim-gtkесть xterm_clipboardподдержка и на Fedora xvim.
icc97
18
Я всегда использую Shift+, Insertкогда хочу вставить текст в терминал, работает во всех терминальных программах.
(По этой же причине я никогда не получаю ноутбук, на котором невозможно нажать, Insertне нажимая вторичную клавишу)
Я думал, что строчные i. Что делает заглавные буквы I?
Flimm
@Flimm, который уже объяснялся в комментарии Бена Мордехая о другом ответе.
sierrasdetandil
Я отредактировал ответ в нижнем регистре i. Верхний регистр Iперемещает курсор в начало строки перед переходом в режим вставки, который здесь не нужен.
Flimm
6
Подробные инструкции для копирования / вставки строк текста в vi с использованием yankиput
(используйте следующее в командном режиме vi)
Копировать (YANK)
Чтобы скопировать одну строку в vi:
В командном режиме переместите курсор на строку, которую необходимо скопировать, и введите yyили введитеY
Чтобы скопировать 2 строки в vi:
В командном режиме переместите курсор на первую строку, которую необходимо скопировать, и введите 2yyили введите2Y
(аналогично, любое количество строк может быть скопировано)
Чтобы скопировать все строки из текущего местоположения в конец файла:
В командном режиме переместите курсор на первую строку, которую необходимо скопировать, и введите yG
Чтобы скопировать весь текст из текущего местоположения в конец текущего слова:
В командном режиме переместите курсор в место, откуда необходимо скопировать текст, и введите yw
Чтобы скопировать весь текст из текущего местоположения в конец строки:
В командном режиме переместите курсор в место, откуда необходимо скопировать текст, и введите y$
Вставить (PUT)
Чтобы вставить текст в буфер обмена - после расположения курсора:
В командном режиме введите p
Чтобы вставить текст в буфер обмена - до расположения курсора:
С Vim 8+ на Linux или Mac вы теперь можете просто использовать встроенную вставку ОС ( ctrl+shift+Vна Linux, cmd+Vна Mac). Не нажимайте iдля режима вставки.
Он вставит содержимое буфера обмена вашей ОС, сохраняя пробелы и вкладки без добавления автоматического отступа. Это эквивалентно тому , что старый :set paste, i, ctrl+shift+V, esc, :set nopasteметод.
Это ответ, который я ищу. Поскольку Vim не используется по умолчанию в дистрибутивах GNU / Linux, его необходимо установить даже в Ubuntu. Кроме того, кнопки вверх-вниз Vi не работают в Ubuntu и не подсвечиваются.
Я просто хотел отметить, что используя Vim через Git Bash в Windows, вы можете просто использовать pили щелкать мышью по центру, не находясь в режиме вставки. Используя Vim через PuTTY , вы можете просто щелкнуть правой кнопкой мыши. И выделение делает копирование.
Я заметил это, потому что попал сюда, не видя, что это SE для Ubuntu.
Это не работает для меня на Windows Git Bash. Какую консоль вы используете, Mintty или Windows CMD?
Висбуки
Я считаю, что это было мятным.
Тайлер Кристиан
0
Вы можете использовать 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 минут.Ответы:
Сначала убедитесь, что вы находитесь в режиме редактирования (нажмите 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.
С консоли введите:
Если вы найдете -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
поддержка и на Fedoraxvim
.Я всегда использую Shift+, Insertкогда хочу вставить текст в терминал, работает во всех терминальных программах.
(По этой же причине я никогда не получаю ноутбук, на котором невозможно нажать, Insertне нажимая вторичную клавишу)
источник
Vi
/Vim
! = терминал;)Ctrl+A
,Ctrl+C
тоже?Используйте центральную кнопку мыши, чтобы вставить текст, выделенный в другом месте.
Это полезно, когда у вас нет доступа к системному буферу обмена (например, в удаленном сеансе SSH).
Должен быть в режиме редактирования / вставки для Vim.
источник
Как только вы введете 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-gnome (который поддерживает буфер обмена), а затем снова проверил:
Теперь я могу копировать и вставлять, используя "+ 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
будет просто командами копирования / вставки:источник