vimを触ってみようの会 

3月 23日 @ 21:00 ~ 22:00 主催者: mina

資料

音声

https://drive.google.com/open?id=1Ge4CPEKuJVwy_o5xdZEsV7FTRzMi6jyu 

講演

注意:ハンズオンやマサカリ投げ形式のため、資料あったが非公開形式。

Vimってなんぞ

  • Linux系でよく使われるエディタ。
  • 昔からviもあったが、今ではvimがviモードで動いていることが多い。

Windows

  • KaoriYaVimというvimがおすすめ
  • CUIエディタ初めてな人でも使いやすいように、設定ファイルが用意されている
  • webから普通に入手可能

MacとLinux

  • 標準で入っているので、それで。

基本コマンド

  • カーソルの移動
コマンド動作
h←移動
j↓移動
k↑移動
l→移動
  • ノーマルモードからインサートモードへ変更する。
コマンド動作
iインサートモードへ(今カーソルがいる場所の前から入力できる)
aインサートモードへ(今カーソルがいる場所の後から入力できる)
oインサートモードへ(今カーソルがいる場所から、改行した場所から入力)
O(大文字のo)インサートモードへ(今カーソルがいる場所の行を次の行に送ってから、その場所で入力)
  • インサートモードからノーマルモードへ戻る
コマンド動作
ctrl+[ or Escノーマルモードへ
ctrlとキーの組み合わせ(例えば[は、<c-[>と書くことが多い。
  • ノーマルモードからのファイル操作系
コマンド動作
:e[filename] [filename]というファイルを開く
:w開いているファイルを保存
:q終了
/[string][string]を検索(nで次の単語に飛ぶ)
頭の:は何らかの略やコメント行ではなく、正式なコマンド。:(コロン)を入力する。
  • 確認しながら単語の置換をする
コマンド動作
:s/A/B/gc文字列AをBに置換

うまく使えるようになるコツ

  • 効率が落ちても積極的にコマンドを使っていく。
  • 基本コマンドをマスターする。
  • すると新しく学ぶときにするっと馴染むかもしれない
  • 意味なくてもノーマルモードとインサートモードの遷移をたくさんしてみる。
  • あとは実践あるのみ。たくさん使おう。

そのほか、基本とはいえないコマンドの使い方

  • ノーマルモードで、数字を増減する
    数字にカーソルを合わせ、
    • ctrl+aで1ずつインクリメント
    • ctrl+xで1ずつデクリメント ができる。
  • カーソルを合わせている数字を"100増やしたい"という場合は、
    1.まず増減させたい数字にカーソルを合わせる。
    2.ノーマルモードのまま、100を入力する(画面には変化がおきない)
    3.ctrl+aを押す。
    そうすると、その数字を+100する形(もとが1なら101)になる。
    デクリメントにも有効(もとが1なら-99になる)。

参加者の声

(Discord 上の発言で、なにか取り上げたいものがありましたら記載お願いします)

  • macでviを叩くと、vimではなくviが立ち上がります。
  • Undoは u。RedoがCTRL+R。
  • :earlier 10s とか打つと10秒前の状態とかに戻れたはず。
  • :s/A/B/gc のAの部分を自分で入力するのではなく ヤンクバッファなどから持ってこれたら嬉しいな
    • コマンドモード時にCtrl+R→"(ダブルクォート)でヤンクバッファから取り出せる。
  • vim で :h <コマンド>でヘルプ検索
    :h find
:fin\[d\]\[!\] \[++opt\] \[+cmd\] {file} オプション 'path' 内のディレクトリから {file} を探し、 それを |:edit| する。 {Vi にはない} {Vimが |+file\_in\_path| 機能付きでコンパ イルされたときのみ有効}
  • Macだと、vi --versionと打つと、VIM -Vi Improvedと出てきます。なので、vimなのかな?と。
  • 検索の時、\c 付け足すと、大文字小文字関係無くなるのは覚えておくと幸せかも知れない。
  • :rは、コピーなんで開くとは別物のはず
  • :tabe %とか便利ですね

Q & A

(Discord 上に質問が流れたらピックアップお願いします)

  • Q.画面分割後の画面移動方法を知りたい
    • A.ctrl+wの後に h j k l でそれぞれ対応した方向に移動する。
  • Q.画面分割後に終了する方法が分からないです
    • A.閉じたい分割位置で:qとするとその分割窓を閉じます。