Neovim-0.9.5をubuntuにインストールして、便利なプラグインを入れてみた🐳

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/39af64a4-07ee-4772-8315-d19008fce3ff.png)

この記事では、まずdocker🐳で新しい**ubuntu** コンテナを起動して、neovimで使用便利なプラグインをインストールしたあと、コンテナ内で最新の**nodejs**をインストールしてプラグインを活かして**express**サーバーを起動するところまで解説します。


https://chatgpt.com/share/67f276d5-2880-8013-88e2-9092bb5c4cd3



# 便利なプラグイン
```vim:init.vim
" ファジーファインダー
Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.2' }
Plug 'nvim-lua/plenary.nvim'

" コード補完
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" ファイルツリー
Plug 'preservim/nerdtree'

" ステータスライン
Plug 'nvim-lualine/lualine.nvim'

" 色テーマ
Plug 'morhetz/gruvbox'

" NERDTree プラグイン
Plug 'preservim/nerdtree'

" 自動保存プラグイン
Plug 'Pocco81/auto-save.nvim'

```

以上のプラグインをインストールすると次のような見た目になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/52088931-7e99-4550-be33-3d1a49189c33.png)


# 1,Docker でubuntu container を起動
```terminal:terminal
    docker run -it --name nvim-in-ubuntu ubuntu
```
これで、新しいubuntuを起動することができます。

# 2,パッケージのアップデート&必要なツールをインストール
```bash:bash
    apt update && apt upgrade -y
    apt install -y curl git wget unzip build-essential software-properties-common
```
:::note info
apt コマンドの補足説明
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/db809fb0-0d7b-4d27-8e22-139245f7da5d.png)

インストールされたパッケージを確認
```bash:bash
    apt list --manual-installed
```

# 3,最新のNeovimのインストール
#### 方法①: ppaを使う方法（簡単・安定）
```bash:bash
    add-apt-repository ppa:neovim-ppa/stable
    apt update
    apt install -y neovim
```


https://launchpad.net/~neovim-ppa/+archive/ubuntu/stable


#### 方法②: AppImage（最新版が欲しい人向け）
```bash:bash
    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage
./nvim.appimage
```
# 4,初期設定（init.vim）
Neovimの設定ファイルは以下に置かれます：
```bash:bash
    ~/.config/nvim/init.vim
```
フォルダがなければ作成：
```bash:bash
   mkdir -p ~/.config/nvim
```
最小構成の init.vim 例：
```vim:init.vim
    " 基本設定
    set number              " 行番号を表示
    set relativenumber      " 相対行番号
    set clipboard=unnamedplus " システムのクリップボードを使用
    syntax on
    filetype plugin indent on
    
    " プラグインマネージャの設定（例：vim-plug）
    call plug#begin('~/.vim/plugged')
    
    " ここにプラグインを書く
    
    call plug#end()

```

:::note info
lua を使う場合の設定
:::


https://neovim.io/doc/user/lua-guide.html#_using-lua-files-on-startup




# 5,プラグインマネージャー**vim-plug**をインストール

https://github.com/junegunn/vim-plug?tab=readme-ov-file#vim


```bash:bash
   curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
     https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```

# 6,おすすめプラグイン
```vim:init.vim
    call plug#begin('~/.vim/plugged')

    " ファジーファインダー
    Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.2' }
    Plug 'nvim-lua/plenary.nvim'
    
    " コード補完
    Plug 'neoclide/coc.nvim', {'branch': 'release'}
    
    " ファイルツリー
    Plug 'preservim/nerdtree'
    
    " ステータスライン
    Plug 'nvim-lualine/lualine.nvim'
    
    " 色テーマ
    Plug 'morhetz/gruvbox'
    
    call plug#end()
```

# 7,プラグインのインストール（Neovim内で）
#### neovim を起動
```bash:bash
    nvim
```

#### 以下を入力：
```vim:nvim
    :PlugInstall
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/87e6da43-5f15-4f22-8c4d-36644f78db9f.png)

インストールが完了すると次の表示が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/b76d5ee1-68db-4181-9bee-5f632a1b96dc.png)


# Ubuntuコンテナに最新の**Nodejs**をインストール

DockerのUbuntuコンテナに最新の Node.js をインストールするには、Node.js公式が提供しているNodeSourceのリポジトリを使うのが簡単で確実です。

以下の手順でインストールできます👇
#### Ubuntu コンテナに Node.js 最新版 をインストールする手順
```bash:bash
    # curlが入っていない場合はインストール
    apt update
    apt install -y curl
    
    # Node.js公式のスクリプトで、最新版を取得（LTSでも可）
    curl -fsSL https://deb.nodesource.com/setup_current.x | bash -
    
    # Node.jsとnpmをインストール
    apt install -y nodejs
