Як перетворити весь текст у малі регістри Vim


211

Як перетворити весь текст у Vim у малі регістри? Чи можливо це навіть?


У нас дуже багато html-сторінок із усіма символами у верхньому регістрі. Це заощаджує мені час на повторне введення тексту в малі регістри.
ksuralta

2
Перш ніж питання було відредаговане, було як перетворити весь текст у vim у маленькі літери. Очевидно, є приклад використання для перетворення тексту в малі регістри.
лимонад

6
На веб-сайті VIM є відповідь: vim.wikia.com/wiki/Switching_case_of_characters Спасибі
fnds

Відповіді:


122
  1. Якщо ви дійсно маєте на увазі маленькі літери , то ні, це неможливо - так само, як не можна перетворити текст у жирний або курсивний текст у будь-якому текстовому редакторі (на відміну від текстового редактора ). Якщо ви хочете перетворити текст у малі регістри, створіть візуальний блок і натисніть u(або Uдля перетворення у великі регістри ). Tilde ( ~) в командному режимі повертає регістр символу під курсором.

  2. Якщо ви хочете побачити увесь текст у Vim малими літерами, ви можете переглянути guifontваріант або ввести, :set guifont=*чи ваш аромат Vim підтримує інструмент вибору шрифту GUI.


33
Я думаю, що варто згадати, що вам не обов’язково створювати візуальний блок для малого тексту тексту. guuзменшить рядки рядка та gu[motion]зменшить малі значення цього руху. Так само gUUі gU[motion]працюйте так само, лише для великих літер.
Захарі Мюррей

1
Насправді, для більшості листів можливі також маленькі підписи, використовуючи ᴀʙcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏz.
Герріт

1
Це просто злом. Вони не призначені для використання як звичайні маленькі літери і не підтримуються шрифтами. (На моїй настільній машині F відображається дивним чином, на моєму телефоні він взагалі не відображається, щоб навести приклад.) Як би там не було, цікава частина Unicode, дякую!
Зуль

2
Ця відповідь невірна. user80168 має правильну відповідь.
Уейн

400

Я припускаю, що ви хочете з малого тексту. Рішення досить просте:

ggVGu

Пояснення:

  1. gg - переходить до першого рядка тексту
  2. V - вмикає візуальний вибір, у лінійному режимі
  3. G - переходить до кінця файлу (на даний момент у вас вибрано весь текст)
  4. u - виділена область у малому регістрі

88
або ggguG, якщо ви хочете зробити це без візуального вибору. : help gu
DrAl

18
використовуйте капітал Uдля великих літер (наприклад ggVGU)
Натан Уоллес

42

Схожий на рішення Мангледорфа, але коротший і нехитрий

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


3
:%s/.*/\L&Було б достатньо ( gпрапор не потрібен, оскільки .*виділяється весь рядок)
Гордон Густафсон,

1
Як би :%s/./\L&/g, оскільки / g / позначає операцію, яка є глобальною для лінії. Що мене, однак, це &. Чому це потрібно?
Бреден Кращий

1
&стоїть тут what was matched by the pattern, тому його можна зрозуміти так: замінити .*на \Lowercase(what was matched by the pattern). Зауважте, що узгодження у .глобальному масштабі відбувається повільніше, ніж збіг.*
Camusensei

39

використовувати цей параметр режиму команд

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

Багато способів зняти шкіру з котом ... ось як я нещодавно опублікував :


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

Аналогічно для верхнього регістру:


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

Я вважаю за краще цей спосіб, тому що я :%s/[pattern]/replace/gвесь час використовую цю конструкцію ( ), щоб це було природніше.


Я думаю, що в останньому прикладі є Typo («аналогічно для верхнього регістру») - регулярний вираз повинен змінитись на [az], а не на «[AZ]».
monojohnny

1
:%s/./\U&/gтакож працює. Виявляється, вона ігнорує числа та символи, що не містять алфавіту. Що мене отримує - це &. Чому саме \ U (або \ L) недостатньо? Чи можемо ми отримати пояснення для цього?
Бреден Кращий

2
&є резервним для відповідного рядка. Таким чином, з \U&великої літери використовується відповідна рядок, щоб вона могла бути використана для заміни.
Алек Джейкобсон

22
  • Перемістіть випадок "HellO" на "hELLo" з g ~, а потім рухом.
  • Пропис "HellO" до "HELLO" з gU, тоді рух.
  • Мале "HellO" до "привіт" з гу, тоді рух.

Для прикладів та додаткової інформації читайте це: http://vim.wikia.com/wiki/Switching_case_of_characters


Я думаю, що немає, але для цього у відповіді @mangledorf замість потрібних символів замість потрібних символів на малі і "\ U &" на малі регістри є "менш інтуїтивно зрозуміла команда підстановки". Що мене отримує - це &. \ L і \ U мають ідеальний сенс, але навіщо це &потрібно?
Бреден Кращий

9

використання ggguG

gg: переходить до першого рядка. gu: змінити на малі. Г: переходить до останнього рядка.


Чим це відрізняється від відповіді Каланідхі?
MSeifert

Запропоновано довести це до 0, що є достатньою оцінкою для відповіді, що є копією попереднього. @MSeifert Негативні бали слід зарезервувати для неправильних / шкідливих рішень
Titou

7

Зазвичай Vu(або VUу верхньому регістрі) достатньо, щоб перетворити всю лінійку в малі регістри, оскільки Vвже вибрано всю лінію для застосування дії проти.

Тільда ​​( ~) змінює регістр окремої букви , внаслідок чого йде справа з верблюдом або подібне.

Це дійсно чудово, як Vim має багато різних режимів для вирішення різних випадків і як ці режими чітко організовані.

Наприклад, v- справжній візуальний режим і пов'язаний з ним Vвізуальний рядок та Ctrl+ Q- режими візуального блоку (що дозволяє вибирати блоки, чудова функція, яку зазвичай пропонують деякі інші розширені редактори, утримуючи Altклавішу та підбираючи текст).


6

Якщо ви працюєте під ароматом Unix

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

4
Квадратні дужки зайві, і коли ви виймете їх, лапки також не потрібні. :%!tr A-Z a-z
ефемія

!Показує зовнішню команду оболонки, так що $ man tr(на відміну від :help tr) , показує , що trдля translate.
Бреден Кращий

Так само інакше::%0,$!tr [:upper:] [:lower:]
Альбертовар

2

У мене була подібна проблема, яку я хотів використати ":%s/old/new/g", але в кінцевому рахунку використовував дві команди:

:0
gu:$
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.