SIMPLE

[neovim] Z世代だけどvim触ってみた

リッチなIDEにスポイルされてきたZ世代が、vim教団に入信する回。vimが気になるけど怖くて手が出せない!といった方に読んでいただければ幸いです。

こんにちは。

皆さんは使うツールにこだわる派ですか?それとも「弘法は筆を選ばず」派ですか?
僕は道具選びという行為そのものが趣味といっていいほど、こだわってしまいます。

そんな中で、vimを試す機運が高まってきました。
ずっと食指が伸びなかったけど、触ってみたら想像以上に面白かったので体験を記すことにしました。

本筋に入る前に、簡単な来歴から。

  • 小学生の時分にExcelを弄り倒し、VBAなるものを発見する。
  • 物足りなくなりVisual C# Expressを入れてC#沼にはまる。
  • 時々linuxをsshで操作するも、nano以外には触らず。
  • VSCodeが出てからはずっと頼り切りに。

見ての通りリッチなIDEに存分に甘やかされてきました。

使う前のイメージ

  • 強力なショートカットキーがたくさんある。が、そのぶん敷居が高い。
    • 使いこなしてる人はかっこいい。
  • 熱狂的なファンがいる。emacs派と常に交戦状態。
  • 1年前期のC言語の講義でいきなり使わされた苦い思い出(どうやって脱出するのか毎回忘れる)

使った後の感想

  • プログラマなら誰でも使える!
  • 想像より10倍は高機能
    • ずっと古代遺物だと思っててすみません
  • 気持ちいい……
  • 後戻りできないぞこれは……

どうして今まで使ってこなかったのか

  • プログラミングを覚えることを優先した。
    • プログラムを"タイピングする"方法を覚えるよりも先にやることがあった。
  • VSCodeで十分だった。
    • 物心ついたときから世の中には便利なIDEがあった。
  • HHKB覚えて使いこなしたほうが早いんじゃないか。

(甘かった。特に最後)

どうして使う気になったのか

  • 作業風景を目の当たりにしてしまった。
    • エンジニア配信者のprimegen氏が、電光石火のごとくテキスト操作をする風景に見とれてしまった。
  • VS Codeも物足りなくなってしまった。
    • もしかして:足るを知らない

といった具合です。


コーディングに使ってみた感想

:!bashコマンドを実行できる。

VSCodeでいうところのCtrl+@、ただしこちらはEnterでエディタに戻れるので、よりお手軽。

括弧の片割れへ移動%

括弧にカーソルを置いて%
flutterコンポーネントのネスト地獄で迷子になったとき特に重宝しそう

空白を除く行頭にinsertモードで入るI

遠いHOMEキーに手を伸ばさなくて良い

コードブロックごとコピー ya{

[{("`' '`")}]
yi{{ ... }の内側のみを対象にすることができる。(a=around, i=inside)
pythonの場合は…ドンマイ

vim-indent-objectプラグインもよさげ。python書くならこれはほしい。


足跡

入門

(ここからは脳内をそのまま出力したなぐり書きです!)

最初はこの記事にたどり着いた。
https://knowledge.sakura.ad.jp/21687/
何も知らない人でも頭にするする入ってくる説明だった。

  • 操作モードの相関図と、状態遷移
  • コンボ入力は、"オペレーター"と"モーション"を組み合わせる

この2つの概念が頭の中にあることで、以降の理解がとてもスムーズだった。

基本はわかった。
しかし、どこから初めたらいいのかわからない。
linuxにはvimが最初から入っているが、他にもviってコマンドもあるし、neovimとかいうのを良く聞く。

ちょこっと調べてみると、どうやらKickstart.nvimというものがあるらしい。おすすめ設定のテンプレートのようだ。
GitHubでリポジトリをforkして使うよう書かれている。自分だけのconfigを作ろう!って感じがして面白い。
(実際gitでconfigファイル管理したらbranch切り替えで頻繁に差し替えたりとかできそうで、良いアイデアだなぁ)

neovim本体は最新のstable/nightlyのみが対応とのことなのでパッケージマネージャからは入れず、githubからイメージを落としてきた。

wget https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz
tar xzvf nvim-linux64.tar.gz

:Tutorで呼び出せるチュートリアルも用意されている。とても助かった。
1時間くらい遊んで操作に慣れた。チュートリアルを終える頃にはtwitterの入力欄ですら癖でh j k lし始める始末。

プラグインを入れよう

coc.nvimという、補完の操作感をVSCodeに寄せる大規模なpluginを発見。
しかし、Kickstartでもともと入ってる膨大pluginたちを把握してないので足踏み。
調べたらとりあえずinit.luaを見ればいいとのこと。

LSPという存在を知る。Kickstartのinit.luaに説明が書いてあった。
Language Server Protocolの略で、シンボル名の一括変更、実装箇所に飛ぶ、等のおなじみの生産性UP機能を提供する。各言語ごとに用意されている。
今までVSCodeによって実装されていると思い込んでいたが、実は独立した機構だったとは……。

人類は偉大だなぁという気持ちと、キャッシュレスやPassKeyもこうならないとはこれだから人類は・・・という気持ち

使いたい言語のLSPを有効化する際は、556行目付近のlocal servers = {}の中に書くのか。
:help lspconfig-allで付属のLSP一覧が見られるのか。親切!

しかし、一旦飽きて結局導入しなかった。今後、導入したら追記する。

nafell

大学生、26卒エンジニア志望。アプリ開発サークルを設立し、lounas.jpのバックエンド・DB設計を行いました。2年後期にインターンで設計の手法(要件定義~詳細設計)を学び、IoTシステムの調査・開発を行いました。