Cách chuyển đổi tất cả văn bản thành chữ thường trong Vim


211

Làm thế nào để bạn chuyển đổi tất cả văn bản trong Vim sang chữ thường? Nó thậm chí có thể?


Chúng tôi có rất nhiều trang html với tất cả các ký tự in hoa. Điều này giúp tôi tiết kiệm thời gian gõ lại mọi thứ bằng chữ thường.
ksuralta

2
Trước khi câu hỏi được chỉnh sửa, đó là cách chuyển đổi tất cả văn bản trong vim sang chữ hoa nhỏ. Rõ ràng, có một trường hợp sử dụng để chuyển đổi văn bản thành chữ thường.
Lemonad

6
Trang web VIM có câu trả lời: vim.wikia.com/wiki/Switching_case_of_char character Cảm ơn.
fnds

Câu trả lời:


122
  1. Nếu bạn thực sự có nghĩa là chữ hoa nhỏ , thì không, điều đó là không thể - cũng như không thể chuyển đổi văn bản thành đậm hoặc in nghiêng trong bất kỳ trình soạn thảo văn bản nào (trái ngược với trình xử lý văn bản ). Nếu bạn muốn chuyển đổi văn bản thành chữ thường, hãy tạo một khối trực quan và nhấn u(hoặc Uđể chuyển đổi thành chữ hoa). Tilde ( ~) trong chế độ lệnh đảo ngược trường hợp của ký tự dưới con trỏ.

  2. Nếu bạn muốn xem tất cả văn bản trong Vim bằng chữ hoa nhỏ, bạn có thể muốn xem guifonttùy chọn hoặc nhập :set guifont=*nếu hương vị Vim của bạn hỗ trợ trình chọn phông chữ GUI.


33
Tôi nghĩ điều đáng nói là bạn không nhất thiết phải tạo một khối trực quan để viết thường một khối văn bản. guusẽ viết thường một dòng và gu[motion]sẽ viết thường giá trị văn bản của chuyển động đó. Tương tự như vậy, gUUgU[motion]làm việc theo cách tương tự, chỉ cho chữ hoa.
Zachary Murray

1
Trên thực tế, smallcaps cũng có thể cho hầu hết các chữ cái, sử dụng ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz.
gerrit

1
Đó chỉ là một hack, mặc dù. Chúng không có nghĩa là được sử dụng như các chữ hoa nhỏ thông thường và không được hỗ trợ tốt bởi các phông chữ. (Trên máy tính để bàn của tôi, F hiển thị một cách kỳ lạ, trên điện thoại của tôi, nó hoàn toàn không hiển thị, để đưa ra một ví dụ.) Dù sao, phần thú vị của Unicode, cảm ơn!
zoul

2
Câu trả lời này không chính xác. user80168 có câu trả lời đúng.
Wayne

400

Tôi giả sử bạn muốn viết thường văn bản. Giải pháp khá đơn giản:

ggVGu

Giải trình:

  1. gg - đi đến dòng văn bản đầu tiên
  2. V - bật lựa chọn trực quan, ở chế độ dòng
  3. G - đi đến cuối tệp (tại thời điểm bạn có toàn bộ văn bản được chọn)
  4. u - vùng chữ thường được chọn

88
hoặc ggguG nếu bạn muốn làm điều đó mà không cần lựa chọn trực quan. : trợ giúp gu
DrAl

18
sử dụng vốn Ucho chữ hoa (ví dụ ggVGU)
Nathan Wallace

42

Tương tự như giải pháp của mangledorf, nhưng ngắn hơn và thân thiện với giáo dân

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


3
:%s/.*/\L&sẽ đủ (không cần gcờ kể từ khi .*chọn toàn bộ dòng)
Gordon Gustafson

1
Như vậy :%s/./\L&/g, vì / g / biểu thị một hoạt động mang tính toàn cầu cho dòng. Những gì có được tôi, mặc dù, là &. Tại sao điều đó là cần thiết?
Braden hay nhất

1
&viết tắt của từ này what was matched by the pattern, vì vậy nó có thể được hiểu như sau: thay thế .*bằng \Lowercase(what was matched by the pattern). Lưu ý rằng kết hợp trên .toàn cầu chậm hơn so với kết hợp.*
Camusensei

