Next.js 常用nvim命令

Date
Created
Aug 25, 2025 04:39 AM
Descrption
年龄大了,得记一下才行
Tags
vim
编程工具

notion image

🚀 基础 Neovim 操作

文件操作

# 文件导航 <Space>ff # 查找文件 (Telescope) <Space>fg # 全局搜索 (Live Grep) <Space>fb # 查找缓冲区 <Space>fr # 最近文件 <Space>fc # 查找命令 <Space>fh # 查找帮助文档 # 文件树操作 <Space>e # 切换文件树 (Neo-tree) <Space>fe # 打开文件树并聚焦到当前文件 <C-n> # 切换文件树 (NvimTree 如果使用) a # 在文件树中创建文件/文件夹 d # 删除文件 r # 重命名文件 x # 剪切文件 c # 复制文件 p # 粘贴文件 # 缓冲区管理 <Space>bd # 删除缓冲区 <Space>bb # 切换到其他缓冲区 <Tab> # 下一个缓冲区 <S-Tab> # 上一个缓冲区 <Space>bp # 固定/取消固定缓冲区

🎯 Next.js 特定操作

项目管理

# 终端操作 <Space>ft # 打开浮动终端 <Space>fT # 打开固定终端 <C-/> # 切换终端 (或 Ctrl+_) # 在终端中的常用 Next.js 命令 :terminal # 打开终端 # 然后在终端中: npm run dev # 启动开发服务器 npm run build # 构建项目 npm run start # 启动生产服务器 npm run lint # 运行 ESLint npm run type-check # TypeScript 类型检查 # 快速执行 npm 命令(在 Neovim 中直接执行) :!npm run dev :!npm run build :!npm run lint :!npm install

代码导航与跳转

# LSP 导航 gd # 跳转到定义 gD # 跳转到声明 gr # 查看引用 gi # 跳转到实现 K # 显示悬浮文档 <Space>ca # 代码动作 <Space>cr # 重命名变量 <Space>cf # 格式化代码 # 快速跳转 Next.js 文件结构 <Space>ff 输入: - pages/ # 页面文件 - components/ # 组件文件 - styles/ # 样式文件 - public/ # 静态资源 - api/ # API 路由 - utils/ # 工具函数 - hooks/ # 自定义 hooks - contexts/ # React contexts - types/ # TypeScript 类型

💻 React/JSX 开发

代码编辑

# 智能选择 vat # 选择标签内容 vit # 选择标签内部 dat # 删除标签 dit # 删除标签内容 # JSX 特定操作 <Space>rs # React Snippets (如果安装了相关插件) <Space>rc # 创建 React 组件模板 # 标签操作 cst<新标签> # 更改标签 (需要 vim-surround) dst # 删除围绕标签 ysw<div> # 用 div 包围单词 # 自动补全 <C-Space> # 触发补全 <Tab> # 选择补全项 <C-n> # 下一个补全项 <C-p> # 上一个补全项

HTML/JSX 标签操作

# Emmet 操作 (如果安装 Emmet 插件) <C-y>, # 展开 Emmet 缩写 div.container<C-y>, # 展开为 <div className="container"></div> # 常用 Emmet 缩写: div.class # <div className="class"></div> div#id # <div id="id"></div> ul>li*5 # 5个li的列表 img[src alt] # <img src="" alt="" />

🎨 CSS/Tailwind 开发

CSS 文件操作

# 文件内搜索 CSS 类 /<类名> # 搜索特定类名 /\\.container # 搜索 .container 类 n # 下一个匹配 N # 上一个匹配 # Tailwind CSS 支持 <Space>ct # Tailwind CSS 类名补全 <C-Space> # 在 className 中触发 Tailwind 补全 # CSS 属性快速编辑 ci" # 更改引号内容 (className="这里") ca" # 更改包含引号的内容

🔧 TypeScript 支持

TypeScript 特定命令

# 类型检查 <Space>td # 显示类型定义 <Space>th # 显示类型层次结构 <Space>ti # 显示类型信息 # 错误诊断 <Space>xx # 显示诊断列表 <Space>xd # 显示文档诊断 <Space>xl # 显示位置列表 ]d # 下一个诊断 [d # 上一个诊断 <Space>cd # 诊断浮窗 # TypeScript 重构 <Space>co # 组织导入 <Space>cR # 移除未使用的导入 <Space>cf # 修复所有可修复的问题

🔍 搜索与替换

项目级搜索

# Telescope 搜索 <Space>fg # 实时搜索文件内容 <Space>fw # 搜索光标下的单词 <Space>fs # 搜索字符串 <Space>fG # 在 Git 文件中搜索 # 替换操作 <Space>sr # 搜索并替换 (项目级) :%s/old/new/g # 当前文件替换 :%s/old/new/gc # 当前文件替换 (确认) # 多文件替换 (需要插件支持) <Space>rr # 多文件替换

Next.js 项目特定搜索

# 搜索 Next.js 特定内容 <Space>fg 然后输入: - "getStaticProps" # 搜索静态生成函数 - "getServerSideProps" # 搜索服务器端渲染函数 - "useEffect" # 搜索 useEffect hooks - "useState" # 搜索 useState hooks - "export default" # 搜索默认导出 - "import.*from" # 搜索导入语句

📋 代码片段 (Snippets)

React Snippets

