Я намагався використовувати 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. У версії GUI vim завжди є підтримка буфера обміну, однак, якщо ви хочете використовувати Vim з терміналу, вам доведеться перевірити підтримку X11-буфера обміну.
На консолі введіть:
$ vim --version | grep xterm
Якщо ви знайдете -xterm_clipboard , у вас є два варіанти:
1) Скомпілюйте vim самостійно, увімкнувши прапор xterm_clipboard
2) Видаліть vim, встановіть натомість gvim (vim-gtk або vim-gnome). Ви можете дотримуватися не-gui vim, зателефонувавши vim з терміналу, як і раніше. Цього разу під час перевірки слід знайти + xterm_clipborad .
Тепер, коли ви забираєте текст у реєстрі + у своєму редакторі vim (наприклад, "+ yy), він також копіюється в системний буфер обміну, який ви можете отримати зі своєї зовнішньої програми, наприклад, gedit editor, використовуючи 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
переміщує курсор на початок рядка перед входом у режим вставки, який тут не потрібен.
Детальні вказівки щодо копіювання / вставки рядків тексту in 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
Якщо ви не кореневі : клацніть мишею по центру.
Я просто хотів зазначити, що, використовуючи Vim через Git Bash у Windows, ви можете просто використовувати p
або клацнути мишею по центру, не перебуваючи у режимі вставки. Використовуючи Vim через PuTTY , ви можете просто клацнути правою кнопкою миші. І підсвічування робить копіювання.
Я зазначив це, бо потрапив сюди, не бачачи, що це SE для Ubuntu.
Інші корисні команди:
Ви можете використовувати Ctrl+ Shift+, Vщоб вставити термінальну версію vim, але для версії GUI на зразок 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 хвилин.