39

sử dụng tùy chọn chế độ lệnh này

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

Nhiều cách để nuôi mèo ... đây là cách tôi vừa đăng :


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

Tương tự như vậy đối với chữ hoa:


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

Tôi thích cách này vì tôi luôn sử dụng cấu trúc này ( :%s/[pattern]/replace/g) để nó tự nhiên hơn.


Tôi nghĩ rằng có một Typo trong ví dụ cuối cùng ('tương tự cho chữ hoa') - biểu thức chính thức nên thay đổi thành [az] thay vì '[AZ]'.
monojohnny

1
:%s/./\U&/gcũng hoạt động. Hóa ra nó bỏ qua các con số và các ký tự không phải là bảng chữ cái. Những gì tôi nhận được là &. Tại sao không đủ \ U (hoặc \ L)? Chúng ta có thể có được một lời giải thích cho điều đó?
Braden hay nhất

2
&là một thay thế cho chuỗi phù hợp. Vì vậy, \U&viết hoa chuỗi phù hợp để nó có thể được sử dụng để thay thế.
Alec Jacobson

22
  • Chuyển trường hợp "HellO" thành "hELLo" bằng g ~ sau đó chuyển động.
  • Uppercase "HellO" thành "HELLO" với gU sau đó là một phong trào.
  • Chữ thường "HellO" thành "xin chào" với gu sau đó là một chuyển động.

Để biết ví dụ và biết thêm thông tin, vui lòng đọc phần này: http://vim.wikia.com/wiki/Switching_case_of_char character


Tôi đoán là không, nhưng có một lệnh thay thế ít trực quan hơn cho câu trả lời của @mangledorf bằng cách thay thế các ký tự mong muốn bằng chuỗi thoát "\ L &" cho chữ thường và "\ U &" cho chữ hoa. Những gì tôi nhận được là &. \ L và \ U có ý nghĩa hoàn hảo, nhưng tại sao lại &cần thiết?
Braden hay nhất

9

sử dụng ggguG

gg: đi đến dòng đầu tiên. gu: đổi thành chữ thường. G: đi đến dòng cuối cùng.


Điều đó khác với câu trả lời của Kalanidhi như thế nào?
MSeifert

Được nâng cấp để đưa điểm này về 0, đây là điểm số thích hợp cho câu trả lời là bản sao của câu trả lời trước đó. @MSeifert Điểm số âm nên được dành riêng cho các giải pháp sai / có hại
Titou

7

Thông thường Vu(hoặc VUcho chữ hoa) là đủ để biến toàn bộ dòng thành chữ thường vì Vđã chọn toàn bộ dòng để áp dụng hành động chống lại.

Tilda ( ~) thay đổi trường hợp của chữ cái riêng lẻ , dẫn đến trường hợp lạc đà hoặc tương tự.

Thật tuyệt vời khi Vim có nhiều chế độ khác nhau để đối phó với các dịp khác nhau và cách các chế độ đó được sắp xếp gọn gàng.

Ví dụ: v- chế độ hình ảnh thực và các chế độ khối trực quan liên quan VCtrl+ Q- (cho phép bạn chọn các khối, một tính năng tuyệt vời mà một số biên tập viên nâng cao khác cũng thường cung cấp bằng cách giữ Altphím và chọn văn bản).


6

Nếu bạn đang chạy theo hương vị của Unix

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

4
Dấu ngoặc vuông là không cần thiết và một khi bạn xóa chúng, dấu ngoặc kép cũng không cần thiết. :%!tr A-Z a-z
ephemient

!chỉ ra một lệnh shell bên ngoài, vì vậy $ man tr(trái ngược với :help tr) cho thấy đó trlà cho translate.
Braden hay nhất

Chỉ cách khác::%0,$!tr [:upper:] [:lower:]
albertovar

2

Tôi đã có một vấn đề tương tự, và tôi muốn sử dụng ":%s/old/new/g", nhưng cuối cùng đã sử dụng hai lệnh:

:0
gu:$
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.