Vim 指令

Linux

Posted by elmagnifico on May 26, 2017

Vim

基础帮助可以 直接在 vim 下输入 help 获得

前面会教你如何进行基础操作和跳转,这很重要,会了光标的移动和跳转之后,就可以查看 help 文件下各种命令,基本都是通过跳转来查看的。

在其中发现一个三十分钟的基础教程,在终端中输入

vimtutor

然后根据教程来操作,学习如何使用 vim ,大概有七章,都看过之后基础命令基本都会了

光标移动

基础移动
     k
    h l
     j

对应实际的光标上下左右

跳转

  • CTRL - ] 跳转到目标定义的地方
  • CTRL - t 返回上次跳转点
  • CTRL - o 返回上次跳转点(根据之前的跳转记录)
  • CTRL - i 往前跳转(根据之前的跳转记录)

  • 数字n - w 向右移动到第 n 个单词的开头处 除了-以外 其他符号会被当作一个单词来处理
  • 数字n - e 向右移动到第 n 个单词末尾 除了-以外 其他符号会被当作一个单词来处理
  • 数字n - G 跳转到指定行

  • 0 移动到行首
  • $ 移动到行尾
  • ^ 移动到本行第一个不为空格的字符
  • G 跳转到最后一行
  • gg 跳转到第一行

  • H 移动到当前页面的首行
  • M 移动到当前页面的中间行
  • L 移动到当前页面的尾行

  • [[ 移动上一个 { 所在位置,如果没有就是首行
  • ]] 移动下一个 { 所在位置,如果没有就是尾行
  • { 移动到上一个为空行的位置
  • } 移动到下一个为空行的位置
  • ( 移动到上一段首
  • ) 移动到下一段首

  • '. 跳转到最后修改的一行首
  • `. 跳转到最后修改的准确位置
  • g; 在整个修改位置表中来回跳转

  • Fx 向左搜索为x的字符并且移动到其位置,同理x可以替换为其他字符

  • zt 将光标所在行移动到屏幕顶行显示
  • zb 将光标所在行移动到屏幕底行显示
  • zz 将光标所在行移动到屏幕中间行显示

  • CTRL - F 向下翻页
  • CTRL - B 向上翻页

  • % 对光标处的括号进行匹配,跳转到与其匹配的另一个括号

增删改查

  • i 进入插入模式,并在光标所在位置的左侧插入内容
  • a 进入追加模式,并在光标所在位置的右侧插入内容
  • A 进入追加模式,并在光标所在行末,插入内容

  • p 会将栈中内容插入到光标所在行的下一行,粘贴

  • o 在光标所在行下方插入一行,并进入插入模式
  • O 在光标所在行上方插入一行,并进入插入模式

  • x 删除光标所在位置的内容
  • X 退格删除
  • s 删除光标所在位置内容,并插入
  • S 删除光标所在行,并在原来的行首处插入

  • dw 删除光标所在位置到下一个单词的开始处,中文会识别为所有连着的字,英文则是一个单词, 都不包括符号。
  • de 删除光标所在位置到单词末尾
  • d$ 删除当前光标所在位置到行末
  • dd 删除整行,删除的行内容会被压入栈,可以当成删除剪贴来用。
命令和对象

到这里就可以发现其实命令是两个部分组成:

  1. 操作符:d
  2. 操作次数:数字
  3. 操作对象:w(到下一个单词首) e(当前单词尾) $(行末)

这里的 w e $ 的概念同样也适用于其他的操作中。

  • r 修改光标处的字符内容
  • R 连续修改光标处的字符内容

  • C 表示从当前位置删除到行尾,并进入插入模式
  • c 表示从当前位置删除一定内容,并进入插入模式,但是不能单独使用,必须配合操作数/对象
    • w 从当前光标位置删除一个字符,并进入插入模式
    • $ 从当前光标位置删除到行尾,并进入插入模式
  • cc 删除本行所有内容,并在原本的行首位置进入插入模式

  • * 查找光标初的word
    • cw 修改目标word
    • esc/CTRL - [ 退出到正常模式 (不可以使用CTRL-C 无法触发insert退出事件)
    • . 重复之前的操作,替换所有word

如果要取消查找的高亮部分,那么必须得 :noh 比较麻烦

  • guu 整行内容修改为小写
  • gUU 整行内容修改为大写
  • g~~ 整行内容大小写翻转

  • CTRL - a 自动把光标下的数字增加1
  • CTRL - X 自动把光标下的数字减少1

  • ? - 字符 可以在当前文件从下到上搜索该字符
  • / - 字符 可以在当前文件从上到下搜索该字符
    • n 向下查找
    • N 向上查找
    • :set ic 可以设置忽略大小写
    • :set hls 设置高亮显示查询目标
    • :set ls 实时部分匹配,会实时根据输入的搜索内容匹配显示
    • :set noic 不忽略大小写
    • :set nohlsearch 移除高亮显示 等效于 :noh
    • 在参数前加 no 可以禁用对应的选项
    • \c 后缀 单次查找忽略大小写
  • :s/xx/xxx 使用xxx替换xx 只替换光标所在行第一个匹配的
    • /g 后缀参数 替换整行匹配内容
    • /gc 后缀参数 替换整行匹配内容,对每个匹配串进行询问是否替换
    • 1,100 前缀参数 替换1-100行匹配的内容
    • % 前缀参数 替换全文匹配内容

其他指令

Vim 中 leader 是 \ 键

撤销/重做

  • u 撤销上次操作
  • U 撤销改行的所有操作
  • CTRL - r 重做上次的操作

复制粘贴

  • y 复制,可以配合参数 w来使用,从而复制一个单词
  • yy 复制当前行
  • p 粘贴
  • +”y 复制到外部剪贴板
  • +”p 从外部剪贴板复制进来

补全

  • CTRL - p 兼具在补全列表中选择上一个
  • CTRL - n 兼具在补全列表中选择下一个

外部命令

  • :! - 外部命令 可以在vim中调用外部命令,但是会短暂切到外部,然后按任意键切回来

状态

  • CTRL - G 显示当前行状态以及文本状态信息

文件操作命令

  • :!dir 显示当前目录内容
  • :!ls 显示当前目录内容
  • :w filename 保存文件为filename
  • :!rm filename 删除名为filename的文件
  • q 退出
    • !不保存退出
    • a 对所有打开的文件操作
  • :e 表示编辑,常用来切换文件
    • :e . 就会显示当前路径,然后选择文件,即可编辑。
  • ZZ 保存退出
  • ZQ 不保存退出

多行操作

  • v 进入预览行模式,移动光标进行选择
  • v 选择文本 d 删除选择内容
  • v 选择文本 y 复制文本 可用p粘贴
  • v 选择文本 = 自动调整选定行的缩进

提取合并

  • :r filename 将名为filename的文件内容提取到光标处
  • :r !ls 将 ls命令的输出 提取到光标处,同理其他命令也可以
  • J 合并当前行和下一行,其实就是去掉本行回车符

缩进

进入预览模式,然后选择多行,使用 < 或 > 进行缩进

  • > 向右缩进
  • < 向左缩进
  • == 自动调整缩进本行

多列操作

一般要求对其的情况下进行同一列或者多列操作较为方便

  1. CTRL-V 进入可视列模式
  2. A / I / c 进行追加 插入 删除 (只会显示一行内容,esc/CTRL - [ 退出到正常模式 (不可以 使用CTRL-C 无法触发insert退出事件)后会更新其他行内容)
  3. esc 更新其他行

帮助

  • :help 操作指令 可以查询该指令如何使用

进阶

阅读用户手册

  • :help user-manual

Quote

https://zhuanlan.zhihu.com/p/25045662

http://www.runoob.com/linux/linux-vim.html

http://www.jianshu.com/p/bcbe916f97e1

http://blog.csdn.net/xiajun07061225/article/details/7039413

https://www.zhihu.com/question/27478597

https://www.zhihu.com/question/20833248

https://www.zhihu.com/question/20151659