Cara mengonversi semua teks menjadi huruf kecil di Vim

211

Bagaimana Anda mengonversi semua teks dalam Vim menjadi huruf kecil? Apakah itu mungkin?

ksuralta
sumber
Kami memiliki banyak halaman html dengan semua karakter dalam huruf besar. Ini menghemat waktu saya mengetik ulang semuanya dalam huruf kecil.
ksuralta
2
Sebelum pertanyaan diedit, itu adalah bagaimana mengkonversi semua teks dalam vim menjadi huruf kecil. Jelas, ada kasus penggunaan untuk mengubah teks menjadi huruf kecil.
lemonad
6
Situs web VIM memiliki jawabannya: vim.wikia.com/wiki/Switching_case_of_characters Terima kasih.
fnds

Jawaban:

122
  1. Jika Anda benar-benar bermaksud huruf kecil , maka tidak, itu tidak mungkin - seperti halnya tidak mungkin untuk mengubah teks menjadi tebal atau miring dalam editor teks apa pun (sebagai lawan pengolah kata ). Jika Anda ingin mengonversi teks menjadi huruf kecil, buat blok visual dan tekan u(atau Uuntuk mengonversi menjadi huruf besar). Tilde ( ~) dalam mode perintah membalikkan huruf di bawah kursor.

  2. Jika Anda ingin melihat semua teks dalam Vim dalam huruf kecil, Anda mungkin ingin melihat guifontopsi, atau mengetik :set guifont=*jika rasa Vim Anda mendukung pemilih font GUI.

zoul
sumber
33
Saya pikir perlu disebutkan bahwa Anda tidak harus membuat blok visual untuk mengurangi teks. guuakan mengurangi satu baris, dan gu[motion]akan mengurangi nilai teks dari gerak itu. Demikian juga, gUUdan gU[motion]bekerja dengan cara yang sama, hanya untuk huruf besar.
Zachary Murray
1
Sebenarnya, smallcaps juga memungkinkan untuk sebagian besar surat, menggunakan ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz.
gerrit
1
Tapi itu hanya retasan. Ini tidak dimaksudkan untuk digunakan sebagai huruf kecil biasa dan tidak didukung oleh font. (Pada mesin desktop saya, F membuat aneh, di ponsel saya itu tidak memberikan sama sekali, untuk memberikan contoh.) Bagaimanapun, bagian yang menarik dari Unicode, terima kasih!
zoul
2
Jawaban ini salah. user80168 memiliki jawaban yang benar.
Wayne Workman
401

Saya menganggap Anda ingin menggunakan huruf kecil teks. Solusinya cukup sederhana:

ggVGu

Penjelasan:

  1. gg - pergi ke baris teks pertama
  2. V - Mengaktifkan pemilihan Visual, dalam mode line
  3. G - pergi ke akhir file (saat ini Anda telah memilih seluruh teks)
  4. u - area kecil yang dipilih
Dave Jarvis
sumber
88
atau ggguG jika Anda ingin melakukannya tanpa pemilihan visual. : help gu
DrAl
18
gunakan modal Uuntuk huruf besar (mis. ggVGU)
Nathan Wallace
42

Mirip dengan solusi mangledorf, tetapi lebih pendek dan ramah orang awam

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

tarkeshwar
sumber
3
:%s/.*/\L&akan cukup (tidak perlu gbendera karena .*memilih seluruh baris)
Gordon Gustafson
1
Seperti akan :%s/./\L&/g, karena / g / menunjukkan operasi yang bersifat global untuk saluran. Apa yang membuat saya, adalah &. Mengapa itu perlu?
Braden Best
1
&berdiri di sini untuk what was matched by the pattern, sehingga dapat dipahami sebagai berikut: ganti .*dengan \Lowercase(what was matched by the pattern). Perhatikan bahwa pencocokan pada .global lebih lambat daripada pencocokan.*
Camusensei
39

gunakan opsi mode perintah ini

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.
Kalanidhi
sumber
27

