vimtutor

  • hjkl 方向键
  • :q 退出
  • x 删除
  • i 插入 insert
  • A 在行末 Append
  • :wq 保存并退出
  • dw 删除至一个单词的末尾
  • d$ 删除至行末
  • de 删除到单词的末尾(包括最后一个字符空格 end)
  • d2w 删除两个单词(其他操作同理)
  • dd 删除整行
  • p 前面删除的东西放置在后面 place
  • r+ 字符 替换一个字符
  • ce 改变文本到一个单词的末尾(删除到末尾并切换到 insert)其实和 cw 一样
  • c+num+motion 一样是 change 操作
  • ctrl+G 查看文件当前光标所处位置和信息
  • G 跳转到指定行
  • G 跳转到文件最后一行,gg 跳转到第一行
  • 行号 +G 跳转到指定行
  • /+ 字符串 搜索 n 下一个,N 上一个,逆向查找用 ?
  • 回到之前位置用 ctrl+O ,ctrl+I 回到更新的位置
  • % 匹配括号
  • :s/old/new 替换字符串 s/old/new/g 替换全行字符串
  • :#,#s/old/new/g 替换指定两行之间的
  • :%s/old/new/g 替换全部 :%s/old/new/g 替换全部且每个都提示是否替换
  • :! command 执行外部命令
  • :w 文件名 保存至文件
  • v motion :w filename 选择区域保存至文件
  • :r file 读取文件并插入到当前位置(也可以用:r !ls 插入命令执行的结果)
  • o 在下面一行插入 O 在上面一行插入
  • a 在光标后面插入
  • R 切换插入模式
  • v motion y 复制 p 放置,也可以 yw 来使用
  • :set ic (Ignore Case) :set noic 查找时忽略大小写,(也可以用/str\c)
  • :set hls(Highlight search) :set
  • F1 或者:help 显示帮助 ctrl+W ctrl+W 在 vim 内切换窗口
  • :help str 查找帮助内容
  • :set nocp 确保不是兼容模式运行
  • ctrl+D 命令行补全
  • :help user-manual 查看用户手册

vim 提供的寄存器

表示符号名称作用
""无名(unnamed)寄存器缓存最后一次操作内容
"0 ~ "9数字(numbered)寄存器缓存最近操作内容,复制与删除有别,"0 寄存器缓存最近一次复制的内容,"1-"9 缓存最近 9 次删除内容
"-行内删除(small delete)寄存器缓存行内删除内容
“a ~ "z"A - ”Z具名(named)寄存器可用于主动指定
":"."%"#只读(read-only)寄存器分别缓存最近命令、最近插入文本、当前文件名、当前交替文件名
"=表达式(expression)寄存器用于执行表达式命令
"*"+"~选择及拖拽(selection and drop)寄存器存取 GUI 选择文本,可用于与外部应用交互
"_黑洞(black hole)寄存器不缓存操作内容(干净删除)
"/模式寄存器(last search pattern)缓存最近的搜索模式

有些时候,你的操作可能已经修改了寄存器,而你没有察觉到。请参阅 :h registers 获取更多帮助。

为了便于理解和记忆,建议大家现在就试一试上面提到的这些操作。操作过程中,你可以随时通过 :reg 来查看寄存器的变化。

在 vim 中进入 visual 视图后使用 “Ny(N 表示特定寄存器编好),将内容复制到特定的剪切板

因此,如果要把数据从 vim 拷贝到系统剪切板,我们只需要在visual 模式下执行 "+y

注意的是,是 双引号 + 加号寄存器 + y。通过这命令 copy 后就可以去浏览器 Ctrl+v 啦

如果从浏览器 Ctrl+c 后,要粘贴到 vim 中,则需要 "+p

"*"+ 有什么差别呢?

  • "* 是在系统剪切板中表示选择的内容
  • "+ 是在系统剪切板中表示选择后 Ctrl+c 复制的内容

标注

如果想跳转到指定的标注,你可以先按下 ' / g' 或者 ` / g` 然后按下标注名。

如果你想定义当前文件中的标注,可以先按下 m 再按下标注名。比如,按下 mm 就可以把当前位置标注为 m。在这之后,如果你的光标切换到了文件的其他位置,只需要通过 'm 或者 `m 即可回到刚才标注的行。区别在于,'m 会跳转回被标记行的第一个非空字符,而 `m 会跳转回被标记行的被标记列。根据 viminfo 的设置,你可以在退出 Vim 的时候保留小写字符标注。请参阅 :h viminfo-' 来获取更多帮助。

如果你想定义全局的标注,可以先按下 m 再按下大写英文字符。比如,按下 mM 就可以把当前文件的当前位置标注为 M。在这之后,就算你切换到其他的缓冲区,依然可以通过 'M 或 `M 跳转回来。

关于跳转,还有以下的方式:

按键跳转至
'[ 与 `[上一次修改或复制的第一行或第一个字符
'] 与 `]上一次修改或复制的最后一行或最后一个字符
'< 与 `<上一次在可视模式下选取的第一行或第一个字符
'> 与 `>上一次在可视模式下选取的最后一行或最后一个字符
'' 与 `'上一次跳转之前的光标位置
'" 与 `"上一次关闭当前缓冲区时的光标位置
'^ 与 `^上一次插入字符后的光标位置
'. 与 `.上一次修改文本后的光标位置
'( 与 `(当前句子的开头
') 与 `)当前句子的结尾
'{ 与 `{当前段落的开头
'} 与 `}当前段落的结尾