Vimですべてのテキストを小文字に変換する方法


211

Vimのすべてのテキストをどのように小文字に変換しますか?可能ですか?


すべての文字が大文字のhtmlページがたくさんあります。これにより、すべてを小文字で再入力する時間を節約できます。
ksuralta 2009

2
質問が編集される前は、vim内のすべてのテキストをスモールキャップに変換する方法でした。明らかに、テキストを小文字に変換するユースケースがあります。
レモナド2009

6
VIM Webサイトが答えを持っています:vim.wikia.com/wiki/Switching_case_of_charactersありがとう。
12

回答:


122
  1. スモールキャップを本当に意味しているのであれば、いいえ、それは不可能です。テキストエディターでテキストを太字または斜体に変換することができないのと同じですワードプロセッサーではありません)。テキストを小文字に変換する場合は、ビジュアルブロックを作成してキーを押しますu(またはU大文字に変換します)。~コマンドモードのチルダ()は、カーソルの下の文字の大文字と小文字を逆にします。

  2. Vimのすべてのテキストをスモールキャップで表示したい場合は、guifontオプションを:set guifont=*確認するか、VimフレーバーがGUIフォントチューザーをサポートしているかどうかを入力します。


33
テキストのブロックを小文字にするために必ずしも視覚的なブロックを作成する必要はないことは言及する価値があると思います。guu行を小文字にし、gu[motion]そのモーションに相当するテキストを小文字にします。同様に、gUUそしてgU[motion]大文字のみのために、同じように動作します。
Zachary Murray、

1
実際、smallcᴅᴇꜰɢʜıᴊᴋʟᴍɴoᴘʀsᴛᴜvwxʏzを使用すると、ほとんどの文字で小文字も使用できます。
gerrit

1
しかし、それは単なるハックです。これらは通常のスモールキャップとして使用するためのものではなく、フォントによっても十分にサポートされていません。(例として、私のデスクトップマシンではFが奇妙にレンダリングされますが、私の電話ではまったくレンダリングされません。)とにかく、Unicodeの興味深い部分に感謝します。
zoul 2015

2
この答えは間違っています。user80168が正解です。
ウェインワークマン

400

あなたはテキストを小文字にしたいと思います。解決策は非常に簡単です:

ggVGu

説明:

  1. gg -テキストの最初の行に移動します
  2. V -ラインモードでビジュアル選択をオンにします
  3. G -ファイルの終わりに移動します(テキスト全体が選択された時点)
  4. u -小文字の選択領域

88
視覚的に選択せずに実行する場合は、ggguG。:help gu
DrAl 2009

18
U大文字に大文字を使用(例:ggVGU
Nathan Wallace

42

マングルドルフの解決策に似ていますが、より短くて素人に優しい

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


3
:%s/.*/\L&十分です(行全体を選択するgのでフラグは必要ありません.*
Gordon Gustafson '28

1
同じように:%s/./\L&/g、ラインのグローバルある/ G /表す動作以来。しかし、私を得るのはです&。なぜそれが必要なのですか?
Braden Best

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)を常に使用しているので、より自然になっているので、この方法を好みます。


最後の例には誤植があると思います(「大文字の場合も同様」)-正規表現は '[AZ]'ではなく[az]に変更する必要があります。
monojohnny 2013年

1
:%s/./\U&/gも動作します。数字とアルファベット以外の文字は無視されます。私を得るのはです&。\ U(または\ L)だけでは十分ではないのはなぜですか?その説明はありますか?
Braden Best

2
&一致した文字列の代用です。その\U&ため、置換に使用できるように、一致した文字列を大文字にします。
Alec Jacobson

22
  • ケース "HellO"を "hELLo"にg〜で切り替えます。
  • 大文字の "HellO"から "HELLO"をgUで移動します。
  • 小文字の「HellO」から「こんにちは」へのguとその後の動き。

例と詳細については、こちらをご覧ください:http : //vim.wikia.com/wiki/Switching_case_of_characters


私はそうではないと思いますが、@ mangledorfの回答には、直感的ではない置換コマンドがあり、希望する文字をエスケープシーケンス "\ L&"で小文字に、 "\ U&"で大文字に置き換えています。私を得るのはです&。\ Lと\ Uは完全に理にかなっていますが、なぜ&必要なのですか?
Braden Best

9

使用する ggguG

gg:最初の行に移動します。 gu:小文字に変更します。 G:最後の行に移動します。


それはカラニディの答えとどう違うのですか?
MSeifert 2017年

これを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
ephemient 2009

!したがって、外部のシェルコマンドを示す$ man tr(とは対照的に、:help trそれは明らかに)trためですtranslate
Braden Best

:%0,$!tr [:upper:] [:lower:]
正反対

2

同様の問題があり、を使用したかったの":%s/old/new/g"ですが、最終的に2つのコマンドが使用されました。

:0
gu:$
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.