Vimのすべてのテキストをどのように小文字に変換しますか?可能ですか?
Vimのすべてのテキストをどのように小文字に変換しますか?可能ですか?
回答:
guu
行を小文字にし、gu[motion]
そのモーションに相当するテキストを小文字にします。同様に、gUU
そしてgU[motion]
大文字のみのために、同じように動作します。
あなたはテキストを小文字にしたいと思います。解決策は非常に簡単です:
ggVGu
説明:
U
大文字に大文字を使用(例:ggVGU
)
マングルドルフの解決策に似ていますが、より短くて素人に優しい
:%s/.*/\L&/g
:%s/.*/\L&
十分です(行全体を選択するg
のでフラグは必要ありません.*
)
:%s/./\L&/g
、ラインのグローバルある/ G /表す動作以来。しかし、私を得るのはです&
。なぜそれが必要なのですか?
&
ここの略what was matched by the pattern
置き換える:次のように理解できるように、.*
で\Lowercase(what was matched by the pattern)
。.
グローバルでのマッチングは、マッチングよりも遅いことに注意してください.*
猫の皮をむく方法はたくさんあります...これが私が投稿したばかりの方法です:
:%s/[A-Z]/\L&/g
同様に大文字の場合:
:%s/[a-z]/\U&/g
このコンストラクト(:%s/[pattern]/replace/g
)を常に使用しているので、より自然になっているので、この方法を好みます。
:%s/./\U&/g
も動作します。数字とアルファベット以外の文字は無視されます。私を得るのはです&
。\ U(または\ L)だけでは十分ではないのはなぜですか?その説明はありますか?
&
一致した文字列の代用です。その\U&
ため、置換に使用できるように、一致した文字列を大文字にします。
例と詳細については、こちらをご覧ください:http : //vim.wikia.com/wiki/Switching_case_of_characters
&
。\ Lと\ Uは完全に理にかなっていますが、なぜ&
必要なのですか?
使用する ggguG
gg:最初の行に移動します。 gu:小文字に変更します。 G:最後の行に移動します。
通常Vu(またはVU大文字の場合)は、行全体を小文字にするには十分ですV、アクションを適用する行全体すでに選択しているため、行全体です。
ティルダ(~)は個々の文字の大文字と小文字を変更しますキャメルケースまたは同様のになります。
Vimがさまざまな状況に対処するための多くのさまざまなモードを備えていること、およびそれらのモードが適切に整理されていることは本当に素晴らしいことです。
たとえば、v-真のビジュアルモードと関連するV-ビジュアルライン、Ctrl+ Q-ビジュアルブロックモード(ブロックを選択できる機能、他の一部の高度なエディターも、Altキーを押しながらテキストを選択することで通常提供される優れた機能)。
Unixのフレーバーで実行している場合
:0,$!tr "[A-Z]" "[a-z]"
:%!tr A-Z a-z
!
したがって、外部のシェルコマンドを示す$ man tr
(とは対照的に、:help tr
それは明らかに)tr
ためですtranslate
。
:%0,$!tr [:upper:] [:lower:]