Görsel bir seçimi klavyeye kopyaladıktan sonra, orijinal konumuna geri dönün


18

Aniden bu paragrafı kopyalamam gerektiğine karar verdiğimde imlecim bir paragrafın ortasında:

Başlat

Bu yüzden vipparagrafı görsel olarak seçmek için yazıyorum :

seçilmiş

Şimdi cmd+Cpanoya kopyalamak için vurdum (bu, sisteminize göre değişebilir, ancak yazımın merkezi sorusuyla ilgili olmamalıdır), bu da imlecimi paragrafın başında bırakır:

nihai

istenen pozisyondan ziyade, başladığım yerdi.

Seçimle görsel olmayan bir şekilde sorarken aynı sorunun oluştuğunu unutmayın yip.

Bu tür bir seçim / kopyalama eylemleri yaptıktan sonra varsayılan davranış "orijinal imleç konumuna dönmek" olmasını istiyorum. Bunu mümkün kılan bir yapılandırma var mı?


11
Evet, bunu da sinir bozucu buluyorum. Sadece bu amaç için işaretleri kullanma eğilimindeyim: mm "+yap `m( "+ySistem panonuza
benzeyen not

3
İmlecin başlangıcında veya yanık bölgenin sonuna yerleştirilmesini faydalı buluyorum. Sonuçta, içine alınmış metin ve imleçle şimdi ne yapabilirim? Şimdi bir yapıştır / yapıştır yapmak pek mantıklı değil. Ancak, bunu daha sonra yapmak istersem, daha sonra da sorabilirim ... belki de şimdi ihtiyacınız olan sadece bir işarettir.
VanLaser

Yanıtlar:


14

Olası bir çözüm atlamalar kullanmaktır:

Yanlamadan veya görsel olarak seçmeden önce imleciniz hareket ettikten sonra erişebileceğiniz yeni bir atlama ayarlayabilirsiniz. Bunu yapmak için kullanın m`.

Sonra imleciniz hareket ettikten sonra ctrloatlama listesinde geri atlamak için yanma kullanın . Ayrıca, mevcut atlamaların listesini görebilir :jumpsve bu listede ctrlovectrli

İş akışınızı özetlemek gerekirse:

  • m`
  • yip
  • ctrlo

Kullanarak m` bir işaret ayarlar, ``yerine ile atlayabilirsiniz ctrlo.

Daha fazla bilgi için :h mark-motionsve bölümünü okuyabilirsiniz :h :jumps.


Bunu severim. Tek alıntıyı zıplarken genel olarak backtick gibi davranmanın bir yolu var mı? tek alıntı yazmak daha kolaydır ve genellikle doğru sütun konumuna ve doğru satıra atlamak istiyorum ...
Jonah

1
@Jonah, benim <leader>'için `gayet iyi çalışan bir harita . ( <space>Lideri olarak kullanıyorum .)
Numeri, Reinstate Monica

@Jonah: Numeri'nin dediği gibi bir haritalama iyi bir çözüm olabilir, aksi takdirde backtick'ten kurtulmak isterseniz bir göz atabilirsiniz :h 'langmap'. Bunun ideal bir çözüm olduğunu söylemiyorum ama belki sizin için ilginç olabilir.
statox

@Johah, aslında tek alıntı ve geri kene kullanarak takas noremap ' ` noremap ` '... Bu benim vimrc ve harika çalışıyor
Niko Bellic

10

İmleci aşağıdakilerle hareket ettirmekten kaçınabilirsiniz:

:'{,'}y

Bakınız :help range,, :help mark-motionsve :help :y.


1
Bilmek güzel, ama aslında böyle mi yapıyorsun? 8 parantezin iki parantez ile yazılması, bunu mark çözümlerinden daha zor hale getiriyor gibi görünüyor
Jonah

Senin pozisyonunda olsaydım bunu yapardım. Ancak tarif ettiğiniz davranışla ilgili bir sorunum yok, bu yüzden bunu gerçekten yapmıyorum.
romainl

2
@Jonah Hala bir eşleme oluşturma seçeneğiniz var. Böyle bir şey :nmap <key> :'{,'}y<CR>işi yapmalı.
statox

10

İmlecim bir paragrafın ortasında

Az önce düzenlediyseniz, en basit çözüm g ;imlecinizi son düzenleme konumuna getirecek olan yazı yazmaktır.

Paragrafı düzenlemediyseniz, gerçekte hiçbir şeyi düzenlemeden bir düzenleme "etkinliğini" tetiklemek için bulunduğunuz karakterle basit bir değiştirme işlemi yapabilirsiniz (örneğin h, siz yazıyorsunuz rh).


2
1: Ben her zaman kullanılır '., ancak son değişiklikler arasında gezinmek için çok faydalı olabilir g;ve g,.
16'da 16Montu

2
g;Sizi doğru sütun konumuna götüren bir sürümü var mı ?
Jonah

@Jonah varsayılan olarak bu davranıştır. Senin için çalışmıyor mu? Beni her zaman doğru sütun ve çizgi konumuna götürür.
Al.G.

4

Vim-EasyClip eklenti bunun için bir ayarı vardır:

g:EasyClipPreserveCursorPositionAfterYank- Varsayılan 0 (örn. Devre dışı). Vim'in varsayılan davranışı, imleci, diğer hareketlerle tutarlı olan, metnin başlangıcına yerleştirmektir. Ancak, yan işlemler gerçekleştirirken imleç konumunun değişmeden kalmasını tercih ediyorsanız, bu seçeneği etkinleştirin.

Sadece bu küçük özellik için bir eklenti kurmak benim için biraz fazla, bu yüzden yorumuma göre işaretleri kullanmayı tercih ediyorum.


0

Al.G.'nin cevabını genişleterek, gerekli yere düzenleme yapmadan gidebiliriz. Çözüm gi. Daha önce son kesici uç modundayken aynı konuma ulaşacağız.

  • Paragrafın ortasındasınız.
  • ekleme moduna geçin.
  • normal moda geçin.
  • basın vip.
  • basın gi.
  • normal moda geçin. ( gibizi ekleme moduna bırakacak)

Vurgulanan metnin başlangıcına veya sonuna gitmek istiyorsak.

 :help v_o 

Vurgulanan metni sorarsanız, normal moda da dönersiniz ve orijinal imleç konumunu koruyabilir veya koruyamayabilirsiniz.

  1. Vurgulamayı yukarıdan aşağıya imleç konumundan (alt satır sütunu numarasından daha yüksek satır sütunu numarasına) vurmaya başlarsanız, bastığınızda orijinal imleç konumunu koruyacaksınız. y
  2. Vurgulama aşağıdan daha yüksek imleç konumuna başlarsa imleç geçerli konumda kalır.

Sorandan sonra orijinal konumuna geri dönme:
gv önceki vurguyu almak için.

Artık
oveya tuşuyla görsel modda orijinal ve geçerli konum arasında geçiş yapabilirsiniz O.

Durum satırının satır ve sütun sayısı, imleç konumunun tam olarak bilinmesine yardımcı olacaktır.
Belgeler:

:help visual-change

Bu vip, imleç bir paragrafın ortasında başladığında işe yaramaz .
Antony

Bunu fark etmedim, şimdilik cevabımı silmek yerine düzenleyeceğim.
vusan

@Antony Şimdi vipdüzenlememi kontrol etmek için de çalışıyor .
vusan
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.