Tüm metni Vim'de küçük harfe dönüştürme


211

Vim'deki tüm metni küçük harfe nasıl dönüştürebilirsiniz? Hatta mümkün mü?


Tüm karakterler büyük harfle yazılmış çok sayıda html sayfamız var. Bu, her şeyi küçük harfle yeniden yazmak için zaman kazandırıyor.
ksuralta

2
Soru düzenlenmeden önce, vim'deki tüm metnin küçük harflere nasıl dönüştürüleceği idi. Açıkçası, metni küçük harfe dönüştürmek için bir kullanım durumu vardır.
Lemonad

6
VIM web sitesinde bir cevap var: vim.wikia.com/wiki/Switching_case_of_characters Teşekkürler.
fnds

Yanıtlar:


122
  1. Gerçekten küçük harfleri kastediyorsanız , hayır, bu mümkün değildir - tıpkı herhangi bir metin düzenleyicide ( kelime işlemcinin aksine) metni kalın veya italik olarak dönüştürmek mümkün olmadığından . Metni küçük harfe dönüştürmek istiyorsanız, görsel bir blok oluşturun ve u(veya Ubüyük harfe dönüştürmek için) tuşuna basın . ~Komut modunda Tilde ( ), imlecin altındaki karakterin durumunu tersine çevirir.

  2. Vim'deki tüm metni küçük harflerle görmek istiyorsanız, guifontseçeneğe bakmak veya :set guifont=*Vim lezzetinizin GUI yazı tipi seçicisini destekleyip desteklemediğini yazmak isteyebilirsiniz.


33
Bir metin bloğunu küçük harflerle yazmak için görsel bir blok oluşturmak zorunda olmadığınızı belirtmek gerekir. guubir satırı ve gu[motion]o hareketin metnini küçük harcar. Aynı şekilde gUUve gU[motion]sadece büyük harf için aynı şekilde çalışın.
Zachary Murray

1
Aslında, capcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz kullanarak çoğu harf için küçük harfler de mümkündür.
gerrit

1
Yine de bu sadece bir hack. Bunlar normal küçük büyük harfler olarak kullanılmaz ve yazı tipleri tarafından iyi desteklenmez. (Masaüstü makinemde, F garip bir şekilde render ediyor, telefonumda hiç bir şey vermiyor, bir örnek vermek için.) Her neyse, Unicode'un ilginç kısmı, teşekkürler!
zoul

2
Bu cevap yanlış. user80168 doğru yanıtı veriyor.
Wayne Workman

400

Metni küçük harfle yazmak istediğinizi varsayalım. Çözüm oldukça basit:

ggVGu

Açıklama:

  1. gg - metnin ilk satırına gider
  2. V - hat modunda Görsel seçimi açar
  3. G - dosyanın sonuna gider (metnin tamamını seçtiğiniz anda)
  4. u - küçük harf seçilen alan

88
veya görsel seçim yapmadan yapmak istiyorsanız ggguG. : yardım gu
DrAl

18
Kullanım sermaye Uharfe için (örneğin ggVGU)
Nathan Wallace

42

Mangledorf'un çözümüne benzer, ancak daha kısa ve layman dostu

:%s/.*/\L&/g


3
:%s/.*/\L&yeterli olacaktır ( tüm çizgiyi seçtiği için gbayrağa gerek yoktur .*)
Gordon Gustafson

1
Gibi :%s/./\L&/g/ g / satır için küresel bir işlemi gösterir. Ama beni yakalayan şey &. Bu neden gerekli?
Braden Best

1
&Burada açılımı what was matched by the patterndeğiştirin: aşağıdaki gibi anlaşılabilir, böylece .*tarafından \Lowercase(what was matched by the pattern). Not eşleşen o .küresel yavaş eşleştirme daha.*
Camusensei

39

bu komut modu seçeneğini kullan

ggguG