Banyak cara menguliti kucing ... inilah cara yang baru saja saya posting :


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

Demikian juga untuk huruf besar:


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

Saya lebih suka cara ini karena saya menggunakan konstruk ini ( :%s/[pattern]/replace/g) sepanjang waktu sehingga lebih alami.

Alec Jacobson
sumber
Saya pikir ada kesalahan ketik pada contoh terakhir ('demikian juga untuk huruf besar') - regex harus berubah menjadi [az] daripada '[AZ]'.
monojohnny
1
:%s/./\U&/gjuga berfungsi. Ternyata itu mengabaikan angka dan karakter non-alfabet. Apa yang membuat saya adalah &. Mengapa \ U (atau \ L) dengan sendirinya tidak cukup? Bisakah kita mendapatkan penjelasan untuk itu?
Braden Best
2
&adalah stand-in untuk string yang cocok. Jadi \U&kapitalisasi string yang cocok sehingga dapat digunakan untuk penggantian.
Alec Jacobson
22
  • Ganti huruf "HellO" ke "HELLO" dengan g ~ lalu sebuah gerakan.
  • Huruf besar "HellO" menjadi "HELLO" dengan gU lalu gerakan.
  • Huruf kecil "HellO" menjadi "halo" dengan gu lalu gerakan.

Untuk contoh dan info lebih lanjut silakan baca ini: http://vim.wikia.com/wiki/Switching_case_of_characters

Adolfo Abegg
sumber
Saya kira tidak ada, tetapi ada perintah substitusi kurang intuitif untuk itu dalam jawaban @mangledorf dengan mengganti karakter yang diinginkan dengan urutan melarikan diri "\ L &" untuk huruf kecil, dan "\ U &" untuk huruf besar. Apa yang membuat saya adalah &. \ L dan \ U masuk akal, tetapi mengapa itu &perlu?
Braden Best
9

menggunakan ggguG

gg: pergi ke baris pertama. gu: ubah menjadi huruf kecil. G: pergi ke baris terakhir.

Ziyadsk
sumber
Bagaimana hal itu berbeda dari jawaban Kalanidhi?
MSeifert
Terpilih untuk membawa ini ke 0, yang merupakan skor yang memadai untuk jawaban yang merupakan salinan dari jawaban sebelumnya. @MSeifert Skor negatif harus disediakan untuk solusi yang salah / berbahaya
Titou
7

Biasanya Vu(atau VUuntuk huruf besar) sudah cukup untuk mengubah seluruh baris menjadi huruf kecilV sudah memilih seluruh baris untuk menerapkan tindakan melawan.

Tilda ( ~) mengubah kasus huruf individual , menghasilkan kasing unta atau serupa.

Sungguh luar biasa bagaimana Vim memiliki banyak mode yang berbeda untuk menangani berbagai kesempatan dan bagaimana mode-mode itu disusun dengan rapi.

Sebagai contoh, v- mode visual yang sebenarnya, dan yang terkait V- garis visual, dan Ctrl+ Q- mode blok visual (yang memungkinkan Anda untuk memilih blok, fitur hebat yang juga ditawarkan oleh beberapa editor tingkat lanjut lainnya biasanya dengan menahan Alttombol dan memilih teks).


sumber
6

Jika Anda menjalankan di bawah rasa Unix

:0,$!tr "[A-Z]" "[a-z]"
ojblass
sumber
4
Kurung kotak berlebihan, dan setelah Anda menghapusnya, tanda kutip tidak diperlukan juga. :%!tr A-Z a-z
ephemient
The !menunjukkan perintah eksternal shell, sehingga $ man tr(sebagai lawan :help tr) mengungkapkan bahwa trbagi translate.
Braden Best
Dengan cara lain::%0,$!tr [:upper:] [:lower:]
albertovar
2

Saya memiliki masalah yang sama, dan saya ingin menggunakannya ":%s/old/new/g", tetapi akhirnya menggunakan dua perintah:

:0
gu:$
shaolinux
sumber