連載 本記事は複数記事の連載記事の1つです。 自動コマンドとは VimではInsertやNormalモードの切り替えなど、様々なイベント時に設定したコマンドを実行できます。 ハンドルできるイベントの一…
Neovimを新しい環境に作ろうとすると、これが意外と大変です。
Neovim上の設定はinit.vimやプラグインマネージャーでサクッと入りますが、プラグインマネージャー自体やNeovim本体、Python実行環境などは自動化できません。
連載
本記事は複数記事の連載記事の1つです。
GitHubで管理する
まず、複数環境で設定を共有するためにinit.vimを含むNeovimの設定ディレクトリをGitHub等で管理しましょう。
ホームディレクトリにある設定ファイルはドットから始まるファイル・ディレクトリ名がついており、これらの設定ファイルをリポジトリで管理する時に dotfiles
とリポジトリ名を付けることが多いです。
今回はLinux環境(Ubuntu)を想定したdotfilesを作成します。
セットアップスクリプト
ホームディレクトリに dotfiles
ディレクトリを作成します。
そして、その中に install.sh
を作成します。
install.shに自動化したいコマンドを記述したらGitHubに dotfiles
リポジトリを作成してファイルをpushすれば完成です。
あとは新環境を作る時にGitHubからdotfilesリポジトリをcloneし、sh ~/dotfiles/sh install.sh
からスクリプトを実行するだけです。
以下は私が使用しているスクリプトのサンプルです。
install.sh
#!bin/bash echo '====== apt update & upgrade ======' sudo apt -y update sudo apt -y upgrade echo '====== software install ======' echo '=== common ===' sudo apt install -y curl sudo apt install -y unzip echo '=== deno ===' curl -fsSL https://deno.land/x/install/install.sh | sh echo 'export DENO_INSTALL="/home/******/.deno"' >> ~/.bash_profile echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> ~/.bash_profile echo '=== stow ===' sudo apt install -y stow echo '=== fish (shell) ===' sudo apt-add-repository ppa:fish-shell/release-3 sudo apt update -y sudo apt install -y fish chsh -s /usr/bin/fish fish echo '=== fzf ===' git clone --depth 1 https://github.com/junegunn/fzf.git /tmp/fzf /tmp/fzf/install echo '=== ripgrep ===' sudo apt install -y ripgrep echo '=== fisher ===' curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher fisher update fisher install h-matsuo/fish-color-scheme-switcher echo '=== node ===' sudo apt install -y nodejs npm sudo npm install n -g sudo n latest sudo apt purge -y nodejs npm echo '=== neovim ===' sudo add-apt-repository -y ppa:neovim-ppa/unstable sudo apt -y update sudo apt install -y neovim/focal echo '=== python ===' sudo apt install -y python3-pip pip3 install pynvim echo '=== vim plug for neovim===' sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' echo '====== GNU stow ======' cd ~/dotfiles stow -v nvim echo '=== Re login ===' exec $SHELL -l
apt update & upgrade
まずはUbuntuのパッケージリストをアップデートし、最新のパッケージへ更新します。
echo '====== apt update & upgrade ======' sudo apt -y update sudo apt -y upgrade
software install
Neovimが依存する外部ソフトウェアや入れておきたいソフトウェアのインストールコマンドを定義します。
deno
denoとは、TypeScriptでVimPluginを作成するためにも使われているパッケージで、これに依存しているプラグインを使用している場合に必要になります。
暗黒美無王ことdeinパッケージマネージャーのShougoさんが最近作るプラグインのddc等にも使用されています。
curl -fsSL https://deno.land/x/install/install.sh | sh echo 'export DENO_INSTALL="/home/******/.deno"' >> ~/.bash_profile echo 'export PATH="$DENO_INSTALL/bin:$PATH"' >> ~/.bash_profile
stow
重要です。
正式名をGNU Stowと言います。
これなしでdotfilesをまとめてリポジトリで管理しようとすると、~/.config
以下の全ての設定ファイルをリポジトリに入れるか、.gitigonreで細かに除外しなければなりません。
GNU Stowのコマンド「stow -v nvim」を実行すると、~/dotfiles/.config/nvim
に配置したファイルを ~/.config/nvim
へ配置するシンボリックリンクを設定することが出来ます。
これによって、.config等のdotfilesが集まるディレクトリから管理対象にしたい設定ファイルだけを管理することが出来ます。
fish (shell)
シェルをデフォルトから変更したい場合なども設定可能です。
fishシェルとfish用のパッケージマネージャー「fisher」のセットアップ例です。
sudo apt-add-repository ppa:fish-shell/release-3 sudo apt update -y sudo apt install -y fish chsh -s /usr/bin/fish fish curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher fisher update fisher install h-matsuo/fish-color-scheme-switcher
fzf / ripgrep
ファイルのあいまい検索にfzf、Grepにripgrepに依存しているプラグインを使っている場合に追加します。
echo '=== fzf ===' git clone --depth 1 https://github.com/junegunn/fzf.git /tmp/fzf /tmp/fzf/install echo '=== ripgrep ===' sudo apt install -y ripgrep
nodejs
nodejsを入れる場合のサンプルです。
nodejsを入れた後はnodejsの環境別のバージョン切り替えのためにn
も入れています。
echo '=== node ===' sudo apt install -y nodejs npm sudo npm install n -g sudo n latest
neovim
neovimは最新版を入れるためにパッケージリポジトリを追加した上でインストールします。
sudo add-apt-repository -y ppa:neovim-ppa/unstable sudo apt -y update sudo apt install -y neovim/focal
python
pythonを必要とするプラグインも多く、python3をインストールします。
sudo apt install -y python3-pip pip3 install pynvim
GNU stow
stowコマンドを使ってdotfilesのシンボリックリンクを作成して配置します。
Re login
シェルに再ログインすることでシェルの変更等を反映します。
コメントを書く