Kayıt defterini temizlemeden belirli işlemleri gerçekleştirme


30

Sık sık, yapılandırma dosyalarında bir satır bloğunu kopyalayıp yapıştırabilirim, daha sonra bu bloğa küçük değişiklikler yapmak istiyorum. Yapıştırdıktan sonra, xkaldırmak istediğim karakterleri silmek için kullanıyorum , sonra bir sonraki bloğu yapıştırmak için devam ediyorum. Dışında xsilinmiş karakterleri panoya koyar, bu yüzden satır bloğunu tekrar kopyalamam gerekir.

Ekleme moduna girmeden bunu yapmanın bir yolu var mı?


Jasper , Yığın Taşması ile ilgili benzer sorular buldu : [Son yanlığınızın üzerine yazmadan vim'de silmek için herhangi bir yol var mı? [duplicate]] ( stackoverflow.com/questions/3638542/… ) ve In vim kayıt defterine metin koymadan silmenin bir yolu var mı?
Gilles 'SO- kötü olmak'

Yanıtlar:


35

Seçenekleriniz:

  1. Kara delik yazıcısını kullanın _. Örneğin, bir satır silmek için yazdığınız "_dd. Bu panoya etki etmeden siler.
  2. Açıkça orijinal yank için bir kayıt adlandırın. Örneğin, bir satırı adlandırılmış bir sicile kaydetmek için yazmanız ve "ayyardından yapıştırmanız için yazmanız gerekir"ap
  3. Bunun yerine orijinal yank almak için yank kayıtlarını kullanın. Yank yazabilir, sonra gerektiği gibi silebilir ve ardından yapıştırma türüne gittiğinizde"0p
  4. Silme operatöründen farklı bir kesim operatörü sağlamak için vim-easyclip gibi bir eklenti kullanın (tam açıklama: Bunu yazdım)

:help registersİlk 3'te daha fazla ayrıntı için koş


4
Yani o zaman xkullanırım "_x
durron597

1
Bu doğru.
Steve Vermeulen

2
@ durron597 Bir kerede bir karakter siliyorsanız x, muhtemelen bir sonraki iki boşlukla ayrılmış belirteçleri silen bir dt)sonraki yakın parantezde silinene kadar olanları silmeyi öğrenmelisiniz d2W. O zaman, her zaman yaptığım bir şey "_di{olan hazır bir bölgenin içinde gibi bir şey yapabilirsiniz. Normal modda bu araçlar " silme her şey içeride bu çaprazlı içine bölgeye kara delik "
OregonTrail

nnoremap x "_xBenim ~/.vimrc( eklendi açıklama burada: stackoverflow.com/questions/54255/… ).
Victoria Stuart

11

xpanoya bir şey koymaz, onları bir kayıt defterine koyar . Hangi sicile koyacağını söylemezseniz, önceki içeriğin üzerine yazdığı isimsiz sicile koyar. Öyleyse, hangi kayıt defterini kullanacağınızı söyleyin: " REGISTER xnerede KAYIT herhangi bir tek harf. Daha sonra o kayıttan pyapıştırmak için aynı alıntı-kayıt önekini kullanın . (Not: küçük harf içeriklerini değiştirir; büyük harf ekler).

Ayrıca iki özel kayıt vardır "0ve "1. başka bir komutla (gibi ) bir metni silseniz bile kalacak "0en son yanked ( y) metnidir x. "1bu metin küçük olmadığı sürece (bir satır) en son silinen metindir. Küçük silinmiş metin giriyor "-.

Son olarak, Steve Vermeulen'in işaret ettiği gibi, kara delik kaydını belirterek silinmiş metni kaydetmemesini söylersiniz "_.

İlgili yardım komutu :help registers.


3

:letKomut bir adlandırılmış kayıt yeniden tanımlamak izin verir. Vim'in komut satırında Control+ 'ya R iki kez 1' e basın ve ardından kayıt adı, kayıt içeriğini komuta yapıştırır. Sonra yapıştırılanı değiştirebilir ve kayıt defterinde değişikliklerinizi kaydedebilirsiniz.

Örnek:

  • Normal modda, "Foo Bar" metnini içeren bir satıra yazarak "fyy, tüm satırı ( yy) fregister'a ( "f) yazar.
  • Tip :let @f='ve Control+ r, Control+ ryine, o fve siz komut satırı artık okur yüzden, "Foo Bar" da yapıştırın görmelisiniz :let @f='Foo Baren sonunda imleç.
  • Şimdi okları kullanabilir ve sildiğiniz tuşları düzenlemek üzere silebilirsiniz :let @f='foo bar baz.
  • Alıntıyı bitir: :let @f='foo bar baz've vur Enter.

Şimdi, fkaydın içeriğini "foo bar baz" olarak tanımladınız .

(Bu ayrıca makrolar için de geçerlidir! :help let)


1 Control + r, zaten karakter modundaymış gibi ekleme modundayken bir kayıtlayıcı eklemenizi sağlar. Bu sırayı iki kez kullanmak önemlidir, çünkü "metin tam anlamıyla yazılır, yazılmamış gibi yazılır. Bu, kayıt defteri gibi karakterler içerdiğinde farklılık gösterir <BS>." - insert.txt vimdoc,:help i_CTRL-R_CTRL-R


0

"_@Derobert tarafından belirtilen kara delik kayıt ile ilgili olarak http://vimcasts.org/episodes/meet-the-yank-register/

Vim, daha standart terminoloji kesme, kopyalama ve yapıştırma yerine, delete, yank ve put terimlerini kullanır. Aynı harfle başlayıp, yapıştır ve yapıştır kolayca değiştirilebilir. Yank kelimesine alışınca, kopya ile eşanlamlı hale gelir. Fakat Vim'in 'delete' kelimesini kullanması problemlidir. Çoğu durumda, delete kelimesi sadece remove anlamına gelir. Ancak Vim'in silme işlemi, metni bir kayıt defterine kopyalar, ardından belgeden kaldırır. Başka bir deyişle, Vim'in silme işlemi kesilmiş gibi davranıyor.


2
Bu soruya bir cevap vermiyor. Bir yazarın açıklamasını eleştirmek veya talep etmek için, yazdıklarının altında bir yorum bırakın; istediğiniz zaman kendi yazılarınıza yorum yapabilirsiniz ve yeterli saygınlık elde ettiğinizde , herhangi bir yayına yorum yazabilirsiniz .
jamessan

Orjinal yayına yorum yapmaya çalıştım ama yapamadım. Sahip olduğum tek alternatif @jamessan 'ı seçtiğim oldu
Marlon León

0

Eklenti ReplaceWithRegister

http://www.vim.org/scripts/script.php?script_id=2703 (2009-2014)

Haritalamayı önerir gr.

  1. birden çekme
  2. Görsel olarak değiştirmek istediğiniz metni seçin ve tuşuna basın. gr
  3. değiştirmek istediğiniz sonraki bloğa gitme

Alternatif olarak, gr<text object>görsel bir seçim yapmadan yapmak için kullanın . repeat.vimTim Pope ve visualrepeat.vimIngo Karkat'ın eklentileri yüklendiğinde dot-repeat desteklenir .

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.