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

(`・ω・´)シャキーンはVimmerである。名前はまだ無い (Vim 未経験者向け)

$
0
0

どこで生れたかとんと見当がつかぬ

何でもVSCodeで卒論を書いていた事だけは記憶している。
(`・ω・´)シャキーンはネットで始めてVimmerというものを見た。

極める! vim / halt feits

しかしその当時は何という考もなかったから別段特別とも思わなかった。
ただ彼の動画に何だかフワフワした感じがあったばかりである。

このマウスと矢印キーによるカーソル操作でしばらくはよい心持に坐っておったが、しばらくすると非常な速力で操作し始めた。
マウスで動くのか矢印キーで動くのか分らないが無暗に眼が廻る。胸が悪くなる。
到底助からないと思っていると、どさりと音がして眼から火が出た。
それまでは記憶しているがあとは何の事やらいくら考え出そうとしても分らない。

ようやくの思いでVSCodeを這い出すと向うに大きなターミナルがある。
term.png

(`・ω・´)シャキーンはターミナルの前に坐ってどうしたらよかろうと考えて見た。別にこれという分別も出ない。
日が暮れかかる。腹が非常に減って来た。泣きたくても声が出ない。
仕方がない、何でもよいからエディタのある所まであるこうと決心をしてそろりそろりとターミナルを左りに廻り始めた。
どうも非常に苦しい。そこを我慢して

$ Vim

と打つとようやくの事で何となく人間臭い所へ出た。
vim.png

さてVimを起動したもののこれから先どうして善いか分らない

第一に逢ったのノーマルモードとHJKLキーによるカーソル操作である。
これはVSCodeのカーソル移動より一層乱暴な方で(`・ω・´)シャキーンを見るや否やいきなり頸筋をつかんで表へ抛り出した.
いやこれは駄目だと思ったから眼をねぶって運を天に任せていた。
しかしひもじいのと寒いのにはどうしても我慢が出来ん。
(`・ω・´)シャキーンは再びVimを起動した。
すると間もなくまた投げ出された。
(`・ω・´)シャキーンは投げ出されては這い上り、這い上っては投げ出され、何でも同じ事を四五遍繰り返したのを記憶している。
(`・ω・´)シャキーンが最後につまみ出されようとしたときに、Firefox拡張:VimVexenが騒々しい何だといいながら出て来た。
vimvixen.gif
VimVixenによって(`・ω・´)シャキーンは基本的なキー操作を獲得した.
かくして(`・ω・´)シャキーンはついにVimを自分の住家と極める事にしたのである。

本編

(`・ω・´)シャキーン ここからはVimのゆるふわ紹介記事だよ

Vimとは

(`・ω・´)シャキーン 端末上で動くエディタだよ.
(`・ω・´)シャキーン マウスなどの機能は基本的に使えないよ.

vim.png

(`・ω・´)シャキーン 起動画面でウガンダの恵まれない子供たちに援助ができる心やさしいエディタだよ.
(`・ω・´)シャキーン おや,こんなところにブラウザで操作できるVimがあるよ.

http://coolwanglu.github.io/vim.js/streamlinejs/vim.html

Vimの魅力

(`・ω・´)シャキーン 個人的にVimの一番の魅力はVimキーバインドが他のプログラムに輸出されていることなんだよね.
(`・ω・´)シャキーン キーボードだけで基本的な操作はできてしまうよ.

i3wm

(`・ω・´)シャキーン i3wnはVim風のキーバインドでウインドウ操作やプログラムの起動ができるよ.
i3wm.gif

ブラウザ系Vim拡張

(`・ω・´)シャキーン 今はFirefoxでtridactylを使っているよ
(`・ω・´)シャキーン tridactylは文字列の選択までできる優秀なやつだよ
vimvixen.gif

(`・ω・´)シャキーン 個人的はターミナルで動くのもすごくつよいよ.

Fzf

(`・ω・´)シャキーン Fzfパス名をあいまい検索できるインタラクティブフィルタだよ.
(`・ω・´)シャキーン タイピング数が95%くらい削減できてCUIがこわくなくなったよ.
fzf.gif

(`・ω・´)シャキーン ここからはvim拡張で派手なやつだよ

Window分割リサイズ

windowseparation.gif

EasyMotion

easymotion.gif

(`・ω・´)シャキーン Vimは特殊なエディタだから覚えることが多くて大変だよね.
(`・ω・´)シャキーン だから簡単かつ見栄えの良い部分だけ先に紹介したよ.

Vimでキーボード・ショートカットを効率的に表現する

CORE-01.jpg

(`・ω・´)シャキーン はじめに,人間がキーボードでホームポジションから手を離さずに入力できるキーはとても少ないんだ.
(`・ω・´)シャキーン 僕はこのキーボードを使ってるけどFとHキーに指をおいたまま入力ができるキーはこれくらいなんだ.
(`・ω・´)シャキーン だからVimではモードと呼ばれる状態遷移を用意して同じキー入力でもモードによって挙動を変化させるよ.
(`・ω・´)シャキーン モードはたくさんあるけど今回は下の2つを紹介するよ

  • ノーマルモード:ショートカットに特化した入力状態
  • インサートモード:メモ帳のように実際に文字を入力する状態

(`・ω・´)シャキーン Vimではノーマルモードがあるから装飾キーを押さずにショートカットを実現できるんだ.

