blog

DeNAのエンジニアが考えていることや、担当しているサービスについて情報発信しています

2025.03.26 イベントレポート

Vimmerの技と知識を大公開、DeNA.vim @ TechCon 2025 開催!

by uhooi

#dena-techcon #tech-community #after-event #dena-vim #vim #neovim

はじめに

お久し振りです。約3年振りに会社のテックブログを執筆する川口( @the_uhooi )です。
2025 年 3 月 21 日、DeNA TechCon 2025 の After Event の第 7 回イベント「DeNA.vim @ TechCon 2025」を開催しました。

本記事ではイベント開催の経緯や当日の様子について紹介します。

今回のイベントについて

DeNA.vim @ TechCon 2025 についてです。

イベント概要

DeNA の Vimmer たちが送る、Vimmer のための技術コミュニティイベントです。

詳細は connpass のページをご参照ください。

LT

弊社員2名による LT です。

snacks.nvim 内のセットアップ不要なプラグインを紹介 / uhooi

まずは私の発表です。
登壇は VimConf 2024 以来で、今年に入ってからは初でした。( ポケカやり過ぎ

snacks.nvim という folke さん製プラグインの機能をザッと紹介しました。

まだ試せていない機能が多いので、一緒に試してくれる方を募集しています。

Neovim でのプラグイン開発の今 / delphinus

弊社が誇る最強 Neovimmer、delphinus さんの発表です。

plenary.nvim や Lua など、Neovim でプラグインを開発する際に必要な知識を深く紹介してくれました。

キャッチアップできていない内容ばかりで、とても勉強になりました。

vimrc 公開読書会

弊社員の vimrc(Vim の設定ファイル)で気に入っている設定やプラグインについて話したり、参加者の方からの質問に答えたりする会です。
毎週開催している社内勉強会も似たような雰囲気でワイワイやっています。

せっかくなので紹介した設定を本記事に掲載します。

higashi

まずは higashi くんの設定です。
;: へ置き換えます。US 配列だと Shift キーを押さずにコマンドモードへ入れるので、よく好まれる設定です。

noremap ; :

nnoremap のほうが vimrc に書く用途に合っているかもしれない、; の機能が使えなくなるのでキーマップを交換するのがいい、などの意見が挙がって学びになりました。
vimrc には以下のように記述するのがよさそうです。

nnoremap ; :
nnoremap : ;

zatton

次に zatton くんの設定です。
Esc キーで Terminal-Normal モードと Terminal-Job モードを切り替えるキーマップです。

vim.keymap.set("t", "<ESC>", [[<c-\><c-n><Plug>(esc)]], { noremap = true, silent = true })
vim.keymap.set("n", [[<Plug>(esc)<ESC>]], [[i<ESC>]], { noremap = true, silent = true })

Vim と Neovim でキーマップが異なるなど、Vimmer と Neovimmer が混在しているからこそ気づけることもあって学びになりました。

IK

IK さんの設定です。
ノーマルモードで矢印キーを使わないので、だったらそこに Git 操作のコマンドを割り当てようという発想です。

nnoremap <Up> :Gina status<CR>
nnoremap <Down> :Gina commit -v<CR>
nnoremap <Left> :Gina diff<CR>
nnoremap <Right> :Gina grep<CR>

Git 操作を Vim 内で完結させているとのことです。

uhooi

私の設定です。
IK さんと同じ発想ですが、私は矢印キーを完全に無効にしています。

local arrow_keys_desc = 'Disable Arrow keys'
vim.keymap.set('', '<Left>', '<Nop>', { desc = arrow_keys_desc })
vim.keymap.set('', '<Down>', '<Nop>', { desc = arrow_keys_desc })
vim.keymap.set('', '<Up>', '<Nop>', { desc = arrow_keys_desc })
vim.keymap.set('', '<Right>', '<Nop>', { desc = arrow_keys_desc })

矢印キーを封印することで、Vim のキーマップに慣れることができます。

uga-rosa

uga-rosa くんの設定です。
マウスのスクロールだけ有効にしてクリックを無効にするキーマップです。

vim.opt.mouse = "ni"
local mode_all = { "n", "v", "o", "i", "c", "t" }
for _, pos in ipairs({ "Left", "Right", "Middle" }) do
  vim.keymap.set(mode_all, ("<%sMouse>"):format(pos), "<Nop>")
  for _, pre in ipairs({ "2", "3", "4", "S", "C", "A" }) do
    vim.keymap.set(mode_all, ("<%s-%sMouse>"):format(pre, pos), "<Nop>")
  end
end

スクロール中に誤ってクリックするのを防ぐために設定しているとのことです。

eihigh

eihigh さんの設定です。
g;;;...g;g;g;...g,,,...g,g,g,... を実現するためのキーマップです。

" Changelist
nnoremap <plug>(cgl)  <nop>
nnoremap           g; g;<plug>(cgl)
nnoremap           g, g,<plug>(cgl)
nnoremap <plug>(cgl); g;<plug>(cgl)
nnoremap <plug>(cgl), g,<plug>(cgl)

このキーマップのテクニックは他でも活かせるので、覚えて損はありません。

delphinus

最後に delphinus さんの設定です。
ウィンドウを操作するためのキーマップです。

vim.keymap.set("n", "<A-j>", "<C-w>w", { desc = "時計回りにウィンドウ間を移動する" })
vim.keymap.set("n", "<A-k>", "<C-w>W", { desc = "反時計回りにウィンドウ間を移動する" })
vim.keymap.set("t", "<A-j>", [[<C-\><C-n><C-w>w]], { desc = "時計回りにウィンドウ間を移動する" })
vim.keymap.set("t", "<A-k>", [[<C-\><C-n><C-w>W]], { desc = "反時計回りにウィンドウ間を移動する" })
vim.keymap.set("n", "<A-o>", [[<C-w>o]], { desc = "他のウィンドウを全部消す" })
vim.keymap.set("t", "<A-o>", [[<C-\><C-n><C-w>oi]], { desc = "他のウィンドウを全部消す" })
vim.keymap.set("n", "<A-->", [[<C-w>_]], { desc = "ウィンドウの高さを最大化する" })
vim.keymap.set("t", "<A-->", [[<C-\><C-n><C-w>_i]], { desc = "ウィンドウの高さを最大化する" })
vim.keymap.set("t", "<A-r>", function()
  return [[<C-\><C-n>]] .. vim.fn.nr2char(vim.fn.getchar()) .. "pi"
end, { expr = true, desc = "レジスタの中身を貼り付ける" })

ターミナルかその他のバッファか気にせずにウィンドウを操作するために設定しているとのことです。

懇親会の様子

お弁当は VimConf に倣って今半のすき焼き弁当と、お寿司を用意しました。

他にも軽食を用意しました。

懇親会はみんなで楽しく談笑し、有意義な会となりました。

Vim の勉強会の懇親会は PC を開いて Vim を起動し、みんなが群がるのが醍醐味だと思っています。

感想

Vim / Neovim は最高です。
社内にはたくさんの Vimmer / Neovimmer がいて、みんな面白いのでいつも楽しいです。

DeNA TechCon 2025 Lightning Talks の紹介

今回のイベントに関連して、DeNA Tech Community Lightning Talks のアーカイブ動画もぜひご覧ください。
0:56 頃から「DeNA 内の Vim コミュニティについて」というタイトルで delphinus さんが発表しています。

DeNA Tech Community Lightning Talks

DeNA TechCon 2025 After Event 完走

今回の DeNA.vim @ TechCon 2025 にて、全7回にわたって開催された DeNA TechCon After Event もすべて終了となりました。
たくさんのイベントが大盛況と聞き、嬉しく思います。
全イベントの振り返りブログも後ほど公開されるので、楽しみにお待ちください。

おわりに

多くの関係者や参加してくださったみなさまのご協力により、無事にイベントを開催できました。 本当にありがとうございます。

今後も定期的に Vim 関連の勉強会を開催したいと考えているので、その際はぜひご参加くださると嬉しいです。

最後まで読んでいただき、ありがとうございます!
この記事をシェアしていただける方はこちらからお願いします。

recruit

DeNAでは、失敗を恐れず常に挑戦し続けるエンジニアを募集しています。