gg - Goto the first line 
g  - start to converting from current line    
u  - Convert into lower case for all characters
G  - To end of the file.

27

Bir kediyi ciltlemenin birçok yolu ... işte yeni yayınladığım yol :


:%s/[A-Z]/\L&/g

Aynı şekilde büyük harf için:


:%s/[a-z]/\U&/g

Bu yöntemi tercih ediyorum çünkü bu yapıyı ( :%s/[pattern]/replace/g) her zaman kullanıyorum, bu yüzden daha doğal.


Son örnekte bir yazım hatası olduğunu düşünüyorum ('büyük harf için de aynı şekilde') - normal ifade '[AZ]' yerine [az] olarak değişmelidir.
monojohnny

1
:%s/./\U&/gayrıca çalışır. Sayıları ve alfabe dışı karakterleri yok sayar. Beni yakalayan şey &. Neden \ U (veya \ L) tek başına yeterli değil? Bunun için bir açıklama alabilir miyiz?
Braden Best

2
&eşleşen dize için bir stand-in'dir. Böylece \U&eşleşen dizeyi büyük harfle değiştirir, böylece değiştirme için kullanılabilir.
Alec Jacobson

22
  • Daha sonra bir hareketle "HellO" durumunu "hELLo" olarak değiştirin.
  • "HellO" harfini "HELLO" ya büyük harfle ve ardından bir hareketle yazın.
  • "HellO" harfini gu ve sonra bir hareketle "merhaba" olarak değiştirin.

Örnekler ve daha fazla bilgi için lütfen şunu okuyun: http://vim.wikia.com/wiki/Switching_case_of_characters


Sanırım yok, ama istenen karakterleri küçük harf için "\ L &" ve büyük harf için "\ U &" kaçış dizisiyle değiştirerek @mangledorf'ın cevabında sezgisel olmayan bir ikame komutu var. Beni yakalayan şey &. \ L ve \ U mükemmel bir anlam ifade ediyor, ama neden &gerekli?
Braden Best

9

kullanım ggguG

gg: ilk satıra gider. gu: küçük harfe değiştir. G: son satıra gider.


Bunun Kalanidhi'nin cevabından farkı nedir?
MSeifert

Bunu 0'a getirmek için seçildi, bu bir önceki yanıtın kopyası olan bir cevap için yeterli bir puan. @MSeifert Olumsuz puanlar yanlış / zararlı çözümler için ayrılmalıdır
Titou

7

Genellikle Vu(veya VUbüyük harf için), Veylemin uygulanacağı tüm satırı zaten seçtiği için tüm satırı küçük harfe çevirmek için yeterlidir .

Tilda ( ~) tek tek harflerin büyüklüğünü değiştirerek deve veya benzeri bir harfle sonuçlanır.

Vim'in çeşitli durumlar için nasıl birçok farklı moda sahip olduğu ve bu modların düzgün bir şekilde nasıl düzenlendiği gerçekten harika.

Örneğin, v- gerçek görsel mod ve ilgili V- görsel çizgi ve Ctrl+ Q- görsel blok modları (blokları seçmenize izin veren, bazı diğer gelişmiş editörlerin genellikle Alttuşunu basılı tutarak ve metni seçerek sunduğu harika bir özellik ).


6

Unix lezzeti altında koşuyorsanız

:0,$!tr "[A-Z]" "[a-z]"

4
Köşeli ayraçlar gereksizdir ve bunları kaldırdığınızda, tırnak işaretleri de gerekli değildir. :%!tr A-Z a-z
ephemient

!Böylece bir dış kabuk komutu göstermektedir $ man tr(şekilde karşı :help tr) olduğunu gösterir triçindir translate.
Braden Best

Başka bir yol::%0,$!tr [:upper:] [:lower:]
albertovar

2

Benzer bir sorunum vardı ve kullanmak istedim ":%s/old/new/g", ancak iki komut kullandım:

:0
gu:$
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.