我还是不会觉得我有一天会把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 命令。
使用方法
- qa —— 开始录制宏到寄存器 a
-
执行一系列 Vim 命令
-
q —— 结束录制
-
@a —— 执行寄存器 a 的宏
-
@@ —— 重复上一次执行的宏
📌 示例:删除 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 或 ~ | 打开帮助菜单 |
Comments NOTHING