【neovim】Neovimをインストール&設定

Astro / TailWind

vimからの移行(移行というか

1. NeovimとVimの関係

Neovimは、Vimのソースコードをベースにゼロから作り直されたプロジェクトです。

  • Vim: 伝統を守り、安定性を重視。
  • Neovim: 拡張性(LSPやLuaによる高速化)と最新の機能を重視。

今回の目的である「TypeScriptを快適に動かす」という点においては、Neovimの方が圧倒的に設定しやすく、高機能なツール(LSPなど)との相性が良い


2. インストール方法(OS別)

お使いの環境に合わせて、以下のコマンドでインストールしてください。

  • macOS (Homebrew):Bashbrew install neovim
  • Ubuntu / Debian:Bashsudo apt update sudo apt install neovim
  • Windows (PowerShell / winget):PowerShellwinget install Neovim.Neovim

インストールが終わると、ターミナルで nvim と打つことで起動できるようになります。


mac

% brew install neovim
% nvim --version
NVIM v0.11.5
Build type: Release
LuaJIT 2.1.1765228720
Run "nvim -V1 -v" for more info

3.TypeScriptを使えるよう設定する

.vimrc から Neovim 標準の init.lua による設定に移行することで、TypeScript の開発環境は VSCode に匹敵するほど快適に

移行のためのステップを 3 段階で


1. 設定ファイルの場所を移動する

Neovim はデフォルトで ~/.config/nvim/init.lua を読み込みます。

  1. ディレクトリ作成:Bashmkdir -p ~/.config/nvim
  2. 設定ファイルの作成:.vimrc の中身をそのまま使うのではなく、新しく init.lua を作成します。Bashtouch ~/.config/nvim/init.lua

2. モダンなプラグイン構成(LSP + TS)

TypeScript を完璧に動かすための「三種の神器」を導入します。現在は lazy.nvim というプラグインマネージャーを使うのが主流です。

init.lua に記述する基本構成案

以下のコードを init.lua に貼り付けると、TypeScript の補完・シンタックスハイライト・自動インストール環境が整います。Lua

-- 1. 基本設定
vim.g.mapleader = " "
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.termguicolors = true

-- 2. lazy.nvim の自動インストール
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(lazypath)

-- 3. プラグインの設定
require("lazy").setup({
  -- LSP サーバー管理
  { "williamboman/mason.nvim", opts = {} },
  { "williamboman/mason-lspconfig.nvim", opts = { ensure_installed = { "vtsls", "astro" } } },
  { "neovim/nvim-lspconfig" },

  -- ハイライト (Treesitter) 
  -- config 関数を使わず、opts だけを渡すのが最も安全な最新の書き方です
  { 
    "nvim-treesitter/nvim-treesitter", 
    build = ":TSUpdate",
    opts = {
      ensure_installed = { "typescript", "tsx", "javascript", "astro", "html", "css", "lua" },
      highlight = { enable = true },
    },
    -- ここでエラーが出る require(...) を手動で呼ばないようにします
  },

  -- 補完エンジン
  { "hrsh7th/nvim-cmp", 
    dependencies = { "hrsh7th/cmp-nvim-lsp", "L3MON4D3/LuaSnip" },
    config = function()
      local cmp = require('cmp')
      cmp.setup({
        snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end },
        mapping = cmp.mapping.preset.insert({
          ['<C-Space>'] = cmp.mapping.complete(),
          ['<CR>'] = cmp.mapping.confirm({ select = true }),
        }),
        sources = cmp.config.sources({ { name = 'nvim-lsp' } })
      })
    end
  },

  -- Astro 専用サポート
  { "wuelnerdotexe/vim-astro" },
  
  -- カラースキーム
  { "folke/tokyonight.nvim", lazy = false, priority = 1000, config = function()
      vim.cmd([[colorscheme tokyonight]])
  end },
})

-- 4. LSP 起動設定 (Neovim v0.11+ 専用のネイティブ方式)
-- エラー回避のため、Masonがインストールを終えるまで待てるように pcall で囲みます
vim.api.nvim_create_autocmd("User", {
  pattern = "MasonToolsUpdateCompleted",
  callback = function()
    pcall(function()
      vim.lsp.config('vtsls', {})
      vim.lsp.enable('vtsls')
      vim.lsp.config('astro', {})
      vim.lsp.enable('astro')
    end)
  end
})

-- 初回起動用:もしMasonが既に終わっていれば直接有効化
pcall(function()
  vim.lsp.config('vtsls', {})
  vim.lsp.enable('vtsls')
  vim.lsp.config('astro', {})
  vim.lsp.enable('astro')
end)

nvim実行、インストール

nvimを実行すると 何やらインストールが開始された。エラーっぽいのも出たけど。。。

:TSInstall typescript tsx javascript astro html css

Total: 10 plugins

  Loaded (10)
    ● cmp-nvim-lsp 0.24ms  nvim-cmp
    ● lazy.nvim 3.72ms  init.lua
    ● LuaSnip 3.88ms  nvim-cmp
    ● mason-lspconfig.nvim 21.44ms  start
    ● mason.nvim 5.19ms  start
    ● nvim-cmp 14.44ms  start
    ● nvim-lspconfig 3.5ms  start
    ● nvim-treesitter 3.71ms  start
    ● tokyonight.nvim 4.65ms  start
    ● vim-astro 0.28ms  start

:LspInfo

 Installed
    ◍ astro-language-server astro
    ◍ vtsls

4を書き換え

-- =============================================================================
-- 4. LSP 起動設定 (確実な自動起動設定)
-- =============================================================================
local lspconfig = require('lspconfig')
- TypeScript 用
if vim.lsp.config then
  vim.lsp.config('vtsls', {})
  vim.lsp.enable('vtsls')

  -- Astro 用
  vim.lsp.config('astro', {})
  vim.lsp.enable('astro')
else
  -- もし 0.11 の機能がまだ不安定な場合のみ従来式を呼ぶ
  local lspconfig = require('lspconfig')
  lspconfig.vtsls.setup({})
  lspconfig.astro.setup({})
end

とりあえず typescriptとastroはOK

mac の terminalでは tokyonightの色設定がおかしくなりました。背景に色がついたり

ghosttyを使うことにしました。

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

タイトルとURLをコピーしました