vimからの移行(移行というか
1. NeovimとVimの関係
Neovimは、Vimのソースコードをベースにゼロから作り直されたプロジェクトです。
- Vim: 伝統を守り、安定性を重視。
- Neovim: 拡張性(LSPやLuaによる高速化)と最新の機能を重視。
今回の目的である「TypeScriptを快適に動かす」という点においては、Neovimの方が圧倒的に設定しやすく、高機能なツール(LSPなど)との相性が良い
2. インストール方法(OS別)
お使いの環境に合わせて、以下のコマンドでインストールしてください。
- macOS (Homebrew):Bash
brew install neovim - Ubuntu / Debian:Bash
sudo apt update sudo apt install neovim - Windows (PowerShell / winget):PowerShell
winget 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 を読み込みます。
- ディレクトリ作成:Bash
mkdir -p ~/.config/nvim - 設定ファイルの作成:.vimrc の中身をそのまま使うのではなく、新しく init.lua を作成します。Bash
touch ~/.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を使うことにしました。


コメント