Soru Vim'de iki kelime arasında birden fazla boşluk kalmanın etkili yolu


Aşağıdaki metni aldığımı söyle

 word1 word2              word3 word4

ve imleç arasında bir yer vardı word2 ve word3.

Soru

  • Aradaki çoklu boşlukları değiştirmenin en hızlı yolu nedir? word2 ve word3 Vim'de tek bir yer var mı?

İlk düşünceler

  • :s/ */ /g

Ancak, daha hızlı bir şey olabileceğini düşündüm diw ama boşluklar için.

Ayrıca eğer imleç açıkken strateji de işe yararsa iyi olur. w arasında word3 ya da 2 veya word2.


25
2018-03-01 05:31


Menşei




Cevaplar:


ciw ve daha sonra normal moda geri kaçabilir, ancak sadece bir alan üzerindeyseniz çalışacaktır.


16
2018-03-01 05:44



ciw-space-esc 5 anahtar pres; bu harika; ve gerekirse imleci boşluğa taşımak için birkaç ek tuşa basabilirsiniz. - Jeromy Anglim
ldw 3 tuşa basıyor, o zaman. - Drasill
fakat ldw sadece imleç belirli bir pozisyonda olduğunda çalışır; sanırım gelldw Bir dizi ilgili imleç pozisyonundan oldukça iyi çalışırdı. - Jeromy Anglim
Sadece bilmediğiniz komutları yürütmeme ruhuyla bu cevap, ciw "iç kelimeyi değiştir" anlamına gelir ve imlecin şu andaki kelimesini siler ve sizi INSERT moduna geçirir. - anotherdave
ciw sözcükler arasındaki tüm boşlukları kaldırır. Cevap olmalı ciw<space>. - SabreWolfy


Bu benim için çalışıyor:

:s/\s\+/ /g


26
2018-03-01 05:38



Teşekkürler. Ancak, bu ikisi bir vardiya içeren 11 tuşa basıyor. - Jeromy Anglim
lol vay. ikinci vardiya anahtarı nerede? - Shad
Sanırım bu benim çıkmakta olan amatör vimgolfer. artı ve kolonun her ikisi de vardiya gerektirir (en azından klavyemde) - Jeromy Anglim
Vay canına, soruyu yanlış yorumladım. haha, üzgünüm, cevap vermek için zaman ayırdığınız için teşekkürler;) - Shad
Bu, en iyi şekilde, bufffer'daki çoklu "boşluk salyangozları" için arama ve değiştirme olarak çalışır. Teşekkürler. - rld.


Tüm çift boşlukları (sıfır veya daha fazla tekrarlanan) tek bir boşlukla değiştirmeyi deneyin.

:s/  \+/ /g

10
2018-03-01 05:41



Güzel! Kullanmam gerekti \s desen yapmak için değil, desen araması üzerinde çalışmak yerine; :s/\s\s\+/ /g - gbc921


Kullanıyorum (bir kısayol tuşuna bağlı)

i<enter><esc>kJ

i - ekleme modu

k - bir çizgi yukarı

J - birlikte çizgiler birleştir

Bu, imlecin boşluk içinde ya da w arasında word3ve imleci yeni eklenen sözcüğün başına koyar. Eğer onunla çalışmak istiyorsan 2 üzerinde word2sadece ilkini değiştir i ile a.


1
2017-10-20 15:17



Aslında, bence bu sadece işe yarıyor çünkü katılmadan önce Üyelerim satırları düzeltir. O zaman bu cevabı görmezden geldin! - Seb
Bu soruya cevap vermiyor. - SabreWolfy


Bunu iki adımda yapardım

  1. $ // imleç, satırın sonundaki alana gider
  2. dw // whitespaces siler (gerektiği şekilde tekrarlamak için kullanın.)

0
2018-02-12 04:25





%s/\(\w\)\s\+\(\w\)/\1 \2/g
%  - global
s - search
\( - escape (
\w - (any letter, digit)
\) - escape )
\(\w\) - remember letter/digit before space as \1
\s - whitespace
\+ - escape +
\s\+ - 1 or more whitespace space
\(\w\) - remember letter/digit after space(s) as \2
/ - replcae with
\1 - remembered last letter/digit before space
' ' - space character here - single space
\2 - remembered first letter/digit after white space(s).
/ - end of replace
g - globally

0
2018-03-21 19:14



Bu soruya cevap vermiyor. Dokümantasyon yararlı olabilir, ancak daha iyi bir yaklaşım, soru için ve belgelerin de dahil olduğu özel bir çözüm sağlayacaktır. - Stephen Newell
İyi cevap. % s / (\ S) \ s \ + (\ S) / \ 1 \ 2 / gc, kelimeler ve aynı zamanda semboller (veya boşluksuz) arasında çok sayıda boşluk bulma işini yapar - Oculus Dexter