mirror of
https://github.com/Dichgrem/Blog.git
synced 2025-08-01 09:19:32 -04:00
641 lines
28 KiB
HTML
641 lines
28 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<title>Dich'blog</title>
|
||
|
||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||
<meta name="robots" content="noodp"/>
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/style.css">
|
||
<link rel="stylesheet" href="https://blog.dich.bid/color/blue.css">
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/color/background_dark.css">
|
||
|
||
<link rel="stylesheet" href="https://blog.dich.bid/font-hack-subset.css">
|
||
|
||
<meta name="description" content="">
|
||
|
||
<meta property="og:description" content="">
|
||
<meta property="og:title" content="Dich'blog">
|
||
<meta property="og:type" content="article">
|
||
<meta property="og:url" content="https://blog.dich.bid/about-lazyvim/">
|
||
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:description" content="">
|
||
<meta name="twitter:title" content="Dich'blog">
|
||
<meta property="twitter:domain" content="blog.dich.bid">
|
||
<meta property="twitter:url" content="https://blog.dich.bid/about-lazyvim/">
|
||
|
||
<link rel="alternate" type="application/atom+xml" title="Dich'blog Atom Feed" href="https://blog.dich.bid/atom.xml" />
|
||
|
||
|
||
<link rel="icon" type="image/png" href=/dich.webp />
|
||
|
||
<!-- ✅ Added center alignment styles -->
|
||
<style>
|
||
.footer {
|
||
text-align: center;
|
||
padding: 1rem 0;
|
||
}
|
||
|
||
.footer__inner {
|
||
display: flex;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
}
|
||
|
||
.copyright {
|
||
text-align: center;
|
||
}
|
||
</style>
|
||
</head>
|
||
|
||
<body class="">
|
||
<div class="container">
|
||
|
||
<header class="header">
|
||
<div class="header__inner">
|
||
<div class="header__logo">
|
||
|
||
<a href="https://blog.dich.bid" style="text-decoration: none;">
|
||
<div class="logo">
|
||
|
||
Dich'blog
|
||
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<nav class="menu">
|
||
<ul class="menu__inner">
|
||
<li><a href="https://blog.dich.bid">blog</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/archive">archive</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/tags">tags</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/weekly">weekly</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/search">search</a></li>
|
||
|
||
<li class="active"><a href="https://blog.dich.bid/about">about me</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/links">links</a></li>
|
||
|
||
<li><a href="https://blog.dich.bid/atom.xml">rss</a></li>
|
||
|
||
<li><a href="https://github.com/Dichgrem" target="_blank" rel="noopener noreferrer">github</a></li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
|
||
</header>
|
||
|
||
|
||
<div class="content">
|
||
|
||
<div class="post">
|
||
|
||
<h1 class="post-title"><a href="https://blog.dich.bid/about-lazyvim/">乱七八糟:lazyvim快速上手</a></h1>
|
||
<div class="post-meta-inline">
|
||
|
||
<span class="post-date">
|
||
2025-04-20
|
||
</span>
|
||
|
||
</div>
|
||
|
||
|
||
<span class="post-tags-inline">
|
||
:: tags:
|
||
<a class="post-tag" href="https://blog.dich.bid/tags/luan-qi-ba-zao/">#乱七八糟</a></span>
|
||
|
||
|
||
<div class="post-content">
|
||
<p>前言 LazyVim 是一个基于 Neovim 的现代化配置框架,易于定制和扩展,这里对其介绍并说明使用方法。</p>
|
||
<span id="continue-reading"></span><h2 id="lazy">Lazy!</h2>
|
||
<blockquote>
|
||
<p>Vim 是从早期的 vi 编辑器发展而来的增强版,其名称代表“Vi IMproved”。由荷兰程序员 Bram Moolenaar 于 1991 年首次发布。Vim 是开源软件,支持多种操作系统,包括 Unix、Linux、Windows 和 macOS 等。</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>LazyVim 是一个基于 Neovim 的现代化配置框架,旨在简化 Neovim 的配置过程。它通过集成的 lazy.nvim 插件管理器,提供了一种易于定制和扩展配置的方式,结合了从头开始配置的灵活性和预配置设置的便利性 。</p>
|
||
</blockquote>
|
||
<blockquote>
|
||
<p>LazyVim 是在Neovim的基础上进行配置,Neovim又继承了vim的操作模式,对vim不熟悉的同学可以看<a href="https://vimsheet.com/">这里</a>或者本文末尾的 Vim 速查表.</p>
|
||
</blockquote>
|
||
<h2 id="an-zhuang">安装</h2>
|
||
<p>首先安装neovim,在arch linux上是:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>paru -S neovim
|
||
</span></code></pre>
|
||
<p>在Ubuntu上是</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>sudo add-apt-repository ppa:neovim-ppa/unstable
|
||
</span><span>sudo apt update
|
||
</span><span>sudo apt install -y \ neovim git curl unzip build-essential ripgrep fd-find
|
||
</span></code></pre>
|
||
<p>备份现有配置:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>mv ~/.config/nvim ~/.config/nvim.bak
|
||
</span><span>mv ~/.local/share/nvim ~/.local/share/nvim.bak
|
||
</span></code></pre>
|
||
<p>克隆 LazyVim Starter 模板:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||
</span></code></pre>
|
||
<p>启动 Neovim:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>nvim
|
||
</span></code></pre>
|
||
<p>首次启动时,LazyVim 会自动安装并配置所需的插件。</p>
|
||
<h2 id="jie-gou">结构</h2>
|
||
<p>LazyVim 的配置目录通常位于<code>~/.config/nvim/</code>中:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>~/.config/nvim
|
||
</span><span>❯ tree
|
||
</span><span>.
|
||
</span><span>├── init.lua
|
||
</span><span>├── lazy-lock.json
|
||
</span><span>├── lazyvim.json
|
||
</span><span>├── LICENSE
|
||
</span><span>├── lua
|
||
</span><span>│ ├── config
|
||
</span><span>│ │ ├── autocmds.lua
|
||
</span><span>│ │ ├── keymaps.lua
|
||
</span><span>│ │ ├── lazy.lua
|
||
</span><span>│ │ └── options.lua
|
||
</span><span>│ └── plugins
|
||
</span><span>│ ├── example.lua
|
||
</span><span>│ └── mp.lua
|
||
</span><span>├── README.md
|
||
</span><span>└── stylua.toml
|
||
</span><span>
|
||
</span><span>4 directories, 12 files
|
||
</span></code></pre>
|
||
<p>另外在<code>~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/</code>目录下看到的文件结构,是 LazyVim 为其核心插件和扩展插件提供的模块化配置体系。这些配置文件并不直接出现在<code>~/.config/nvim/lua/plugins/</code>目录中,是因为 LazyVim 采用了模块化和懒加载的设计理念,将核心插件和配置封装在其自身的代码库中。</p>
|
||
<h3 id="ge-wen-jian-he-mu-lu-de-zuo-yong">各文件和目录的作用</h3>
|
||
<ul>
|
||
<li>
|
||
<p><strong><code>init.lua</code></strong>:主配置文件,负责加载 <code>lua/config/lazy.lua</code>,从而引导整个 LazyVim 的初始化过程。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>lazy-lock.json</code></strong>:由 <code>lazy.nvim</code> 插件管理器生成的锁定文件,记录了已安装插件的精确版本,确保插件的一致性。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>lazyvim.json</code></strong>:用于记录通过 <code>:LazyExtras</code> 命令启用的额外功能(Extras),便于在不同设备间同步配置。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>LICENSE</code></strong> 和 <strong><code>README.md</code></strong>:分别为许可协议和项目说明文档。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>stylua.toml</code></strong>:<code>stylua</code> 的配置文件,用于格式化 Lua 代码。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>lua/config/</code></strong>:包含 Neovim 的基础配置文件,如自动命令(<code>autocmds.lua</code>)、快捷键(<code>keymaps.lua</code>)、插件管理(<code>lazy.lua</code>)和编辑器选项(<code>options.lua</code>)。这些文件会被 LazyVim 自动加载,无需手动引入。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong><code>lua/plugins/</code></strong>:用于添加或修改插件配置的目录。您可以在此目录中添加新的 Lua 文件,以引入其他插件或更改现有插件的设置。
|
||
</p>
|
||
</li>
|
||
</ul>
|
||
<h2 id="lazyvimzi-dai-pei-zhi">Lazyvim自带配置</h2>
|
||
<p>在 LazyVim 中,插件被分类为已加载(Loaded)和未加载(Not Loaded)。</p>
|
||
<h3 id="white-check-mark-yi-jia-zai-de-cha-jian-loaded">✅ 已加载的插件(Loaded)</h3>
|
||
<ul>
|
||
<li>
|
||
<p><strong>blink.cmp</strong>:一个高性能、开箱即用的自动补全引擎,旨在替代 <code>nvim-cmp</code>,提供更快的性能和更少的配置需求。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>bufferline.nvim</strong>:用于在顶部显示缓冲区列表的插件,提供类似于浏览器标签页的界面。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>friendly-snippets</strong>:一个包含多种语言代码片段的集合,可与多个片段引擎(如 <code>luasnip</code>)配合使用。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>gitsigns.nvim</strong>:在编辑器中显示 Git 更改标记(如添加、修改、删除)的插件,增强版本控制的可视化。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>lazy.nvim</strong>:LazyVim 的插件管理器,支持懒加载和依赖管理,提升启动速度和性能。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>lualine.nvim</strong>:一个高度可定制的状态栏插件,支持多种主题和组件。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>mason-lspconfig.nvim</strong> & <strong>mason.nvim</strong>:用于自动安装和配置 LSP(语言服务器协议)服务器的插件组合,简化开发环境的设置。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>mini.ai</strong>、<strong>mini.pairs</strong>:<code>mini.nvim</code> 插件集合的一部分,分别用于增强文本对象操作和自动括号配对功能。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>noice.nvim</strong>:改进 Neovim 消息和命令行界面的插件,提供更丰富的 UI 体验。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>nui.nvim</strong>:一个用于构建 Neovim 用户界面的 Lua 库,被多个插件作为依赖使用。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>nvim-lint</strong>:一个异步代码检查器,支持多种语言的语法和风格检查。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>nvim-lspconfig</strong>:提供预配置的 LSP 客户端设置,简化语言服务器的集成。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>nvim-treesitter</strong>、<strong>nvim-treesitter-textobjects</strong>、<strong>nvim-ts-autotag</strong>:基于 Tree-sitter 的语法高亮和代码结构分析插件,增强代码编辑体验。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>persistence.nvim</strong>:自动保存和恢复会话的插件,方便在不同项目之间切换。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>snacks.nvim</strong>:提供快速导航和编辑功能的插件,提升编辑效率。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>todo-comments.nvim</strong>:高亮和管理代码中的 TODO、FIXME 等注释的插件,方便任务跟踪。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>tokyonight.nvim</strong>:一个流行的 Neovim 主题,提供多种配色方案。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>trouble.nvim</strong>:一个用于显示诊断信息(如 LSP 错误、警告)的插件,提供统一的界面。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>ts-comments.nvim</strong>:基于 Tree-sitter 的注释插件,支持多语言的智能注释功能。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>which-key.nvim</strong>:在按下快捷键时弹出可用键位提示的插件,帮助记忆和发现快捷键。</p>
|
||
</li>
|
||
</ul>
|
||
<h3 id="x-wei-jia-zai-de-cha-jian-not-loaded">❌ 未加载的插件(Not Loaded)</h3>
|
||
<ul>
|
||
<li>
|
||
<p><strong>catppuccin</strong>:一个柔和的 Neovim 主题,提供多种风格的配色方案。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>conform.nvim</strong>:一个用于代码格式化的插件,支持多种语言的格式化工具。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>grug-far.nvim</strong>:一个快速的全局查找和替换插件,提供直观的界面和操作。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>lazydev.nvim</strong>:用于 LazyVim 插件开发的辅助工具,简化开发流程。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>markdown-preview.nvim</strong>:在浏览器中实时预览 Markdown 文件的插件,提升写作体验。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>plenary.nvim</strong>:一个 Lua 函数库,提供多种实用功能,被许多插件作为依赖使用。</p>
|
||
</li>
|
||
</ul>
|
||
<h2 id="zi-ding-yi-pei-zhi">自定义配置</h2>
|
||
<ul>
|
||
<li>
|
||
<p><strong>添加插件</strong>:在 lua/plugins/ 目录下创建一个新的 Lua 文件,返回插件的配置表。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>修改快捷键</strong>:编辑 lua/config/keymaps.lua 文件,添加或修改快捷键映射。</p>
|
||
</li>
|
||
<li>
|
||
<p><strong>调整选项</strong>:编辑 lua/config/options.lua 文件,设置 Neovim 的行为选项。</p>
|
||
</li>
|
||
</ul>
|
||
<h2 id="chang-yong-kuai-jie-jian">常用快捷键</h2>
|
||
<p>LazyVim 默认使用<code><space> 作为 <leader></code>,\ 作为<code><localleader></code>,并通过 which-key.nvim 插件动态展示所有以<code><space></code>开头的可用映射,极大降低了记忆成本。</p>
|
||
<ul>
|
||
<li><strong>导航与窗口管理</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 在窗口间切换:Ctrl +h / Ctrl +j / Ctrl +k / Ctrl +l
|
||
</span><span>- 调整当前窗口尺寸:Ctrl + ↑ / Ctrl + ↓ / Ctrl + ← / Ctrl + →
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>缓冲区切换与管理</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 切换到上一个/下一个缓冲区:Shift +h / Shift +l
|
||
</span><span>- 切换“另一个”缓冲区:Space + b + b
|
||
</span><span>- 关闭当前缓冲区:Space + b + d
|
||
</span><span>- 只保留当前缓冲区:Space + b + o
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>文件与搜索</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 新建文件:Space + f + n
|
||
</span><span>- 打开文件(普通命令):输入 :e <文件名> 回车
|
||
</span><span>- 在项目根目录查找文件:Space + Space
|
||
</span><span>- 在项目根目录查找文件(另一路径):Space + f + f
|
||
</span><span>- 在当前工作目录查找文件:Space + f + F
|
||
</span><span>- 查找 Git 管理的文件:Space + f + g
|
||
</span><span>- 列出最近打开的文件:Space + f + r
|
||
</span><span>- 列出所有缓冲区:Space + ,
|
||
</span><span>- 全局全文搜索:Space + /
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>分割与终端</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 向下分割:Space + -
|
||
</span><span>- 向右分割:Space + |
|
||
</span><span>- 关闭当前窗口:Space + w + d
|
||
</span><span>- 窗口最大化/恢复:Space + w + m 或 Space + u + Z
|
||
</span><span>- 打开根目录终端:Space + f + t
|
||
</span><span>- 打开当前目录终端:Space + f + T
|
||
</span><span>- 切换(隐藏/显示)终端:Ctrl + /
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>LSP 相关</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 跳转到定义:g + d
|
||
</span><span>- 查找引用:g + r
|
||
</span><span>- 跳转到实现:g + I
|
||
</span><span>- 跳转到声明:g + D
|
||
</span><span>- 查看文档悬停:K
|
||
</span><span>- 插入模式签名帮助:Ctrl + k
|
||
</span><span>- 代码操作:Space + c + a
|
||
</span><span>- 重命名:Space + c + r
|
||
</span><span>- 运行 CodeLens:Space + c + c
|
||
</span><span>- 显示行诊断:Space + c + d
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>Git 操作</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 查看状态:Space + g + s
|
||
</span><span>- 查看差异:Space + g + d
|
||
</span><span>- 查看行级 Blame:Space + g + b
|
||
</span><span>- 在浏览器打开当前文件:Space + g + B
|
||
</span><span>- Git Stash(snacks.nvim):Space + g + S
|
||
</span></code></pre>
|
||
<ul>
|
||
<li><strong>诊断与快速修复</strong></li>
|
||
</ul>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>- 打开 Location List:Space + x + l
|
||
</span><span>- 打开 Quickfix List:Space + x + q
|
||
</span><span>- 在 Quickfix 跳转:[ q / ] q
|
||
</span></code></pre>
|
||
<h2 id="tian-jia-cha-jian">添加插件</h2>
|
||
<ul>
|
||
<li><strong>Markdown预览</strong></li>
|
||
</ul>
|
||
<p>在<code>~/config/nvim/lua/plugins/</code>下新建一个mp.lua,写入如下配置:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>return {
|
||
</span><span> {
|
||
</span><span> "iamcco/markdown-preview.nvim",
|
||
</span><span> cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||
</span><span> ft = { "markdown" },
|
||
</span><span> build = ':call mkdp#util#install()'
|
||
</span><span> }
|
||
</span><span>}
|
||
</span></code></pre>
|
||
<p>随后即可在 Neovim 中打开一个 Markdown 文件,执行以下命令启动预览:</p>
|
||
<pre style="background-color:#151515;color:#e8e8d3;"><code><span>:MarkdownPreview
|
||
</span></code></pre>
|
||
<h2 id="tips">tips</h2>
|
||
<ul>
|
||
<li>gcc:注释当前行;</li>
|
||
<li>g+ctrl+g:显示信息;</li>
|
||
<li>alt+h:显示隐藏文件;</li>
|
||
<li>space+c+f:将当前代码格式化;</li>
|
||
<li>设置文件编码<code>:set fileencoding?</code></li>
|
||
<li>设置换行符<code>:set fileformat=unix</code></li>
|
||
<li>lazyvim的字体是和终端相同的,不同单独设置;</li>
|
||
<li>lazyvim中在侧边栏选择文件按d删除,按y复制,按p粘贴,按a创建,按r重命名;</li>
|
||
<li>lazyvim中的行号是非自然序的,这是为了方便光标移动而设置的:你可以在正常模式中通过10k快速移动光标到10行前,10j,10h,10l同理。</li>
|
||
<li>LSP快捷操作:</li>
|
||
</ul>
|
||
<table><thead><tr><th>快捷键</th><th>功能</th></tr></thead><tbody>
|
||
<tr><td><code>gd</code></td><td>跳转到定义(Go to Definition)</td></tr>
|
||
<tr><td><code>gr</code></td><td>查找引用(Go to References)</td></tr>
|
||
<tr><td><code>K</code></td><td>显示悬浮文档(Hover)</td></tr>
|
||
<tr><td><code><leader>rn</code></td><td>重命名(Rename)</td></tr>
|
||
<tr><td><code><leader>ca</code></td><td>Code Action(修复)</td></tr>
|
||
<tr><td><code>gl</code></td><td>显示诊断信息(Diagnostic)</td></tr>
|
||
<tr><td><code>[d</code> / <code>]d</code></td><td>上/下一个诊断问题</td></tr>
|
||
</tbody></table>
|
||
<h2 id="edit">Edit!</h2>
|
||
<blockquote>
|
||
<p>编辑器的基本素养</p>
|
||
</blockquote>
|
||
<p><code>文件操作</code></p>
|
||
<ul>
|
||
<li>创建文件/文件夹</li>
|
||
<li>打开/关闭/切换文件</li>
|
||
<li>复制/粘贴</li>
|
||
<li>写入/保存/退出</li>
|
||
<li>搜索替换</li>
|
||
</ul>
|
||
<p><code>字符处理</code></p>
|
||
<ul>
|
||
<li>LF/CRLF处理</li>
|
||
<li>零宽字符处理</li>
|
||
<li>GBK/UTF-8处理</li>
|
||
</ul>
|
||
<p><code>终端</code></p>
|
||
<ul>
|
||
<li>打开终端/复用终端</li>
|
||
</ul>
|
||
<p><code>其他功能</code></p>
|
||
<ul>
|
||
<li>LSP</li>
|
||
<li>代码调试</li>
|
||
<li>工作区切换</li>
|
||
<li>Git支持</li>
|
||
<li>主题与显示效果</li>
|
||
</ul>
|
||
<h2 id="yi-fen-you-xiu-de-vim-su-cha-biao">一份优秀的 Vim 速查表</h2>
|
||
<blockquote>
|
||
<p>翻译自<code>https://vimsheet.com/</code></p>
|
||
</blockquote>
|
||
<p>我整理了一份我每天使用的 Vim 基本命令列表,并提供了一些配置建议,使 Vim 更加实用。因为没有配置的 Vim 使用起来会比较痛苦。</p>
|
||
<h2 id="ji-chu-ming-ling">基础命令</h2>
|
||
<h3 id="guang-biao-yi-dong-pu-tong-mo-shi-ke-shi-mo-shi">光标移动(普通模式/可视模式)</h3>
|
||
<ul>
|
||
<li><code>h</code> <code>j</code> <code>k</code> <code>l</code>:左、下、上、右移动</li>
|
||
<li><code>w</code> / <code>b</code>:下一个/上一个单词</li>
|
||
<li><code>W</code> / <code>B</code>:下一个/上一个以空格分隔的单词</li>
|
||
<li><code>e</code> / <code>ge</code>:下一个/上一个单词的结尾</li>
|
||
<li><code>0</code> / <code>$</code>:行首/行尾</li>
|
||
<li><code>^</code>:行首第一个非空白字符(等同于 <code>0w</code>)</li>
|
||
</ul>
|
||
<h3 id="bian-ji-wen-ben">编辑文本</h3>
|
||
<ul>
|
||
<li><code>i</code> / <code>a</code>:在光标处/之后进入插入模式</li>
|
||
<li><code>I</code> / <code>A</code>:在行首/行尾进入插入模式</li>
|
||
<li><code>o</code> / <code>O</code>:在当前行下方/上方插入空行</li>
|
||
<li><code>Esc</code> 或 <code>Ctrl+[</code>:退出插入模式</li>
|
||
<li><code>d</code>:删除</li>
|
||
<li><code>dd</code>:删除整行</li>
|
||
<li><code>c</code>:删除并进入插入模式</li>
|
||
<li><code>cc</code>:删除整行并进入插入模式</li>
|
||
</ul>
|
||
<h3 id="cao-zuo-fu">操作符</h3>
|
||
<ul>
|
||
<li>操作符也适用于可视模式</li>
|
||
<li><code>d</code>:从光标处删除到移动目标</li>
|
||
<li><code>c</code>:从光标处删除到移动目标,并进入插入模式</li>
|
||
<li><code>y</code>:从光标处复制到移动目标</li>
|
||
<li><code>></code>:缩进一级</li>
|
||
<li><code><</code>:取消缩进一级</li>
|
||
<li>操作符可与移动命令组合使用,例如:<code>d$</code> 删除从光标到行尾的内容</li>
|
||
</ul>
|
||
<h3 id="biao-ji-wen-ben-ke-shi-mo-shi">标记文本(可视模式)</h3>
|
||
<ul>
|
||
<li><code>v</code>:进入可视模式</li>
|
||
<li><code>V</code>:进入行可视模式</li>
|
||
<li><code>Ctrl+v</code>:进入块可视模式</li>
|
||
<li><code>Esc</code> 或 <code>Ctrl+[</code>:退出可视模式</li>
|
||
</ul>
|
||
<h3 id="jian-tie-ban-cao-zuo">剪贴板操作</h3>
|
||
<ul>
|
||
<li><code>yy</code>:复制整行</li>
|
||
<li><code>p</code>:在光标后粘贴</li>
|
||
<li><code>P</code>:在光标前粘贴</li>
|
||
<li><code>dd</code>:剪切整行</li>
|
||
<li><code>x</code>:删除当前字符</li>
|
||
<li><code>X</code>:删除前一个字符</li>
|
||
<li>默认情况下,<code>d</code> / <code>c</code> 会将删除的内容复制到剪贴板</li>
|
||
</ul>
|
||
<h3 id="tui-chu">退出</h3>
|
||
<ul>
|
||
<li><code>:w</code>:保存文件但不退出</li>
|
||
<li><code>:wq</code>:保存并退出</li>
|
||
<li><code>:q</code>:退出(如果有修改会失败)</li>
|
||
<li><code>:q!</code>:强制退出并放弃修改</li>
|
||
</ul>
|
||
<h3 id="sou-suo-ti-huan">搜索/替换</h3>
|
||
<ul>
|
||
<li><code>/pattern</code>:搜索 pattern</li>
|
||
<li><code>?pattern</code>:向上搜索 pattern</li>
|
||
<li><code>n</code>:重复上一次搜索(同方向)</li>
|
||
<li><code>N</code>:重复上一次搜索(反方向)</li>
|
||
<li><code>:%s/old/new/g</code>:全文件替换 old 为 new</li>
|
||
<li><code>:%s/old/new/gc</code>:全文件替换 old 为 new,并逐个确认</li>
|
||
</ul>
|
||
<h3 id="chang-gui-ming-ling">常规命令</h3>
|
||
<ul>
|
||
<li><code>u</code>:撤销</li>
|
||
<li><code>Ctrl+r</code>:重做</li>
|
||
</ul>
|
||
<h2 id="gao-ji-ming-ling">高级命令</h2>
|
||
<h3 id="guang-biao-yi-dong">光标移动</h3>
|
||
<ul>
|
||
<li><code>Ctrl+d</code>:向下移动半页</li>
|
||
<li><code>Ctrl+u</code>:向上移动半页</li>
|
||
<li><code>}</code>:跳转到下一个段落(空行)</li>
|
||
<li><code>{</code>:跳转到上一个段落(空行)</li>
|
||
<li><code>gg</code>:跳转到文件顶部</li>
|
||
<li><code>G</code>:跳转到文件底部</li>
|
||
<li><code>:[num]</code>:跳转到指定行号</li>
|
||
<li><code>Ctrl+e</code> / <code>Ctrl+y</code>:向下/向上滚动一行</li>
|
||
</ul>
|
||
<h3 id="zi-fu-sou-suo">字符搜索</h3>
|
||
<ul>
|
||
<li><code>f [char]</code>:向前移动到指定字符</li>
|
||
<li><code>F [char]</code>:向后移动到指定字符</li>
|
||
<li><code>t [char]</code>:向前移动到指定字符之前</li>
|
||
<li><code>T [char]</code>:向后移动到指定字符之前</li>
|
||
<li><code>;</code> / <code>,</code>:重复上一次字符搜索(正向/反向)</li>
|
||
</ul>
|
||
<h3 id="bian-ji-wen-ben-1">编辑文本</h3>
|
||
<ul>
|
||
<li><code>J</code>:将下一行合并到当前行</li>
|
||
<li><code>r [char]</code>:用指定字符替换当前字符(不进入插入模式)</li>
|
||
</ul>
|
||
<h3 id="ke-shi-mo-shi">可视模式</h3>
|
||
<ul>
|
||
<li><code>O</code>:移动到块的另一个角</li>
|
||
<li><code>o</code>:移动到标记区域的另一端</li>
|
||
</ul>
|
||
<h3 id="wen-jian-biao-qian">文件标签</h3>
|
||
<ul>
|
||
<li><code>:e filename</code>:编辑文件</li>
|
||
<li><code>:tabe</code>:打开新标签页</li>
|
||
<li><code>gt</code>:切换到下一个标签页</li>
|
||
<li><code>gT</code>:切换到上一个标签页</li>
|
||
<li><code>:vsp</code>:垂直分割窗口</li>
|
||
<li><code>Ctrl+ws</code>:水平分割窗口</li>
|
||
<li><code>Ctrl+wv</code>:垂直分割窗口</li>
|
||
<li><code>Ctrl+ww</code>:在窗口间切换</li>
|
||
<li><code>Ctrl+wq</code>:关闭当前窗口</li>
|
||
</ul>
|
||
<h3 id="biao-ji">标记</h3>
|
||
<ul>
|
||
<li>标记允许你跳转到代码中的指定位置</li>
|
||
<li><code>m{a-z}</code>:在光标位置设置标记 {a-z}</li>
|
||
<li>大写标记 {A-Z} 是全局标记,可跨文件使用</li>
|
||
<li><code>'{a-z}</code>:跳转到设置标记的行首</li>
|
||
<li><code>''</code>:返回上一个跳转位置</li>
|
||
</ul>
|
||
<h3 id="wen-ben-dui-xiang">文本对象</h3>
|
||
<ul>
|
||
<li>例如:<code>def (arg1, arg2, arg3)</code>,光标在括号内</li>
|
||
<li><code>di(</code>:删除括号内的内容,即“删除最近括号内的内容”</li>
|
||
<li>如果没有文本对象,你需要使用 <code>T(dt)</code> 来实现相同的功能</li>
|
||
</ul>
|
||
<h3 id="chang-gui-ming-ling-1">常规命令</h3>
|
||
<ul>
|
||
<li><code>.</code>:重复上一次命令</li>
|
||
<li>在插入模式下,<code>Ctrl+r 0</code>:插入最近复制的文本</li>
|
||
<li><code>gv</code>:重新选择上一次选中的文本块</li>
|
||
<li><code>%</code>:在匹配的 <code>()</code> 或 <code>{}</code> 之间跳转</li>
|
||
</ul>
|
||
<hr />
|
||
<p>如果你希望将此速查表保存为 PDF 或打印出来,可以使用 Markdown 编辑器(如 Typora)或在线工具(如 Dillinger)进行导出。</p>
|
||
<p>此外,Vim 的默认配置可能不够友好,建议你参考以下资源进行配置优化:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/tpope/vim-sensible">vim-sensible</a>:提供一套合理的默认配置</li>
|
||
<li><a href="https://github.com/tpope/vim-pathogen">vim-pathogen</a>:插件管理工具</li>
|
||
<li><a href="https://github.com/rking/ag.vim">ag.vim</a>:快速全局搜索插件</li>
|
||
<li><a href="https://github.com/ctrlpvim/ctrlp.vim">ctrlp.vim</a>:文件和缓冲区快速切换插件</li>
|
||
<li><a href="https://github.com/preservim/nerdcommenter">nerdcommenter</a>:代码注释插件</li>
|
||
</ul>
|
||
<p>这些插件可以显著提升 Vim 的功能,使其更接近一个完整的 IDE。</p>
|
||
<hr />
|
||
<p>🔗</p>
|
||
<p><a href="https://yelog.org/2024/08/02/write-markdown-in-neovim-experience-and-tips/">用 neovim 写 markdown 是一种什么样的体验</a></p>
|
||
<hr />
|
||
<p><strong>Done.</strong></p>
|
||
|
||
</div>
|
||
|
||
|
||
<div class="pagination">
|
||
<div class="pagination__title">
|
||
<span class="pagination__title-h">Thanks for reading! Read other posts?</span>
|
||
<hr />
|
||
</div>
|
||
<div class="pagination__buttons">
|
||
<span class="button previous">
|
||
<a href="https://blog.dich.bid/about-aria2/">
|
||
<span class="button__icon">←</span>
|
||
<span class="button__text">乱七八糟:Aria2各平台使用指南</span>
|
||
</a>
|
||
</span>
|
||
|
||
|
||
<span class="button next">
|
||
<a href="https://blog.dich.bid/about-baci/">
|
||
<span class="button__text">乱七八糟:Baci实验笔记</span>
|
||
<span class="button__icon">→</span>
|
||
</a>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
<footer class="footer">
|
||
<div class="footer__inner">
|
||
<div class="copyright">
|
||
<span>©
|
||
2025
|
||
Dichgrem</span>
|
||
<span class="copyright-theme">
|
||
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
|
||
</a>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
</body>
|
||
</html>
|
||
|