vim&&yazi 常用指令

最后更新于 2025-03-05 28 次阅读


我还是不会觉得我有一天会把vim作为我vscode的默认编辑模式,但是还是学一下吧
以下所有内容来自个人随意的记录然后AI整理格式和内容

Vim 常用指令笔记

1. 基础设置

• vim ~/.vimrc  —— 编辑 Vim 配置文件

• set number  —— 显示行号

2. 插入模式

• o  —— 在当前行下方插入新行并进入插入模式

• O  —— 在当前行上方插入新行并进入插入模式

3. 光标移动

• G  —— 移动到文件末尾

• gg  —— 移动到文件开头

• 0  —— 移动到当前行的行首

• ^  —— 移动到当前行的第一个非空字符

• $  —— 移动到当前行的行尾

• g_  —— 移动到当前行的最后一个非空字符

• 78gg  —— 跳转到第 78 行

单词移动

• w  —— 跳到下一个单词的开头

• e  —— 跳到当前/下一个单词的结尾

• b  —— 跳到当前/前一个单词的开头

• W / E / B  —— 类似 w / e / b,但对标点分隔的单词有效

字符查找

• f+letter  —— 查找当前行中第一个指定字符(letter)

• F+letter  —— 反向查找当前行中第一个指定字符(letter)

• ;  —— 重复上一次的 f 或 F 操作

• ,  —— 反向重复上一次的 f 或 F 操作

4. 复制、剪切与粘贴

• yy  —— 复制当前行

• yw  —— 复制当前单词

• p  —— 粘贴到光标后

• +yy  —— 复制到系统剪贴板

• +p  —— 从系统剪贴板粘贴

5. 删除与修改

• dd  —— 删除当前行

• dw  —— 删除当前单词(删除至下一个单词的开头)

• cw  —— 修改当前单词(删除并进入插入模式)

