跳到主要内容

Vim

vim 基础

  • 进入insert模式的两种方式,a光标在后,i光变在前

  • v进入选中模式

  • V进入行选中模式

  • ctrl + [ esc退出insert模式 (改成jj)

  • h左、j下、k上、l

  • 回到行首

    • 0回到最前面
    • ^回到第一个不是 blank 字符的位置 (改为H)
  • 回到行尾

    • $回到最后面
    • g_回到最后一个不是 blank 字符的位置 (改为L)
  • gg跳到第一行

  • G跳到最后一行

  • J将两行合并成一行

  • 插入

    • A在行尾输入
    • I在行首插入
    • o下一行插入
    • O上一行插入
    • s删除当前的字符并进入insert模式
    • S删除当前行并进入insert模式,与cc效果相同
  • yy复制当前行

  • p粘贴yy复制的行

  • dd删除当前行

  • 操作符

    • d删除
    • c删除并进入insert模式
    • C删除当前行光标后的所有字符并进入insert模式
    • y复制
  • 基于单词/字串的移动

    • w向右移动到单词的开头
    • e向右移动到单词的结尾
    • b向左移动到单词的开头
    • ge向左移动到单词的结尾
  • 当前行跳转

    • f{char}本行内跳到下个 char 位置
    • F{char}本行内跳到上个 char 位置
    • ;重复上一次字符查找操作
    • ,反向查找上次的查找命令
  • u撤销

  • Ctrl + r 重做,撤销的反向操作

  • i inner a around 例子:

    • iwaw 选中单词
    • i(iba(ab 选中()内的内容,a包含()
    • i{ib
    • i" i' i< i[
    • it tag 标签内的
  • 折叠代码

    • zc折叠
    • zo展开
  • x删除一个字符

  • r替换字符,R不断替换当前字符

  • /搜索,例如:/log搜索 log

    • n下一个匹配结果
    • N上一个匹配结果
  • *#进行当前单词的向后与向前匹配

  • % 匹配括号移动,包括 ()[]{}

  • :set hls设置搜索高亮,:set nohls关闭搜索高亮

  • gu大写转小写,gU小写转大写

Vim for VS Code

  • ctrl + shift + ectrl + 0切换资源管理器与编辑区
  • ctrl + 1切换到编辑区光标处于编辑区
  • space打开文件光标仍在资源管理器
  • 资源管理器
    • 移动光标j k
    • 折叠文件夹h
    • 展开文件夹enterl
    • 新建文件a
  • 跳转定义
    • f12 或者gd跳转到文件
    • ctrl + o返回
  • 查看函数的描述gh
  • gt跳到下一个标签页,gT跳到上一个标签页
  • Ctrl + \分屏
  • gb选中多个相同的单词
  • Ctrl + F4 关闭 Tab 页
  • Alt + F4 关闭 VS Code

Vim 插件

  • vim-surround

    • y s [motion] [desired] Add desired surround around text defined by [motion]
    • d s [existing] Delete existing surround
    • c s [existing] [desired] Change existing surround to desired
    • S [desired] Surround when in visual modes (surrounds full selection)

    示例

    {
    embeddedLanguageFormatting: "off"
    }
    // v操作选中embeddedLanguageFormatting,S 加上"

Vim 配置文件

文件位置 ~/.vimrc

文件中不能包含注释

call plug#begin('~/.vim/plugged')

Plug 'vim-airline/vim-airline'

call plug#end()

# 设置行号
set number
# 按下 Tab 键时,Vim 显示的空格数
set tabstop=2
# 映射延迟时间
set timeoutlen=300
# 语法高亮
syntax on
# 搜索高亮
set hls
# 将系统剪切板与匿名寄存器绑定,不同操作系统不一样
set clipboard=unnamed

# 键位映射
inoremap jj <esc>
nnoremap H ^
nnoremap L g_

Vim 使用系统剪切板

其他

我的现代化Neovim配置