ビーマの神殿
Tadashi Aikawa
2024/12/26 Minerva Lightning Talks

Tadashi Aikawa

Productivity Creator since 2010
OS
Windows (開発はUbuntu on WSL)
ターミナル
Windows Terminal / WezTerm (secondary)
言語
TypeScript >> Python = Go > Lua > Rust
エディタ
Neovim / Obsidian
デバイス
EIZO / HHKB Studio / SlimBlade
好き
創作活動・温泉・甘味・動物(ぬいぐるみ含む)
苦手
お酒・車・勉強
楽しい仕事
個人やチームの生産性を上げて成果に繋げる
*『ここは 転職をつかさどる ビーマの神殿。
  エディタを かえたい者が 来るところじゃ。』
*『転職を ごきぼうか?』
*『そなたは Vimmerに なりたいと 申すか?』
*『いちど VSCodeをアンインストールし
  修行をしなおす覚悟も おありじゃな?』

Agenda

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう

Chapter

01

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう
*『はじめに大事なことをお伝えしよう。』
*『Vimはスポーツじゃ。』

一流アスリートに必要なモノ 心技体

    • 集中力
    • 技術力
    • 操作スピード・稼働時間

一流アスリートに必要なモノ 心技体

    • 集中力
    • 技術力
    • 操作スピード・稼働時間

操作スピード・稼働時間(≒ 持久力)

  • 指の押下回数が少ない
  • 押下に対する指の負担が小さい
  • 指の移動距離が短い
  • 視界・首の移動が少ない
  • 考えない(無意識)
  • 視界にノイズが少ない

道具は良いものを使おう

Chapter

02

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう

思考の速度でパソコンを使う技術 2012年

full

AutoHotkey 2012年

full

AutoHotkeyで実現したこと

Don't think. Feel.
(考えるな。感じろ。)

It's like a finger pointing at the moon.
(これは月を指で指すようなものだ。)

Don't concentrate on the finger, or you will miss all that heavenly glory.
(指に集中するな。さもないと栄光を見失うぞ。)
映画『燃えよドラゴン』 リーの台詞

実践Vimとの邂逅 2018年

full

Chapter

03

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう
*『常人とVimmerには思考の癖という点において
  大きく2つの違いがあるのじゃ。』
*『それは 命令が 抽象的...
  ...かつ 再利用可能 なことじゃ。』

Vimmerの思考

  • 抽象的な命令
    • どこ(where)何(what) の操作をするか?
      • モーション
      • テキストオブジェクト
      • オペレータ
  • 命令の再利用
    • コーディングの関数と同じ
    • 具体例
      • ドットコマンド
      • マクロ

常人の思考

# before
version: "3"
services:
  minio:
    image: quay.io/minio/minio
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      minio_root_user: user
      minio_root_password: password
    command: server /data
# after
version: "3"
services:
  minio:
    image: quay.io/minio/minio
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      MINIO_ROOT_USER: user
      MINIO_ROOT_PASSWORD: password
    command: server /data
*『minio_root_user をダブルクリック -> MINIO_ROOT_USER と入力
  minio_root_password をダブルクリック -> MINIO_ROOT_PASSWORD と入力』

Vimmerの思考

# before
version: "3"
services:
  minio:
    image: quay.io/minio/minio
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      minio_root_user: user
      minio_root_password: password
    command: server /data
# after
version: "3"
services:
  minio:
    image: quay.io/minio/minio
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      MINIO_ROOT_USER: user
      MINIO_ROOT_PASSWORD: password
    command: server /data
『minio_root_user に乗って(smij)、大文字に変換(gUiw)。
  下に移動して繰り返し(j.) じゃ』

Chapter

04

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう

