云计算百科
云计算领域专业知识百科平台

原生Vim操作大全

Vim模式

  • ​普通模式(Normal mode)​​ – 默认模式,用于导航和操作文本
  • ​插入模式(Insert mode)​​ – 用于输入文本
  • ​可视模式(Visual mode)​​ – 用于选择文本
  • ​命令行模式(Command-line mode)​​ – 用于执行命令
  • 模式切换

  • 普通模式 -> 插入模式

    • i – 在光标前进入插入模式
    • I – 在行首进入插入模式
    • a – 在光标后进入插入模式
    • A – 在行尾进入插入模式
    • o – 在当前行下方新建一行并进入插入模式
    • O – 在当前行上方新建一行并进入插入模式
    • c – 删除选中字符并插入
    • cc – 删除当前行并插入
    • C – 删除到行尾并插入
    • s – 删除当前/选中字符并插入,删除当前字符并进入插入模式时等价于cl
    • S – 等价于cc
  • 普通模式 -> 可视模式

    • v – 进入字符可视模式
    • V – 进入行可视模式
    • Ctrl+v – 进入块可视模式
  • 普通模式 -> 命令行模式

    • : – 进入命令行模式
    • 执行外部命令(原生)
      • :!<cmd> – 执行shell命令
      • :r !<cmd> – 插入命令输出
      • :r <file> – 插入文件内容
    • 选项设置(原生)
      • :set all – 查看所有选项
      • :set <option> – 开启选项
      • :set no<option> – 关闭选项
      • :set <option>? – 查看选项值
      • :set <option>=<value> – 设置选项值
  • 其余模式 -> 普通模式

    • ESC- 返回普通模式
  • 移动操作

    基本移动

    • j – 下移
    • J – 将两行文本连接成一行
    • k – 上移
    • l – 右移
    • h – 左移
    • w – 移动到下一个词开头
    • W – 移动到下一词开头(以空格划分词)
    • e – 移动到下一个词末尾
    • E – 移动到下一个词末尾(以空格划分词)
    • b – 移动到上一个词开头
    • B – 移动到上一个词开头(以空格划分词)

    行内移动

    • 0 – 移动到行首
    • $ – 移动到行尾
    • ^ – 移动到行首第一个非空白字符
    • % – 移动到配对的字符处
    • f<char> – 移动到当前行下一个<char>字符
    • F<char> – 移动到当前行上一个<char>字符
    • t<char> – 移动到当前行下一个<char>字符前
    • T<char> – 移动到当前行上一个<char>字符后
    • ; – 重复上次f/F/t/T命令
    • , – 反向重复上次f/F/t/T命令
    • 折行内移动
      • gj – 移动折行视觉上的下一行
      • gk – 移动到折行视觉上的上一行
      • g0 – 移动到折行视觉上的开头
      • g$ – 移动到折行视觉上的末尾
      • g^ – 移动到折行视觉上的第一个非空字符

    跨行移动

    • gg – 移动到文件开头
    • g, – 移动到最近一次编辑位置(原生)
    • G – 移动到文件末尾
    • <num>G – 移动到指定行号,是:<num>的快捷键
    • H – 移动到屏幕顶部
    • M – 移动到屏幕中间
    • L – 移动到屏幕底部
    • } – 移动到下一个段落
    • { – 移动到上一个段落
    • ]] – 移动到下一个函数/代码块
    • [[ – 移动到上一个函数/代码块

    视图调整

    • Ctrl+y – 向上一行
    • Ctrl+e – 向下一行
    • Ctrl+f – 向下翻页
    • Ctrl+b – 向上翻页
    • Ctrl+u – 向上半页
    • Ctrl+d – 向下半页
    • zz – 聚焦光标

    标记定位

    • m<letter> – 设置标记
    • '<letter> – 跳转到标记行首
    • :marks – 查看当前文件所有标记
    • :delmarks <letter> – 删除对应标记

    编辑操作

    文本缩进

    • >> – 普通模式下向右缩进当前行
    • > – 可视模式下向右缩进当前行
    • << – 普通模式下向左缩进当前行
    • < – 可视模式下向左缩进当前行

    文本折叠(原生)

    • zf – 对选中行创建折叠
    • zd – 删除选中行的折叠
    • zo – 打开折叠
    • zc – 关闭折叠
    • zj – 移动到下一个折叠
    • zk – 移动到上一个折叠
    • :mkview – 保存折叠
    • :loadview – 加载折叠

    文本剪切

    • x – 剪切当前字符,等价于dl
    • X – 剪切前一个字符
    • d – 剪切选定内容
    • dd – 普通模式下剪切当前行
    • D – 剪切到当前行结尾

    复制粘贴

    • y – 复制选中内容
    • yy – 普通模式下复制整行
    • Y – 等价于yy(历史原因不是复制到行尾)
    • p – 在光标后粘贴
    • P – 在光标前粘贴
    • "<reg>y – 复制到指定寄存器
    • "<reg>p – 从指定寄存器粘贴

    重复、撤销&重做

    • . – 重复上次编辑操作
    • u – 撤销
    • Ctrl+r – 重做

    查找替换

    • /<pattern> – 向下查找<pattern>
    • ?<pattern> – 向上查找<pattern>
    • n – 重复上次查找
    • N – 反向重复上次查找
    • u/U – 切换选中的文本为小写/大写
    • ~ – 切换当前字符大小写
    • 替换命令,其中分隔符可以是/、.或|
      • :s|old|new – 替换当前行第一个匹配
      • :s|old|new|g – 替换当前行所有匹配
      • :'<,'>s|old|new|g – 替换当前选中行所有匹配
      • :'<,'>s|old|new|gc – 交互式替换当前选中行匹配
      • :%s|old|new|g – 替换整个文件所有匹配
      • :%s|old|new|gc – 交互式替换整个文件匹配

    批量操作

    组合命令

  • 重复操作:<num> + <operation>
    • 3j – 向下移动3行
    • 5dd – 删除5行
    • 10x – 删除10个字符
    • 2p – 粘贴2次
  • 文本对象操作:<operator> + <number> +<i/a> + <文本对象>,其中常见的文本对象有单词w,句子s,段落p,引号"/',括号()/[]/{}/<>,标签t
    • daw – 删除一个单词(包括周围空格)
    • d2w – 删除两个单词
    • di( – 删除括号内内容
    • ci" – 修改引号内内容
    • yit – 复制HTML标签内容
  • 宏&寄存器

    • q<reg> – 开始录制到寄存器
    • q – 停止录制
    • @<reg> – 执行寄存器中的宏
    • @@ – 重复上次执行的宏
    • "<reg> – 指定寄存器
    • :reg – 查看寄存器内容
    • :reg <reg> – 查看特定寄存器内容

    文件操作

    信息统计

    • Ctrl+g – 显示光标位置状态(原生)

    保存退出

    • :w – 保存文件
    • :w <file> – 另存为
    • 😡 – 保存并退出,是:wq的快捷键
    • :q – 退出
    • :q! – 强制退出不保存

    文件跳转

    • :e – 创建缓存文件(原生)
      • tab – 提示与补全当前目录下的文件(夹),左右选择当前目录下的文件,上下选择上/下一级目录
      • :ls – 查看缓存文件
      • :b+<编号> – 切换缓存文件
      • :bp/bn – 上下切换缓存文件
      • :bd – 删除当前缓存文件
      • :<编号>+bd – 删除对应编号缓存文件
    • Ctrl+o – 跳转到上一个文件中
    • Ctrl+i – 跳转到下一个文件中
    • gd – 跳转到局部定义
    • gD – 跳转到全局定义
    • Ctrl+z – 挂起vim,返回终端中(通过在终端中用fg命令返回)
      • 当有多个任务被挂起,通过jobs在终端查看任务编号n
      • 通过fg %n返回

    窗口分割(原生)

    • :vs – 垂直分割窗口
    • :sp – 水平分割窗口
    • Ctrl+w h/j/k/l – 在窗口间移动
    • Ctrl+w w – 切换到下一个窗口
    • Ctrl+w c – 关闭当前窗口
    • Ctrl+w o – 关闭其他窗口
    • Ctrl+w r – 交换窗口位置
    • 窗口宽度/高度调整
      • Ctrl+w > – 增加窗口宽度
      • Ctrl+w < – 减少窗口宽度
      • Ctrl+w + – 增加窗口高度
      • Ctrl+w – – 减少窗口高度
    • 窗口宽度/高度最大化/回归默认
      • Ctrl+w | – 最大化当前窗口宽度
      • Ctrl+w _ – 最大化当前窗口高度
      • Ctrl+w = – 均衡窗口大小

    标签页管理(原生)

    • :tabe <file> – 新建标签页
    • :tabc – 关闭当前标签页
    • :tabo – 关闭其他标签页
    • gt – 下一个标签页
    • gT – 上一个标签页
    • ngt – 切换到第n个标签页
    • :a – 全选所有标签页

    Vim配置

    打开文件时,所有配置都会在默认配置的基础上执行。而在配置文件中用:so的时候,则是在当前配置的基础上执行。

    基本配置

    " 设置行号
    set number

    " 设置<leader>
    nnoremap <Space> <Nop>
    let mapleader = " "

    " 在视觉行移动
    nnoremap j gj
    nnoremap k gk
    nnoremap 0 g0
    nnoremap $ g$
    nnoremap ^ g^

    " 让复制粘贴使用系统剪切板
    vnoremap y "+y
    vnoremap x "+x
    nnoremap p "+p
    nnoremap <leader>p ""p

    " 全选
    nnoremap <C-a> ggVG

    " 保存
    nnoremap <C-s> :w<CR>

    " 窗口间移动
    nnoremap <C-h> <C-w>h
    nnoremap <C-j> <C-w>j
    nnoremap <C-k> <C-w>k
    nnoremap <C-l> <C-w>l

    " 取消高亮
    nnoremap <silent><Esc> :nohl<CR>

    " 消除^M
    nnoremap <C-m> :%s.\\r..g<CR>

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 原生Vim操作大全
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!