Xubuntu21.04にインストールしたneovimのinit.vimを編集する + sourceコマンドでエラーが出た話

# 初めに
本記事はXubuntuにインストールしたneovimを、自分好みに設定する記事です。

「[Xubuntu21.04にNeovimをインストールしてエイリアスを設定する話](https://qiita.com/RiRyCasals/private/7218274d45ca8a31dfbc)」と関連性がありますので、合わせてお読みください。

**本記事の環境ではホームディレクトリの名称が user/ になっています。
user/ は各環境のユーザー名に依存しますので注意してください。**
また、本記事では全体的な構造が把握しやすいように、基本的に絶対パスを使用しています。

## 設定する項目
neovimを開発用のエディタにしたいので、次の項目を設定します。

- 行数を表示する
- tab(\t)がスペース4つで補完される
- utf-8でエンコードされる
- 文字にハイライトを入れる
- [ だけで [] が入力される
- { だけで {} が入力される
- ( だけで () が入力される
- ' だけで ' が入力される
- " だけで " が入力される

# 準備
nvimの設定は **nvim/init.vim** に書き込む必要があります。
**nvim/** と **init.vim** は**各自で作成する必要がある**ため、その準備をします。

**nvim/ は /home/user/.config/ の下に**作成します。
**init.vim は nvim/ に作成**します。

## nvim/の作成
ディレクトリの作成は非常に簡単で、mkdirコマンドで作成します。

```bash:command
~ $ mkdir /home/user/.config/nvim
```
作成できているか確認したい人は lsコマンド を使用してください.

```bash:command
$ ls /home/user/.config/
```

# 本題
## init.vimの編集
nvim/init.vimを編集します。

```bash:command
$ vi /home/user/.config/nvim/init.vim
```
「[Xubuntu21.04にNeovimをインストールしてエイリアスを設定する話](https://qiita.com/RiRyCasals/private/7218274d45ca8a31dfbc)」でエイリアスを設定した人は、viコマンドでneovimが起動します。

init.vimには次の内容を入力します。

```vim:init.vim
set number
set expandtab
set tabstop=4
set shiftwidth=4
set encoding=utf-8
syntax enable
inoremap [ []<LEFT>
inoremap { {}<LEFT>
inoremap ( ()<LEFT>
inoremap ' ''<LEFT>
inoremap " ""<LEFT>
```

記述内容とその効果は以下の通りです。

|記述|内容|
|:--|:--|
|set number | 行数を表示する|
|set expandtab | tab入力をスペースとして受け付ける|
|set tabstop=4 | tab入力をしたときのスペース数を4つにする|
|set shiftwidth=4 | 自動インデントのスペースの数を4つにする|
|set encoding=utf-8 | utf-8でエンコードされるようにする|
|syntax enable | 文に適切な色を付ける|
|inoremap [ []\<LEFT> | [ と入力すると [] が入力される|
|inoremap { {}\<LEFT> | { と入力すると {} が入力される|
|inoremap ( ()\<LEFT> | ( と入力すると () が入力される|
|inoremap ' ''\<LEFT> | ' と入力すると '' が入力される|
|inoremap " ""\<LEFT> | " と入力すると "" が入力される|

ESCキーでノーマルモードに戻り、:wqでinit.vimを保存してviを終了します。

## init.vimを適応する
init.vimに述した内容を適応させるために sourceコマンド を実行します。

```bash:command
$ source /home/user/.config/nvim/init.vim
```

おそらく「Expected a string, ~ 」が含まれる**次のようなエラーが表示されます。**

### source: Error while reading file "/home/user/.config/nvim/init.vim"

```:ERROR
~/.config/nvim/init.vim (line7): Expected a string, but instead found end of the statement
ignoremap [ []<LEFT>
                    ^
from sourcing file !/.config/nvim/init.vim
source: Error while reading file "/home/user/.config/nvim/init.vim"
```

エラーの原因は、init.vimに書いた "**[**" です。（他のignoremapも同じことが言える）
「Expected a string, but instead found end of the statement」が
対になる "**]**"が存在せず、代わりに行末に達してしまったことを知らせています。

このエラーを起こさないためには **viのnormalモード で sourceコマンド** を実行する必要があるようです。
したがって、もう一度viコマンド、vi内でsourceコマンドを実行します。


```bash:command
$ vi /home/user/.config/nvim/init.vim
```

```:---NormalMode---
:source /home/user/.config/nvim/init.vim
```

エラーが出なければ init.vim が適応されているので、viを終了して大丈夫です。

# まとめ
/nvim/init.vim を編集するだけで、neovimを自分好みにカスタマイズすることが可能になります。
設定項目は他にもたくさんあるので、ぜひいろいろ試してください。

## 参考
設定項目：[neovimをPythonの開発環境にする方法を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/31134)
設定項目：[私のinit.vimを紹介します(+おまけ)](https://trap.jp/post/524/)
エラー解決：[sourcing nvim config throwing error with fish shell
](https://stackoverflow.com/questions/48038907/sourcing-nvim-config-throwing-error-with-fish-shell)

# 雑談
先日、低スペック**ノートPC**に入れた Xubuntu21.04 に**ログインできなくなりました**。
ログイン画面のGUIが普段と異なり、アカウントがotherしか選べなくなっていました。

試しに普段のパスワードを入力すると「Failed to start session」...
「ああ、セッションが逝ったのか...」と思い、回復方法を探し、試行錯誤するも復旧せず...

そこで回復はあきらめて、~~Manjaro Linuxを入れることにしました！~~別のLinuxディストリビューションを入れることにしました！
ちなみに、Arch Linux を入れようとしたのですが、挫折しました。
（ネットワークの自動設定を行うパッケージのインストールができず...）

**別の Linuxディストリビューション の導入に関して** も記事にする予定なのでぜひ見てください。
Arch Linux もリベンジでき次第、記事にします！