この記事について
この記事には、個人の見解が多分に含まれております。
vim = nvim(neovim)を同一視して記事が記載されています。
平たくいうと、vimの布教記事です。苦手な方はブラウザバック推奨です。
はじめに:なぜ私はVimから逃げてきたのか.
一般的なネットワークエンジニアの立場として、なぜVimを使ってこなかったを整理しようと思う。
ネットワーク機器で利用できないことが多いから
Linuxサーバを触るエンジニアなら、設定ファイルの編集にviやvimを活用する事もあるだろう。
しかし、ネットワークエンジニアはどうだろうか。
FortiGateやPaloaltoなどのUTM製品、YAMAHA RTXやNEC IXなどのルータ製品ではviやvimは利用できない。
そもそも、「ネットワーク機器の中で直接テキストファイルを編集する」という概念自体が薄いはずだ。
一部の機器やOSではShellが立ち上げられるのでviやvimを利用する事はできるが正直使ってるところを見たことがない。
さらに、仕事Windowsを利用していればviやvimはデフォルトで入っていないため、人によっては存在自体知らないと思う。
「ネットワークエンジニア=Windows環境」という背景・理由
ネットワークの構成図作成(visioやPowerPoint)、要件定義や基本設計(Word)、IPアドレス管理や手順書作成(Excel)を利用する事が多い。
そうOfficeソフトを利用する事が圧倒的に多いため、メイン機が相性の良いWindowsになりがちだと思う。
他にも、お客様の環境がWindowsだったりするのでトラブル時に再現性を確認するには同じOSが好ましかったりする。
さらには、Windowsを利用しているネットワークエンジニアの大半が「Teraterm」というターミナルソフトを利用しているはずだ。
そのため、「黒い画面は機器を操作するもの、テキスト編集はWindowsのGUIアプリで行うもの」という意識になっていると思う。
※ネットワークエンジニアでMAC Bookを利用している方もいますので、話半分で読んでください。
Vimの学習コストは高い
ネットワークエンジニアはVimに出会う機会も少なければ、必須のツールではない。
万が一Vimに出会えたとしても、圧倒的な学習コストの高さが障壁になる。
モードの概念や、カーサル移動などでつまずいてしまう。
初学者は普段より仕事の効率が下がってしまうし、活用する場面がConfig作成などに限られてしまう。
そのため、Vimを知っていても普段から利用するという選択をしないのではないかと思う。
NWエンジニアを苦しめるテキスト処理の限界
前述したとおり、ネットワークエンジニアはテキスト処理にあまり重きをおいていないためVimと触れ合ってないとお記載してきました。
だがしかし、テキスト処理がまったくないわけでは決してございません。我々が抱えるテキスト処理を紹介しようと思う。
エクセルファイルからConfigを作る
NW機器の設定は、エクセルファイル(パラメーターシート)でFixすることが多い。
パラメーターシートから、機器へ設定を投入していくことになる。
GUIからポチポチと設定する事もできるが、数百~数千という量になるとCLI用に流し混みConfigを テキストで作る方が圧倒的に早かったりする。
つまり、エクセルに記載のあるものをConfigへ変換(テキスト処理)に変換するということだ。
その変換作業は各々やり方があると思うが、Vimを利用する前まではエクセルの関数やあれやこれやでなんとか変換していた。
既存機器を他の機種でリプレースする
「今までCiscoのASAを利用してきたが、色々な事情がありFortinetのFortiGateへリプレースする。」
そういったリプレース先の機種が変わる事は以外にも多い。
パートナー契約の有無であったり、仕入れ原価、顧客の担当者の趣味であったりと色々な理由があると思う。
他機種へのリプレースが決まった場合は、既存機器のConfigから他機種に合わせた形式に Configを変換(テキスト処理)する必要がある。
案件によっては、エクセルファイル(パラメーターシート)が導入時のまま更新されていなかったりする、、、。
そう、つもり信じられるのは現行で動いている機器のConfigのみなのだ。そこをコンバートする作業がある。
Vimの辛く過酷な修行を経て手にした自由
ここからは、私がVimを修行して役に立ったTipsを紹介しようと思う。
具体的な例をあげるようにしようと思うが、参考程度に思ってほしい。
エクセルからConfigを作る
今回の例では、エクセルからFortiGateのアドレスオブジェクト生成用のConfig作成を例にする。
添付画像のようなエクセルからをNeovimに張り付けた状態から開始する。
左側がエクセルを張り付けた部分、右側がFortiGateのアドレスオブジェクトの記載例です。
まずは、手始めにedit部分を追加しつつ、”でオブジェクト名を囲んでいく。

次は、editをキーワードにしてnext部分を追加していく。
そして、タブを改行に変換する。

editをキーワードに「set type ipmask」を追加する。
不要なタブをスペースに変換する。
行頭に「config firewall address」を追加して、行末の「end」を追加する。

最後にipmaskをキーワードにして、「set subnet 」を追加して完了。

上記のような感じで、vimはかなり小回りが利くのだ。
あまり良さそうに見えないかもですが、Config量が多くなれば効果を発揮する。
他にも応用可能なので興味があればぜひvimを使い込んでほしい。
(ASAからFortiGateへのコンフィグコンバート例も記載しようと思ったが、記載するのが大変なのでやめておく。)
Vimを自分の仕事道具として育てる。
vimは基本操作だけでも、かなり強力なエディタなのだがカスタムスクリプトを利用することで真価を見せる。
vimを育てるという表現があるのも納得だ。自分用に育てていくと使い勝手の良いものになっていく。
ここでは、私が生成AIとともに作成したカスタムスクリプトの例を紹介していこうと思う。
(筆者はWSL上でneovimを利用しています。カスタムスクリプトはlua製です。)
IPアドレスのサブネット表記をCIDR表記に変換したり、CIDR表記をワイルドカードマスクに変換したりするスクリプトだ。
VISUALモードで選択して、リーダーキー+mc(マスク→CIDR)を入力で変換できる。cmでCIDRからマスク表記みたいなそんな感じだ。

トラブル時やログからOUIを調べたときがあると思う。
Vimのカスタムスクリプトを利用すれば、速やかに調査が行える。
(※macvendors「.」comへCURLしてるだけです)

こちらは、MACアドレスの表示形式を変更するカスタムスクリプトだ。
トグル式になっており、3種類の表示形式を順繰り変換する仕組みになっている。

他にも選択範囲を翻訳してカーソルの一行下に出力したり、議事録用のテンプレ出力などをカスタムスクリプトで利用している。
まとめ:あなたもNvimの世界へ
だらだらと長い文章を読んでいただきありがとうございます。
vimについて記載してきたけど、少しでも興味を持ったなら積極的にvimを使ってもらえると嬉しい。
カスタムスクリプトについても、生成AIを使えば誰でも作成できると思うので気軽に挑戦してみてほしい。
ネットワークエンジニア目線のVim関連記事が少なかったので投稿しました。
誰かの参考になれば幸いです。