(`・ω・´)シャキーン ここでは説明しきれないけどオペレータが必要になったらVimのドキュメントを見てほしい.

Vimでキーボード・ショートカットを効率的に表現する2

はじめてのVim 〜 Vimはいいぞ!ゴリラと学ぶVim講座(1)
Vimにおいてとても重要な機能は
・オペレーター
・モーション
・テキストオブジェクト
・リピート
と筆者は考えています。

(`・ω・´)シャキーン ゴリラさんの記事から引用したよ.
(`・ω・´)シャキーン ノーマルモードではこの主に4つの機能でVimはショートカットを効率的に表現できるよ.
(`・ω・´)シャキーン ここで説明することの大半は以下のVimドキュメントに詳しく書いてあるので必要になったらぜひ読んでほしい.

motion - Vim日本語ドキュメント

オペレータ

(`・ω・´)シャキーン オペレータは後述のモーションかテキストオブジェクトを伴って一つのコマンドになれるよ
(`・ω・´)シャキーン 以下にオペレータの一部を紹介するよ.
+ c : 変更
+ d : 削除
+ y : レジスタにヤンクする
(`・ω・´)シャキーン こんな感じに使うよ.
+ dw : 単語を削除
+ di" : ""の中身を削除
+ dgn : ハイライト先を削除

モーション

(`・ω・´)シャキーン モーションというのはカーソル移動を表現するショートカットだよ.
(`・ω・´)シャキーン Vimではカーソル移動をすごく大事にしていてたくさんの種類のモーションがあるんだ.
(`・ω・´)シャキーン 一部としてここでは僕が使っている下移動のモーションを載せるよ.
vertical_motions.gif
(`・ω・´)シャキーン 通常のエディタがキー1つで済ませてしまうところを僕は主に以下のモーションをマップして使い分けているよ.

  • 段落単位で移動: {, }
  • 一行単位で移動: gj,gk
  • 折りたたみへ移動: zj,zg
  • アルファベットでハイライトを表示してキー入力で移動(拡張:vimEasymotion): j,k

(`・ω・´)シャキーン ここでは説明しきれないけどモーションが必要になったらVimのドキュメントを見てほしい.

テキストオブジェクト

(`・ω・´)シャキーン テキストオブジェクト聞き慣れない言葉だね.
(`・ω・´)シャキーン テキストオブジェクトというのはテキストの選択を表現するショートカットなんだ.
(`・ω・´)シャキーン 主にオペレータの後に入力してテキストオブジェクトの範囲の文字列に対して操作を加えるよ.こんなふうにね.
単語を削除:diw -> d(オペレータ)iw(単語選択のテキストオブジェクト)
(`・ω・´)シャキーン これを見てほしい.
vimExpandRegion.gif
(`・ω・´)シャキーン これはvimExpandRegionという拡張機能のなんだけどテキストオブジェクトを可視化するのにちょうどいいから載せてみたよ.
(`・ω・´)シャキーン これはvを押すごとに以下のテキストオブジェクトの範囲を可視化しているよ

  • 単語選択: iw
  • '',"",(),{},[]で囲われた中身を選択(拡張機能) :isb
  • '',"",(),{},[]ごと選択(拡張機能) :asb
  • 行選択(拡張機能): il
  • インデント選択(拡張機能): ii

(`・ω・´)シャキーン モーションと同じようにテキストオブジェクトにもたくさんの種類があるのでひつようになったらVimのドキュメントを見てほしい.
(`・ω・´)シャキーン テキストオブジェクトは特殊な機能だけど使ったら無いと生きられなくなるよ.

リピート

(`・ω・´)シャキーン リピートは軽量なマクロだよ.
(`・ω・´)シャキーン Vimでは自動的に一連のショートカット(最後の変更)を記録してくれるんだ.
(`・ω・´)シャキーン だから <.>キーを入力するだけで前の操作を繰り返してくれるんだ.

一旦終了

(`・ω・´)シャキーン ここから先はVimにIDE的な機能を提供してくれるLanguage Server ProtcolとかDebug Adapter Protocolなんかを書きたいけど後にするよ.


Viewing all articles
Browse latest Browse all 5657

Trending Articles



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