• ci{  —— 修改 {} 内的内容

6. 选择文本

• ctrl v  —— 进入列选择模式

• shift v  —— 进入行选择模式

• vip  —— 选中当前段落

7. 撤销与重做

• u  —— 撤销上一步操作

• ctrl r  —— 重新执行被撤销的操作

8. 搜索

• /pattern  —— 搜索 pattern

• n  —— 跳到下一个匹配项

• N  —— 跳到上一个匹配项

9. 标记与回跳

• m+letter  —— 标记当前位置,标记名为 letter

• 'letter  —— 跳转到标记 letter 处

• g,  —— 回到最近一次编辑的位置

10. 其他操作

• .  —— 重复上一次命令

• :q  —— 退出 Vim

• :w  —— 保存文件

• :wq 或 ZZ  —— 保存并退出 Vim

Vim 进阶笔记

1. 基础设置

set number            " 显示行号
set relativenumber    " 显示相对行号
set autoindent        " 启用自动缩进
set smartindent       " 启用智能缩进
set tabstop=4         " 设置 Tab 宽度为 4
set shiftwidth=4      " 设置缩进宽度为 4
set expandtab         " 使用空格代替 Tab
set ignorecase        " 搜索时忽略大小写
set smartcase         " 但如果包含大写字母,则区分大小写
set hlsearch          " 高亮搜索结果
set incsearch         " 实时搜索

📌 如何应用?

将这些选项写入 ~/.vimrc,然后在 Vim 内执行 :source ~/.vimrc 使其生效。

2. 高级光标移动

块移动

• {  —— 跳到上一个空行(移动到段落开头)

• }  —— 跳到下一个空行(移动到段落结尾)

• %  —— 在括号 () {} [] 之间跳转

行间跳转

• H  —— 跳到屏幕顶部

• M  —— 跳到屏幕中间

• L  —— 跳到屏幕底部

• zz  —— 将当前行滚动到屏幕中央

• zt  —— 将当前行滚动到屏幕顶部

• zb  —— 将当前行滚动到屏幕底部

3. 高级复制、剪切、粘贴

• vi"  —— 选中当前引号内的内容

• va"  —— 选中当前引号及内容

• vi( / vi[ / vi{  —— 选中当前括号中的内容

• va( / va[ / va{  —— 选中当前括号及内容

• xp  —— 交换两个字符(当前字符与下一个字符交换)

• "+y  —— 复制到系统剪贴板(适用于支持 + 寄存器的 Vim)

• "+p  —— 从系统剪贴板粘贴

4. 查找和替换

• :s/foo/bar/g  —— 替换当前行所有 foo 为 bar

• :%s/foo/bar/g  —— 替换整个文件的 foo 为 bar

• :%s/foo/bar/gc  —— 替换整个文件的 foo 为 bar,但每次需要确认

• :g/pattern/d  —— 删除所有匹配 pattern 的行

• :v/pattern/d  —— 删除所有匹配 pattern 的行

5. 高级撤销与回溯

• U  —— 撤销当前行的所有更改

• g-  —— 回到上一个更改

• g+  —— 前进到下一个更改

• :earlier 10m  —— 回到10 分钟前的状态

• :later 5m  —— 前进到5 分钟后的状态

6. 记录和执行宏

宏(Macros)用于录制并重复执行 Vim 命令。

使用方法

  1. qa  —— 开始录制宏到寄存器 a

  2. 执行一系列 Vim 命令

  3. q  —— 结束录制

  4. @a  —— 执行寄存器 a 的宏

  5. @@  —— 重复上一次执行的宏

📌 示例:删除 10 行并复制

qa         " 开始录制到寄存器 a
10dd       " 删除 10 行
p          " 粘贴
q          " 停止录制
@a         " 执行宏

7. 多窗口与多标签

窗口操作

• :split 或 :sp  —— 水平分屏

• :vsplit 或 :vsp  —— 垂直分屏

• ctrl-w h / ctrl-w l / ctrl-w j / ctrl-w k  —— 在窗口间移动

• ctrl-w _  —— 最大化当前窗口

• ctrl-w =  —— 让所有窗口均分屏幕

• ctrl-w c  —— 关闭当前窗口

• ctrl-w o  —— 关闭其他窗口

标签页

• :tabnew  —— 打开新标签页

• :tabnext (gt)  —— 切换到下一个标签页

• :tabprev (gT)  —— 切换到上一个标签页

• :tabclose  —— 关闭当前标签页

• :tabs  —— 查看所有标签页

8. 自定义快捷命令

可以在 ~/.vimrc 添加如下命令提高效率:

" 在普通模式下按 <Space> + w 保存文件
nnoremap <Space>w :w<CR>

" 在普通模式下按 <Space> + q 退出 Vim
nnoremap <Space>q :q<CR>

" 在普通模式下按 <Space> + x 保存并退出
nnoremap <Space>x :wq<CR>

" 在普通模式下按 <Space> + s 切换拼写检查
nnoremap <Space>s :set spell!<CR>

" 在普通模式下按 <Space> + v 分屏
nnoremap <Space>v :vsplit<CR>

" 在普通模式下按 <Space> + h 左移动窗口
nnoremap <Space>h <C-w>h

9. 代码折叠

Vim 支持代码折叠(folding),可以让代码更整洁。

• za  —— 切换当前折叠的状态

• zc  —— 折叠当前块

• zo  —— 展开当前块

• zM  —— 折叠所有块

• zR  —— 展开所有块

• set foldmethod=indent  —— 以缩进为准进行折叠

• set foldlevel=2  —— 设置初始折叠层级

10. 其他实用命令

• :r filename  —— 读取 filename 的内容并插入到当前文件

• :w !sudo tee %  —— 在没有权限时,保存文件为 root(适用于 Unix/Linux)

• :e!  —— 放弃所有更改并重新加载文件

Yazi 基础操作指南

启动 Yazi

在终端中输入 yazi 启动程序:

yazi

启动后,按 q 退出,或按 F1 或 ~ 打开帮助菜单。

Shell 包装器

为了在退出 Yazi 时更改当前工作目录,建议为你的 Shell 添加以下包装函数:

对于 Bash / Zsh:

function y() {
    local tmp="(mktemp -t "yazi-cwd.XXXXXX")" cwd
    yazi "@" --cwd-file="tmp"
    if cwd="(command cat -- "tmp")" && [ -n "cwd" ] && [ "cwd" != "PWD" ]; then
        builtin cd -- "cwd"
    fi
    rm -f -- "tmp"
}

对于 Fish:

function y
    set tmp (mktemp -t "yazi-cwd.XXXXXX")
    yazi argv --cwd-file="tmp"
    if set cwd (command cat -- "tmp"); and [ -n "cwd" ]; and [ "cwd" != "PWD" ]
        builtin cd -- "cwd"
    end
    rm -f -- "tmp"
end

将上述函数添加到对应 Shell 的配置文件中,然后使用 y 启动 Yazi。在 Yazi 中按 q 退出时,当前工作目录将更改为 Yazi 中的最后位置。如果不希望更改目录,可按 Q 退出。

键绑定

以下是 Yazi 的基本键绑定:

导航

键绑定 作用
k 或 ↑ 光标上移
j 或 ↓ 光标下移
l 或 → 进入选中的目录
h 或 ← 返回上级目录
gg 光标移动到顶部
G 光标移动到底部
z 使用 zoxide 跳转到目录
Z 使用 fzf 跳转到目录或文件

选择

键绑定 作用
Space 切换选中文件/目录
v 进入可视模式(选择)
V 进入可视模式(取消选择)
Ctrl + a 全选
Ctrl + r 反选
Esc 取消选择

文件操作

键绑定 作用
o 或 Enter 打开选中文件
O 或 Shift + Enter 交互式打开选中文件
Tab 显示文件信息
y 复制选中文件(yank)
x 剪切选中文件
p 粘贴已复制/剪切的文件
P 粘贴并覆盖已存在的文件
Y 或 X 取消复制/剪切状态
d 移动选中文件到回收站
D 永久删除选中文件
a 创建新文件
A 创建新目录
r 重命名选中文件

搜索

键绑定 作用
/ 启动内联搜索
n 下一个匹配项
N 上一个匹配项

其他

键绑定 作用
q 退出 Yazi
Q 退出且不更改目录
F1 或 ~ 打开帮助菜单
最后更新于 2025-03-05