Neovimの特徴

  • 高速
    • 『見たまえ。私のNeovimを。起動時間はわずか18msだ!!』
  • Vimとの機能的互換性 + 独自機能
    • 強力なVimの機能を享受しつつモダンな機能を搭載
  • プラグインシステム
    • 自分好みの外見にできる
    • 必要な情報のみを必要なタイミングで表示できる
    • よりよい操作性を追求できる
    • しかも自分でも作れる(Lua or TypeScript)

Neovimを使い始めたきっかけ ❤️‍🔥Burningなプロジェクトに参賀

  • Windowsだと動かなかった
    • WSL内のUbuntu環境で開発
  • VSCodeだと重かった
    • Goプロジェクトなのに
  • 左の席の人も右の席の人もNeovimを使ってた
    • もうやるしかない

Chapter

05

  1. 一流アスリートの資質
  2. Vimmerになるまでの旅路
  3. 常人とVimmer 思考の違い
  4. なぜNeovimか?
  5. 本気でNeovimをはじめよう

無理だと思わないことが一番大事だと思います。
無理だと思ったら終わりです。
大谷翔平の名言:無理だと思わないことが一番大事だと思います。無理だと思ったら終わりです。

努力は必ず報われる。
もし報われない努力があるのならば、それはまだ努力と呼べない。
王貞治の名言:努力は必ず報われる。もし報われない努力があるのならば、それはまだ努力と呼べない。

真のNeovimmerになるまでの段階 (一例)

  1. IDE + Vimプラグイン
  2. Neovimを触って挫折する
  3. VSCode + vscode-neovim
  4. Neovim + LazyVim
  5. Neovim + coc.nvim
  6. Neovim + nvim-lspconfig
『わしは6年近くかかったぞい』

真のNeovimmerになるまでの段階 (一例)

  1. IDE + Vimプラグイン
  2. Neovimを触って挫折する
  3. VSCode + vscode-neovim
  4. Neovim + LazyVim
  5. Neovim + coc.nvim
  6. Neovim + nvim-lspconfig <- 今回はいきなりココを目指す

インストール

mise use -g neovim

.zshrc

# vimで起動したければ
alias vim=nvim

設定

すぐ欲しくなる設定 厳選10

vim.opt.swapfile = false -- swapfileを作成しない
vim.opt.number = true -- 行番号の表示
vim.opt.clipboard = "unnamedplus" -- クリップボードとヤンクの同期
vim.opt.tabstop = 2 -- タブの文字数指定 -- 好みで2 or 4
vim.opt.shiftwidth = 0 -- インデントの幅 -- 0でtabstopの値(2)を使う
vim.opt.expandtab = true -- タブをスペースとして入力する
vim.opt.ignorecase = true -- 検索文字列が小文字の場合は大文字小文字を区別なく検索する
vim.opt.smartcase = true -- 検索時に大文字を含んでいたら大/小を区別
vim.opt.cursorline = true -- カーソル行の表示を強調

-- Yankした範囲を反転色でハイライト
vim.api.nvim_set_hl(0, "YankHighlight", { reverse = true })
vim.api.nvim_create_autocmd("TextYankPost", {
  pattern = "*",
  callback = function()
    vim.highlight.on_yank({ higroup = "YankHighlight", timeout = 200 })
  end,
})

プラグイン管理 lazy.nvim

full

開発に必須 主観です

プラグイン 概要
nvim-lspconfig LSPとの架け橋
nvim-treesitter 構文解析とシンタックスハイライト
nvim-cmp 補完機能
conform.nvim Linter & Formatter との架け橋
telescope.nvim ファイル検索 & 全文検索
gitsigns.nvim Gitの差分箇所を可視化
barbar.nvim タブのようなバッファUI
lualine.nvim ステータスライン・winbarのカスタマイズ
『このNeovimはプラグインをインストールするたびにパワーがはるかに増す...
  そのプラグインをあと46個もオレは残している...
  その意味がわかるな?』

深淵の入口をご案内

full

仕事だったら『所属』『代表プロダクト』『入社年』などを入れる