```

https://docs.nodesource.com/docs/nsolid/quickstart/local


#### バージョン確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/c75eb866-09d4-4ef3-811c-209a3ad0512f.png)

#### オプション: build-essential のインストール（npmでビルドが必要な時に）
```bash:bash
    apt install -y build-essential
```

#### おすすめNode.js補完プラグイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/ee0d76c8-e5e6-46fd-ab2d-eccf99f8e5e5.png)

今回は初心者にも扱いやすい「coc.nvim + coc-tsserver」を使った方法を紹介します。

# 🚀 coc.nvim + coc-tsserver を使って Node.js 補完を導入する手順
#### 1,coc.nvim をインストール（vim-plug）
init.vim に以下を追加：
```vim:vim
    " coc.nvim 補完プラグイン
    Plug 'neoclide/coc.nvim', {'branch': 'release'}

```
その後、Neovimで：
```vim:nvim
    :PlugInstall  
```

#### 2,coc-tsserver をインストール（TypeScript/JavaScript用）
Neovim内で以下を実行：
```vim:nvim
    :CocInstall coc-tsserver  
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/ab38704a-acdb-4afb-a12f-14041fe5db6b.png)


#### 3,オートコンプリート動作確認
"/"ルートディレクトリに新しくフォルダを作成して、そこにnodejsのプロジェクトを作成します。
```bash:bash
   mkdir add
   cd add
   touch index.js
   npm init -y
   npm install express
   npm install -D nodemon
```
app内の構造

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/efe3a435-8738-4d29-b175-1512038c92d0.png)

#### 4,オートコンプリート動作確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/928c6679-813c-405e-b959-3f2d0939f0b0.png)

#### 5,便利な init.vim の設定例
```vim:nvim
    " 補完候補のナビゲーション
    inoremap <silent><expr> <TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
    inoremap <silent><expr> <S-TAB> pumvisible() ? "\<C-p>" : "\<S-TAB>"
    
    " Enterキーで補完確定
    inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<CR>"
    
    " 明示的に補完メニューを表示（Ctrl + Space）
    inoremap <silent><expr> <C-Space> coc#refresh()
    
    nmap <silent> gd <Plug>(coc-definition)
    nmap <silent> gy <Plug>(coc-type-definition)
    nmap <silent> gi <Plug>(coc-implementation)
    nmap <silent> gr <Plug>(coc-references)
```
#### 6,🎁 補足：他にも coc-eslint や coc-prettier も便利
```vim:nvim
    :CocInstall coc-eslint coc-prettier
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/7bdd3c9b-80f1-46b8-86c1-f81530f21bd0.png)

#### 7,基本：補完が表示されたときの操作

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/57959c76-3c81-4467-979f-b9399a0a52c3.png)

# NERDTree のインストール
im-plug を使っている場合、init.vim に以下を追加：
```vim:init.vim
    " NERDTree プラグイン
    Plug 'preservim/nerdtree'
```
その後、Neovimを開いて：
```vim:nvim
    :PlugInstall
```
これでインストール完了です！

#### 1,便利なキーマッピング設定
よく使うキーを init.vim にマッピングしておくと便利です：
```vim:init.vim
    " NERDTreeトグル（ツリー表示の開閉）
    nnoremap <C-n> :NERDTreeToggle<CR>
    
    " 現在のファイル位置をNERDTreeで表示
    nnoremap <leader>n :NERDTreeFind<CR>
```
補足：
<C-n> → Ctrl + n で NERDTree を開閉
<leader> → 通常 \（またはカスタム設定してるキー）

# 自動保存プラグイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654025/b9c6f2bb-11ed-4413-a386-4d6febf8ad1a.png)

#### 1,インストール方法（vim-plugの場合）
```vim:init.vim
    " init.vim または init.lua に以下を追加
    Plug 'Pocco81/auto-save.nvim'
```
その後、Neovimを開いて：
```vim:nvim
    :PlugInstall
```

#### 2,設定方法（init.lua or init.vim）
init.vim で Lua を呼び出す方法
```vim:init.vim

    " init.vim の末尾に追記
    lua << EOF
    require("auto-save").setup({
      enabled = true,  -- デフォルトで自動保存を有効にする
      execution_message = {
        message = function() return "AutoSave: saved at " .. vim.fn.strftime("%H:%M:%S") end,
        dim = 0.18,
        cleaning_interval = 1250,
      },
      trigger_events = {"InsertLeave", "TextChanged"}, -- 自動保存をトリガーするイベント
      condition = function(buf)
        local fn = vim.fn
        local utils = require("auto-save.utils.data")
        return fn.getbufvar(buf, "&modifiable") == 1
      end,
      write_all_buffers = false, -- 全バッファ保存を無効に（trueにすると全ファイル保存）
      debounce_delay = 135,
    })
    EOF


```


https://github.com/pocco81/auto-save.nvim

これで、ノーマルモードに戻った時に、自動で保存されます。