VI satırında açık satırdan panoya tüm satırları kopyalamak için herhangi bir yolu var mı. Denedim yGama bu satırları saklamak için pano kullanmıyor.
Bu mümkün mü?
VI satırında açık satırdan panoya tüm satırları kopyalamak için herhangi bir yolu var mı. Denedim yGama bu satırları saklamak için pano kullanmıyor.
Bu mümkün mü?
Yanıtlar:
Metni şuna *
veya +
kayıtlara çekmelisiniz :
gg"*yG
Açıklama:
gg
imleci dosyanın ilk karakterine götürmek için"*y
*
ilk satıra kayıt için bir yank komutu başlatmak için ...G
dosyanın sonuna gitmek"
.
:version
vim'de çalıştırın ve +xterm_clipboard
bayrağı arayın . Öncesinde eksi işareti varsa, bu işlevselliğe sahip olmayacaksınız. Bu durumda, vim'i kendiniz derlemek veya genellikle bu özelliğe sahip olan gvim'i çalıştırmak isteyebilirsiniz.
kullanın:
:%y+
tüm çizgileri çekmeye.
Açıklama:
%
tüm satırlarda çalışmak için bir sonraki komutu referans almaky
bu çizgileri çekmek+
sistem panosuna kopyalamak içinNot : Windows +
ve *
eşdeğerde bu cevaba bakınız .
:help
Aslında vim olduğunuzdan emin olmak için yazmayı deneyin .
set clipboard=unnamed
, ama sonra bu harika çalıştı!
E850: Invalid register name
:(
Mac'te
seçili parçayı kopyala: metni görsel olarak seç (tür v
veya V
normal modda) ve yaz:w !pbcopy
tüm dosyayı kopyala :%w !pbcopy
panodan geçmiş :r !pbpaste
pbcopy
bir Mac yardımcı programıdır. Linux'ta, xsel
bunun yerine veya clip
Windows'ta çalışabilir .
:%w !pbcopy
, dosya terminalin yüksekliğinden daha uzunsa yine de çalışır.
Pano arabellektir +. Panoya kopyalamak için yapın "+yve [hareket] yapın.
Böylece, gg"+yGtüm dosyayı kopyalar.
Benzer şekilde, panodan yapıştırmak için, "+p
VI kullanarak sorun yaşıyorsanız, tüm dosyayı kopyalamanın bir başka kolay yolu da sadece "cat dosya adı" yazmaktır. Dosyayı ekrana yansıtır ve sonra yukarı ve aşağı kaydırıp kopyalayıp yapıştırabilirsiniz.
:!cat %
. Ve dosyanın içeriğini programlı olarak Mac OS'de panoya kopyalamak için::!cat % | pbcopy
Tüm dosyayı çekip çıkarmak için yaptığım şey bu:
ggVGy
clipboard
metni +
yine de kopyalamak için ayarlamış olsaydı olurdu .
Dosya açmak için "cat" komutunu kullanabilir ve kopyalamak için fareyi kullanabilirsiniz
reset
önce terminali seçin, ardından tümünü seçin ve kopyalayın. Bu ssh
oturum boyunca çalışır .
(@rshdev'e yanıt olarak ve OP hakkındaki yorumlarda @nelstrom başına + xterm_clipboard ile vim'i derlemek zorunda kalmamak için)
Ubuntu 11'de putclip gibi çalışan xclip adında bir program var:
:%!xclip -sel clip
u
varsayılan olarak yüklenmez. yüklemek için kullanın:
sudo apt-get install xclip
Ubuntu 12 hakkında
vim-gnome
paketi yüklemeyi deneyebilirsiniz :
sudo apt-get install vim-gnome
Çünkü denedim vim --version
o bayrak olurdu söyledi xterm_clipboard devre dışı (ile gösterilir - Pano işlevselliği kullanmak için gereklidir).
-> vim-gnome paketinin Ubuntu 12 üzerine kurulması, bu seçeneğin etkinleştirildiği ( xterm_clipboard bayrağından önce + işaretiyle gösterilen) konsolun vim sürümünü de yükledi.
Arch Linux'ta
vim-clipboard
aynı nedenden dolayı kurabilirsiniz .
Neovim'i çalıştırırsanız, yüklemeniz gerekir xclip
(açıklandığı gibi help clipboard-tool
)
Vim'i görsel modda kullanıyorsanız, standart kes ve yapıştır tuşları en azından Windows için de geçerlidir.
En azından Ubuntu terminali (Gnome) altında standart kopya da çalışır ( CTRLSHIFTCancak standart bir klavye kısayolu olmasa da select all
( ALTEbunu takip etmekten başka A).
İnsanların yukarıda bahsettiği komutlardan birkaçını denedim. Hiçbiri işe yaramadı. Sonra hepsinden basit olanı yakaladım.
Adım 1: vi <filename>
Adım 2: Macun penceresinin başlık çubuğunu sağ tıklayın
Adım 3: "Kaydırma işlemini temizle" yi seçin (SSH oturumunuzun geri kalanını kopyalamaktan kaçınmak)
Adım 4: Tekrar sağ tıklayın ve "Tümünü panoya kopyala" yı seçin.
Window > Settings > lines of scrollback
40000'e çıkarmam gerekiyordu (başlık çubuğuna sağ tıklayarak da mevcut). Ayrıca cat
tüm metin içinde kaydırdığı için vi yerine kullanılmasına yardımcı olur .
:set go=a
ggVG
Bakınız :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.
Bill Joy'un vi'sında "pano" kavramı yoktu, bu yüzden bunu yapmanın yerleşik bir yolu olduğunu düşünmüyorum.
gVim'in panoya otomatik olarak vurgulanan her şeyi kopyalama özelliği en kolay olanıdır veya harici bir programı şu yöntemle kullanır:!
Cygwin'in vim'i için kullanıyorum
:%!putclip
u
Belki Ubuntu putclip gibi bir CLI uygulaması var ??
Parmaklarınız varsayılan olarak CTRL-A CTRL-C
ayarlıysa, eşleştirmeleri deneyin $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
Ben onları eşledim <Leader><C-a>
ve <Leader><C-c>
.
Tüm dosyayı vim veya sekmelerinin içine kopyalayın
y G
sonra bir sekmeye gidin ve yapıştırın
p
ve tüm dosya kullanımını kesmek için
d G
Bu konuda on yılın çözülmesi gerektiğini biliyorum, ancak ilk iki cevap benim için işe yaramadı, bu yüzden kazmaya devam ettim. Redhat (uzak sunucu) - Windows 10'da (yerel makine), her şeyi bir fare ile seçemezseniz, normal kopyalar uzak ve yerel makine panoları arasında çalışmadığından sıkışmışsınızdır.
Bu nedenle, uzak Linux'a kopyalamak ve yerel Windows'a yapıştırmak için, birincil arabelleği belirtin *ve güzel bir çift yank yapın
Kullanın gg" * yy.
Bu eylemi gerçekleştirmek için bir işlev oluşturdum ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
OBS: neovim kullanıyorsanız, xclip gibi bir pano yöneticisine de ihtiyacınız var. daha fazla bilgi için neovim:h checkhealth
Her zaman basit değil söz de önemlidir y
her kopya beslemesini yapmak için, panoya kopyalar +
"Pano Kayıt" setine deneyin wich: :set clipboard=unnamed,unnamedplus
. İçin mor bilgi bkz: :h unnamed
.
Burada vim wikia hakkında daha fazla bilgi.
Bunun gibi bir shortcur kullanabilirsiniz:
noremap <F6> :%y+<CR>
Bu, F6'yı normald modunda ittiğinizde, tüm dosyayı kopyalayıp panoya ekleyeceği anlamına gelir. Ya da sadece normal moda girebilir :%y+
ve daha sonra itebilirsiniz Enter
.
Sol fare düğmesini tıklayın, kopyalamak ve serbest bırakmak istediğiniz bölüm boyunca sürükleyin. Kod otomatik olarak panoya kopyalanır.
vi
yoludur).
Yukarıdaki cevapları kullanarak dosyaları kopyalayamadım ama macunum var ve Quora'da bir çözüm buldum.
Not: oturumun tüm basılı karakterlerini günlük dosyasına kopyalar, böylece sonunda büyür. Bu durumda, günlük dosyasını silin ve hedef dosyayı kopyalayın, böylece söz konusu dosyanın içeriğini makinenize kopyalayın.