Я намагався використовувати Ctrl+ Vдля вставки вмісту в документ редактора vi, але Ctrl+ Vне інтерпретується як вставка.
Я намагався використовувати Ctrl+ Vдля вставки вмісту в документ редактора vi, але Ctrl+ Vне інтерпретується як вставка.
Відповіді:
Спочатку переконайтесь, що ви перебуваєте в режимі редагування (натисніть i). Потім ви можете вставити Ctrl+ Shift+ V, якщо ви перебуваєте в емуляторі термінала, як gnome-terminal(або виберіть "Вставити" в меню правою кнопкою миші).
Ви також можете ввести :set pastevim перед вставкою, щоб вимкнути автоматичне відступ тощо. Потім :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_clipboardvim. Ця функція називається "скобованою пастою". Докладніше див. 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 хвилин.