# 在插入模式下输入并按 Tab: rfc<Tab> # React Function Component rfce<Tab> # React Function Component with export rafc<Tab> # React Arrow Function Component rcc<Tab> # React Class Component useState<Tab> # useState hook useEffect<Tab> # useEffect hook

Next.js 特定 Snippets

# 自定义或通过插件: npage<Tab> # Next.js page template napi<Tab> # Next.js API route template getstaticprops<Tab> # getStaticProps template getssr<Tab> # getServerSideProps template

🐛 调试与测试

调试操作

# 断点操作 (需要 DAP 插件) <Space>db # 切换断点 <Space>dB # 设置条件断点 <Space>dc # 继续执行 <Space>ds # 单步执行 <Space>do # 单步跳过 <Space>di # 单步进入 <Space>dr # 打开 REPL <Space>du # 切换调试 UI # Console.log 快速插入 <Space>cl # 插入 console.log (需要配置)

测试相关

# 运行测试 (在终端中) :!npm test # 运行测试 :!npm run test:watch # 监视模式测试 # Jest 相关操作 <Space>tt # 运行当前文件测试 <Space>ta # 运行所有测试 <Space>tf # 运行失败的测试

🔄 Git 操作

Git 基础操作

# Fugitive 插件命令 :Git # Git 状态 :Git add . # 添加所有更改 :Git commit # 提交更改 :Git push # 推送更改 :Git pull # 拉取更改 # LazyGit 集成 (如果安装) <Space>gg # 打开 LazyGit <Space>gc # Git commits <Space>gs # Git status # 差异查看 <Space>gd # 查看差异 <Space>gb # Git blame <Space>gh # Git hunk 操作

📱 移动端开发

响应式开发

# 在多个设备尺寸间快速搜索 <Space>fg sm: # 搜索 Tailwind sm 断点 <Space>fg md: # 搜索 Tailwind md 断点 <Space>fg lg: # 搜索 Tailwind lg 断点 # 在浏览器中打开 (需要配置) <Space>op # 在浏览器中打开项目

⚙️ 配置与自定义

自定义快捷键 (添加到配置中)

-- 在 ~/.config/nvim/lua/config/keymaps.lua local map = vim.keymap.set -- Next.js 开发快捷键 map("n", "<leader>nd", ":!npm run dev<CR>", { desc = "Start Next.js dev server" }) map("n", "<leader>nb", ":!npm run build<CR>", { desc = "Build Next.js project" }) map("n", "<leader>nl", ":!npm run lint<CR>", { desc = "Run ESLint" }) map("n", "<leader>ni", ":!npm install<CR>", { desc = "Install dependencies" }) -- React 组件快速创建 map("n", "<leader>rc", function() local component_name = vim.fn.input("Component name: ") local content = string.format([[ import React from 'react' interface %sProps { } const %s: React.FC<%sProps> = () => { return ( <div> %s </div> ) } export default %s ]], component_name, component_name, component_name, component_name, component_name) vim.api.nvim_put({content}, 'l', true, true) end, { desc = "Create React component" }) -- 快速插入 console.log map("n", "<leader>cl", function() local line = vim.api.nvim_get_current_line() local indent = line:match("^%s*") vim.api.nvim_put({indent .. "console.log('DEBUG:', )"}, 'l', true, true) vim.cmd("normal! $h") vim.cmd("startinsert") end, { desc = "Insert console.log" }) -- 快速打开常用 Next.js 文件 map("n", "<leader>np", ":e package.json<CR>", { desc = "Open package.json" }) map("n", "<leader>nc", ":e next.config.js<CR>", { desc = "Open next.config.js" }) map("n", "<leader>nt", ":e tailwind.config.js<CR>", { desc = "Open tailwind.config.js" })

🔌 推荐插件配置

必备插件列表

-- 在 ~/.config/nvim/lua/plugins/nextjs.lua return { -- TypeScript 支持 "jose-elias-alvarez/typescript.nvim", -- React 支持 { "windwp/nvim-ts-autotag", ft = { "javascript", "javascriptreact", "typescript", "typescriptreact" }, config = true, }, -- Tailwind CSS 支持 { "bradcush/nvim-tailwindcss-language-server", }, -- Emmet 支持 { "mattn/emmet-vim", ft = { "html", "css", "javascript", "javascriptreact", "typescript", "typescriptreact" }, }, -- 代码片段 { "dsznajder/vscode-es6-javascript-snippets", build = "yarn install --frozen-lockfile && yarn compile", }, }

🚀 工作流程示例

典型开发流程

# 1. 打开项目 cd my-nextjs-project nvim . # 2. 启动开发服务器 <Space>ft # 打开终端 npm run dev # 启动服务器 # 3. 创建新组件 <Space>ff # 查找文件 输入: components/NewComponent.tsx <Enter> # 创建新文件 <Space>rc # 使用自定义快捷键创建组件模板 # 4. 编辑组件 <正常编辑> <Space>cf # 格式化代码 :w # 保存文件 # 5. 查看页面效果 <浏览器中查看 localhost:3000> # 6. 提交更改 <Space>gg # 打开 LazyGit # 或使用命令: :Git add . :Git commit -m "Add new component" :Git push

📚 学习资源

内置帮助

:help telescope # Telescope 帮助 :help lsp # LSP 帮助 :help treesitter # Tree-sitter 帮助 :Telescope help_tags # 搜索帮助文档

快速参考

<Space>sk #