Чи є можливість скопіювати всі рядки з відкритого файлу в буфер обміну в редакторі VI. Я спробував, yGале це не використання буфера обміну для зберігання цих рядків.
Так це можливо?
Чи є можливість скопіювати всі рядки з відкритого файлу в буфер обміну в редакторі VI. Я спробував, yGале це не використання буфера обміну для зберігання цих рядків.
Так це можливо?
Відповіді:
Ви повинні перетягнути текст до *
або +
реєструвати :
gg"*yG
Пояснення:
gg
щоб отримати курсор до першого символу файлу"*y
запустити команду yank до регістра *
з першого рядка, поки ...G
перейти до кінця файлу"
.
:version
vim і шукайте +xterm_clipboard
прапор. Якщо йому передує знак мінус, ви не будете мати цю функціональність. Якщо це так, можливо, ви захочете скомпілювати vim самостійно або запустити gvim, для якого зазвичай ця функція увімкнена.
Використання:
:%y+
потягнути всі лінії.
Пояснення:
%
для позначення наступної команди для роботи над усіма рядкамиy
витягнути ці рядки+
скопіювати в буфер обміну системиПримітка . У Windows +
та *
їх еквіваленті дивіться цю відповідь .
:help
щоб переконатися, що ви фактично є vim.
set clipboard=unnamed
, але тоді це спрацювало чудово!
E850: Invalid register name
:(
на Mac
скопіюйте вибрану частину: візуально виберіть текст (введіть v
або V
в звичайному режимі) та введіть:w !pbcopy
скопіюйте весь файл :%w !pbcopy
минуле з буфера обміну :r !pbpaste
pbcopy
- це утиліта для Mac. У Linux xsel
може працювати замість цього або clip
в Windows.
:%w !pbcopy
все ще працює, якщо файл довший за висоту терміналу.
Буфер обміну буфер +. Щоб скопіювати у буфер обміну, виконайте "+yта [рух].
Отже, gg"+yGскопіюємо весь файл.
Аналогічно, щоб вставити з буфера обміну, "+p
Ще один простий спосіб скопіювати весь файл, якщо у вас виникли проблеми з використанням VI, - це лише ввівши "ім'я файлу кота". Це відлучить файл на екран, і тоді ви можете просто прокручувати вгору та вниз і копіювати / вставляти.
:!cat %
. І копіювати вміст файлу програмно в буфер обміну на Mac OS::!cat % | pbcopy
Це те, що я роблю, щоб витягнути весь файл:
ggVGy
clipboard
намір скопіювати вирваний текст у +
все-таки.
Ви можете скористатися командою "cat", щоб відкрити файл, а скопіювати мишу
reset
заздалегідь виберіть термінал, потім виберіть усі та скопіюйте Це працює через ssh
сеанс.
(у відповідь на @rshdev, і щоб уникнути перекомпіляції vim з + xterm_clipboard per @nelstrom у коментарях до ОП)
є програма під назвою xclip, яка працює як putclip на Ubuntu 11:
:%!xclip -sel clip
u
він не встановлений за замовчуванням. для встановлення використовуйте:
sudo apt-get install xclip
У Ubuntu 12
ви можете спробувати встановити vim-gnome
пакет:
sudo apt-get install vim-gnome
Я спробував це, тому що vim --version
сказав мені, що прапор xterm_clipboard буде відключений (позначено - ), який необхідний для використання функцій буфера обміну.
-> встановлення пакету vim-gnome на Ubuntu 12 також встановила консольну версію vim, у якій включена ця опція (вказана знаком + перед прапорцем xterm_clipboard)
В Arch Linux
ви можете встановити vim-clipboard
з тієї ж причини.
Якщо ви запускаєте neovim, вам слід встановити xclip
(як пояснено help clipboard-tool
)
Якщо ви використовуєте Vim у візуальному режимі, застосовуються також стандартні клавіші вирізання та вставки, принаймні для Windows.
Принаймні, під терміналом Ubuntu (Gnome) працює стандартна копія ( CTRLSHIFTCхоча, здається, не існує стандартного комбінації клавіш select all
(крім того, ALTEза яким слід A).
Я спробував кілька команд, про які люди згадували вище. Жоден не працював. Тоді я влаштувався найпростішим з усіх.
Крок 1: vi <filename>
Крок 2: Клацніть правою кнопкою миші на заголовку вікна Putty.
Крок 3: Виберіть "Очистити прокрутку" (щоб уникнути копіювання решти сеансу SSH).
Крок 4: Клацніть правою кнопкою миші ще раз та виберіть "Скопіювати все у буфер обміну".
Window > Settings > lines of scrollback
до 40000 (доступно також клацанням правою кнопкою миші на заголовку). Він також допомагає використовувати cat
замість vi, оскільки прокручує весь текст.
:set go=a
ggVG
Дивіться :help go-a
:
'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of
the windowing system's global selection. This means that the
Visually highlighted text is available for pasting into other
applications as well as into Vim itself. When the Visual mode
ends, possibly due to an operation on the text, or when an
application wants to paste the selection, the highlighted text
is automatically yanked into the "* selection register.
Thus the selection is still available for pasting into other
applications after the VISUAL mode has ended.
If not present, then Vim won't become the owner of the
windowing system's global selection unless explicitly told to
by a yank or delete operation for the "* register.
The same applies to the modeless selection.
Ну, всі ці підходи цікаві, однак, як лінивий програміст, я використовую yank all line, використовуючи комбінацію числа + y
наприклад, у вас є файл вихідного коду загальною кількістю 78 рядків, ви можете зробити наступне:
gg
щоб отримати курсор на першому рядку y
-> він пронизує 78 рядків під курсором та поточним рядком У ві-білі Біла Джоя не було поняття "буфер обміну", тому я не думаю, що існує вбудований спосіб зробити це.
Функція автоматичного копіювання будь-якого виділеного на кліп буфера обміну gVim найпростіша або використання зовнішньої програми через:!
Для сини Віґу я використовую
:%!putclip
u
Можливо, Ubuntu має такий додаток CLI, як putclip ??
Якщо ваші пальці за замовчуванням CTRL-A CTRL-C
, то спробуйте зіставити карти $VIMRUNTIME/mswin.vim
.
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Я їх відобразив до <Leader><C-a>
і <Leader><C-c>
.
Скопіюйте весь файл усередині vim або його вкладок
y G
потім перейдіть на вкладку та вставте
p
і скоротити використання всього файлу
d G
Я знаю, що десять років щодо цього слід вирішити, але перші два відповіді не спрацювали для мене, тому я продовжував копати. На Redhat (віддалений сервер) - Windows 10 (локальна машина), якщо ви не можете вибрати всю справу за допомогою миші, ви застрягли, оскільки звичайні копії не працюють між віддаленим та місцевим буфером машин.
Отже, для копіювання на віддалений Linux та вставки на локальну Windows вкажіть основний буфер із * та зробіть хороший подвійний ривок
Використовуйте gg" * yy.
Я створив функцію для виконання цієї дії, розмістіть її на своєму ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
OBS: Якщо ви використовуєте neovim, вам також потрібен менеджер буфера обміну, наприклад xclip. для отримання додаткової інформації в neovim:h checkhealth
Важливо також зазначити , що не завжди просто y
буде копіювати в буфер обміну, для того , щоб кожен канал копіювання +
яким є «Clipboard Регістр» спробувати встановити: :set clipboard=unnamed,unnamedplus
. Для мор інформації див :h unnamed
.
Тут більше інформації про vim wikia.
Ви можете використовувати короткий, наприклад, такий:
noremap <F6> :%y+<CR>
Це означає, що коли ви натиснете F6 у звичайному режимі, він скопіює весь файл та додасть його до буфера обміну. Або ви просто можете набрати в звичайному режимі, :%y+
а потім натиснути Enter
.
Клацніть ліву кнопку миші, перетягніть розділ, який ви хочете скопіювати та випустіть. Код автоматично копіюється в буфер обміну.
vi
способом).
Я не міг скопіювати файли, використовуючи відповіді вище, але я маю шпаклівку і знайшов вирішення проблеми Quora.
Примітка: він копіює всі надруковані символи цього сеансу у файл журналу, тому він з часом стає великим. У такому випадку видаліть файл журналу та вкажіть цільовий файл, щоб отримати вміст цього конкретного файлу, скопійований на вашу машину.