Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

地獄のVimトレーニング - motion.txtを理解する (前半戦)

$
0
0

Vimを使う上での最大の壁である「モード」の存在を理解するためのエントリです。勿論超苦手な部分で、今までも2度ほど断念した覚えがあります。しかし今ならきっとなんとかなるんじゃないかなと思っております。そもそもVim習得を頑張ろうという理由が、名著「実践Vim」の「思考のスピードで編集しよう」というコピーライトなので、その肝の部分はきっとここなんだろうなと…

トレーニング開始、とその前に

知り合いのVimmerにも言われたんだけど、とにかく「挿入モードでカーソルが動かせると思うな」と言われましたので、挿入モード中の定義を外しました。ついでにマウス操作も切ったのでもう逃げられません。さて、motion.txtを読んでいきましょう…一緒に見る方はお手持ちのVimで:h motion.txtをどうぞ。

バカにしないでくれる!?知ってるわよそのくらい!! - 1. 移動とオペレーター

「とりあえず覚えろ」系のチュートリアルで「ヤンクは:yy」とか「:ciwは便利」とかそれだけは覚えたけどそれの意味までちゃんと分かっていませんでした。この辺の意味をちゃんと捉えないと本当にうまくは使いこなせないだろうなぁと思いまして、使いそうなやつだけピックアップしないとダメかなぁー

キーオペレーション
c変更する
d削除する
yヤンクする
gu小文字にする
gU大文字にする
g~大文字/小文字を入れ替える
>インデントを上げる
<インデントを下げる

今はこれだけ分かってればいいかなぁ…必要なら調べればなんとか。
で、肝心な「オペレーションってなんぞや?」って話になるんだけど、「ビジュアルモードでは選択した範囲に、移動コマンドの接頭辞とした場合は移動元と移動先の間を選択範囲としてオペレーションを行う」コマンドとのこと。例えばカーソルより先を編集し直すのであれば、:c$とするわけだけど、これは"Change (C) entire line ($)"という感触で覚えてけばいいのかなって。つまり冒頭に出した:ciwも"Change inner word"ということで、ちょっと捉えやすくなってきたなぁと。

じゃあ先に覚えなくちゃならないじゃない! - 6. オブジェクト単位で選択

多分viにはないから後ろの方の項目になったと思うんだけど、オペレーションと対になるオブジェクト単位の選択を覚えないことにはお話にならないのでそちらを先に確認します。

外側まで選択内側まで選択 (inner-)
単語 (word)awiw
文節 (WORD)aWiW
文 (Sentence)asis
段落 (Paragraph)apip

この他に括弧関係もだいたい同じように出来るらしいので活用するときがあれば…マークダウンのリンクの時とかは便利そう。

そもそも単語の移動ってちゃんと覚えてるわけ? - 4. 単語単位の移動

うん、w,bくらいは知ってるけど…e?ge?ごめんちょっとまって今調べる…

whichwhatwherecommand
前の単語の最初までw
最後までe
文節の最初までW
最後までE
後ろの単語の最初までb
最後までge
文節の最初までB
最後までgE

まとめてみればあまり怖いこともないのかな、ってところです。

まだ見ぬ世界へ… - 5. オブジェクト単位で移動

で、これに気がついたときはちょっとシビれました。文/段落単位の移動なんてあったのね…

whatwherecommand
文の最初に(
最後に)
文節の最初に{
最後に}

うん、便利だと思うんだけど…文と文節の何がちゃうの?

…はい調べました。とりあえずこうなってるよってことだけ覚えておこうかと思います。

一旦休憩

正直、カーソルキー縛るのしんどいっす。その上で調べてることを実践してみて、分からなかったら更に調べて、改善できそうなら改善もして…ということをやってるわけで、相当時間かけてやってます。後半に続く。

ウオオオオオオオオアアアアアアアアアアアアアアアアア!!!!

Vimモーション譜
こういうのが欲しかったのよ!助かる!

編集中に覚えたこと

vim-surround必要だわこれ。

vimrc
Plug 'tpope/vim-surround'::" vim-surround" 上から順番に、l, L, 8, 9, ,(comma), .(period), *letg:surround_108="「\r」"letg:surround_76="『\r』"letg:surround_56="( \r )"letg:surround_57="(\r)"letg:surround_44="< \r >"letg:surround_46="<\r>"letg:surround_42="**\r**"

オペレーション以外で有能だったg絡みのコマンド

Vim の g で始まるコマンドというかキーマップの一覧
パクりに等しいレベルで1めっちゃ参考にしました、ありがとうございます。

コマンド概要
gv前回の選択範囲を再選択する
g&最後に実行した置換をすべての行で実行する
g<前回のコマンド出力を表示する
g<C-g>現在のカーソル位置を表示する
gaカーソル位置の文字のアスキーコードを表示する
g8UTF-8環境でカーソル位置の文字を16進数で表示する

  1. というよりパクってます。ノートとして書き写すこと、書き写す中でVimの操作を行うことに意義があるので必然的にパクりが起こるんです、すいません。 


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>