Vim'e yapışmayı hızlandırabilir miyim?


12

HTML'nin bir kısmını bir web sayfasından kopyaladım ve bir dosyaya kaydetmek istedim. Bunun için, vim bir terminal penceresinde yeni bir oturum başlattım , komut satırında (yeni) bir dosya adı belirtildi, iekleme moduna geçmek için çarptı ve sonra CtrlShift+ Vve [-- INSERT --]altta gösterilirken bekledi ve bekledi ...

As vimI saniyenin küçük parçalarında geldi metni (yapıştırılan accessoiries menüsünden → Uygulamalar 'Metin Düzenleyici' açılan yeni bir adla kaydedilmiş, kapalı ve Vim oturumu öldürdüğünü, birkaç saniye sonra duyarlı olmayan oldu 1,5 dakika sonra hala yapılmadı Metin sayısı 3200 satırda 186K idi, aşırı değil, ne de fazla uzun satırlarla.

Bu tür girişleri hızlandırmanın bir yolu var mı vimve / veya bunun korkunç, fare yönelimli Metin Editör'ü kullanmaya kıyasla neden bu kadar yavaş olduğuna dair bir açıklama var mı?

(Sistemde topücretsiz olarak bazı işlemcilerim olmasına rağmen % CPU% 5'in üzerine çıkmıyor, bu nedenle bir dosyadan aynı metni okurken var olmayan bir G / Ç bağlantılı sorun olabilir)

Sürüm bilgisi:
Ubuntu 12.04
Vim: 7.3, Ubuntu 12.04
bash tarafından sağlanan yamalar ile : 4.2.25
gnome terminali: 3.4.1.1


1
Ben yavaş b / c giriş ayrıştırmak ve biçimlendirmek vb denemek zorunda olduğunu düşünüyorum. Bunu yapmak için seçenek emin değilim ama geçici olarak bu özelliği w / in devre dışı bırakabilirsiniz vim, yapıştırma yapmak ve sonra varsayalım yeniden etkinleştirin. Ayrıca, :set pasteözelliği iyileştirip iyileştirmediğini görmek için özelliği kullanmayı deneyin . Bkz . Siyah beyaz yazma ve yapıştırma işlemlerinde :help pastenasıl vimayrım yapmadığını açıklar .
slm

Ben de vi(@ @ 0b0 önerilen yolu kaydettikten sonra) okurken dosyayı ayrıştırmak için çalışmayı beklemek de. Ama bu hızlı çalışıyor.
Anthon

Doğru, ama zaten ayrıştırıldığı her şeyi + yeni karakteri yapıştırdığınızda yeniden çözmesi gerektiğini hayal ediyorum. Bir dosyayı da bir dereceye kadar düzenlediğinizde olan şey bu gibi görünüyor.
slm

:set pastegerçekten bir fark görünmüyor (Eğer bir saatim, sadece duvar saati kullanmıyorum).
Anthon

Tamam, sadece bir düşünceliydi ...
slm

Yanıtlar:


14

Çalıştırabileceğiniz, hızla dosyaya pano miktarda metin kaydetmek için cat > file.txt, o zaman, basın içeriğini yapıştırın Ctrl- d.

Eğer varsa xsel yüklü, yapabileceğiniz :r !xselVim "birincil" (aka. "Fare") birini eklemek için, ya :r !xsel -b"panoya" eklemek için ( Ctrl- c) tampon. Ayrıca seçimi xsel >file.txtveya ile doğrudan bir dosyaya da kaydedebilirsiniz xsel -b >file.txt. Bu, ayrı yapıştırma + EOF eylemlerine olan ihtiyacı ortadan kaldırır ve terminaldeki tüm kopya arabelleğinin yazdırılmasını önler.

Xsel dışında xsel'iniz yoksa, karşılık gelen komutlar xclip -outbirincil seçim veya xclip -out -selection clipboardpano arabelleği içindir.


1
Teşekkürler, en azından fareye dönmek zorunda kalmadan çalışır ve dosyayı vim'e eklemek (örneğin boş bir dosyayla başlamadığımda) yeterince hızlıdır.
Anthon

Bunun neden ctrl + shift + v'ye bağlanamadığını anlamıyorum, bunların hepsinde kesinlikle bir anlam yok.
mchid

2

Bu, bir tampon floştan diske sorunudur. Vim çalışmanızı güvende tutmaya çalışır ve saniyede birkaç bin karakter yazabileceğinizi varsaymaz. :help swap-fileArabelleğe alma hakkında bazı ayrıntılar için okuyun . Sorununuzun çözümü şudur:

Vim'in takas dosyasını şu yöntemlerle kapatın:

vim -n <your file>

veya macun öncesi vim içinden:

:set noswapfile

Daha :help swapfilefazla bilgi için bakınız.

Başka bir seçenek, takas dosyasının disk ile senkronizasyonunu sadece kapatmaktır, :set swapsync=ancak bu seçenek geri almak için daha fazla tuş vuruşunu alır ve tembelim. :)

Takasın kapatılması normal işlemler için güvenli değildir! Hemen salçası, ya kullanımdan sonra :set swapfileveya :set swapsync=fsyncnormal davranış geri dönmek (gerçi teknik olarak normal bir davranış olabilirdi senkron değil fsync ile onay :set swapsync?bu yolu gitmek istiyorum önceden varsa).


1
Bu benim için bir şey hızlandırmak değildi ...
elig

1

xterm_clipboardÖzelliğiniz varsa *ve +kayıtlarını kullanabilirsiniz . Bu, X11 birincil seçim arabelleği ve panosuyla (sırasıyla) arabirimi kaydeder.

Böylece CTRL+ ile bir şey kopyaladıysanız c, vim ile yapıştırabilirsiniz "+p.

Kopyalamadan basitçe vurguladıysanız, yapıştırabilirsiniz "*p. Yaparak arabellek varsayılan arabellek
de yapabilirsiniz . Daha sonra , bir kayıt belirtmeyen herhangi bir yank ( ), paste ( ), vb. Kaydı kullanır . Vim 7.3.74 de eklendi , bu da varsayılan olarak kaydı kullanacaktır .*:set clipboard=unnamedyp*clipboard=unnamedplus+

Ayrıca örneğin, yanking birincil seçim ve pano tampon içine şeyler kopyalayabilirsiniz: "+yy.

 

Belirtildiği gibi, bu özelliklerin hepsinin xterm_clipboardözelliğe ihtiyacı olduğunu unutmayın . Bu özelliğe sahip olup olmadığınızı :versionvim içinde mi, yoksa vim --versionkabuktan mı yapıp yapamayacağınızı görebilirsiniz +xterm_clipboard. Diyorsa -xterm_clipboard, buna sahip değilsiniz ve vim'i yeniden derlemek zorunda kalacaksınız.


Bende bu özellik yok. Vim'in xterm altında çalışmamasına yardımcı olmak yeniden derlenir mi? (Gnome-terminal kullanıyorum).
Anthon

@Anthon GUI VIM kullanıyorsanız, kayıtların da etkinleştirildiğine inanıyorum. xterm_clipboardyalnızca vim terminalden çalıştırılıyorsa.
Patrick

Bu yalnızca metindir, GUI VIM yoktur, ancak çalıştırılmaz xterm.
Anthon

Üzgünüm yanlış okudum. Evet xterm_clipboard, yalnızca xterm için değil, herhangi bir terminal öykünücüsü için geçerlidir. Kendimi urxvt kullanıyorum.
Patrick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.