什么是VIm
- vim 是跨平台的一看轻量级编辑器
- vim 可以是其他编辑器中的一款插件
vim 能做什么
- 命令行 编辑文件内容
- 在编辑器中编辑文件内容
vim 模式
- 插入模式(正常模式,可以正常输入)
- 编辑模式(可以使用vim快捷键的模式)
- 命令模式(也叫末行模式,可以使用一些vim命令, 在移植的编辑器插件中, 有的可能用不了)
- 视图模式(也叫选择模式, 可以移动选中)
模式切换
插入模式
切换到编辑模式
:ESC
命令模式
切换到编辑模式
:ESC
视图模式
切换到编辑模式
:ESC
编辑模式
切换到命令模式
::
(使用英文状态下的冒号)编辑模式
切换到视图模式
:v
编辑模式
切换到插入模式
:- 在
光标当前位置前
并切换到插入模式:i
- 在
光标当前位置后
并切换到插入模式:a
删除光标当前位置
并切换到插入模式:s
- 在
光标当前行的下一行
切换到插入模式:o
- 在
光标当前行的上一行
切换到插入模式:O
- 在
光标的当前行的行首
切换到插入模式:I
- 在
光标的当前行的行尾
切换到插入模式:A
删除当前行内容
并 切换到插入模式:cc
- 在
注意区别大小写的问题
编辑模式下的常用命令
移动光标
光标 向左移动
一个位置 :h
光标 向下移动
一行:j
光标 向上移动
一行:k
光标 向右移动
一个位置:l
光标 向右移动
一个 英文单词
的距离: w
或 e
或 E
光标 向左移动
一个 英文单词
的距离:b
或 ge
或 gE
跳转到 文件的第一行
: gg
跳转到 文件的最后一行
: G
跳转到指定行
: ngg
或者 nG
光标移动到行首(不切换模式):^
或者数字 0
光标移动到行尾(不切换模式):$
把光标移动到 光标所在行
的下一个 字符(任意字符)
位置: fa 移动到同一行下一个a字符的位置
把光标移动到 光标所在行
的上一个 字符(任意字符)
位置: Fa 移动到同一行上一个a字符的位置
重复执行 f
命令:;
使用英文状态下的分号
n:代表任意一个数字 number
移动一个单词的距离, 各种方式之间有细微的差别,但是…差别不大
移动视图
将光标所在行 移动到 屏幕的中间
: zz
将光标所在行 移动到 屏幕顶端
:zt
将光标所在行 移动到 屏幕底端
:zb
把光标移到屏幕最顶端一行:H
把光标移到屏幕中间一行: M
把光标移到屏幕最底端一行:L
windows或者其他编辑器插件可能计算的不准确HML
会移动光标
编辑内容
复制
光标所在行:yy
复制
光标所在行一下 n行
: nyy
从 光标当前位置 复制
到 行首位置: y^
从 光标当前位置 复制
到 行首位置: y$
从 光标当前位置 复制
到 文件第一行: ygg
从 光标当前位置 复制
到 文件最后一行: yG
剪切
光标所在行:dd
剪切
光标所在行一下 n行
: ndd
从光标当前位置 剪切
到 行首位置: d^
从光标当前位置 剪切
到 行首位置: d$
从 光标当前位置 剪切
到 文件第一行: dgg
从 光标当前位置 剪切
到 文件最后一行: dG
删除
光标当前位置后的 一个字符
: x
删除
光标当前位置后的 多个字符
: nx
删除
光标当前位置后的 一个字符
(会进入插入模式): s
删除
光标当前位置后的 多个字符
(会进入插入模式): ns
删除
当前行的内容(会进入插入模式): cc
或者 S
删除
当前行后的n行的内容(会进入插入模式): ncc
或者 nS
删除
当前光标所在位置的后一个字符
(会进入插入模式):cl
删除
当前光标所在位置的后n个字符
(会进入插入模式):cnl
删除
当前光标所在位置的后一个单词
(会进入插入模式):cw
删除
当前光标所在位置的后n个单词
(会进入插入模式):cnw
或 ncw
从光标当前位置 删除
到 行首位置(会进入插入模式): c^
从光标当前位置 删除
到 行首位置(会进入插入模式): c$
像cnw dnw ynw
这些带操作次数的命令,都可以数字开头形式操作ncw ndw nyw
删除与剪切不同, 删除的内容不能用 p
来粘贴
粘贴
在光标所在位置粘贴 一次
:p
粘贴
在光标所在位置粘贴 n次
:np
整行复制、剪切会带有换行符, 所以粘贴的内容会在光标当前位置的下一行
替换
当前光标所在位置的 一个字符
: r
输入替换的 字符
替换
当前光标所在位置的 一个字符
: r
输入替换的 字符
先按 r
然后在输入替换的字符
撤销
上一次操作(等于:ctrl + z
):u
撤销
多次操作:nu
恢复
上一次操作(等于:ctrl + y
): ctrl + r
如果是在windows中,或者是编辑器的插件,使用ctrl键的可能会与其他快捷键冲突
合并
当前行和下一行的内容:J
合并
当前行和下n行的内容:nJ
合并的如果是空行会删除空行
排版
向左缩进
:>>
向右缩进
:<<
末行模式的常用操作
查找内容
查找内容: 在编辑模式下输入/
上一个查找到的内容:N
下一个查找到的内容:n
忽略大小写:/test\c
替换内容
替换内容:在编辑模式下输入:
英文状态下的冒号
替换语法:[替换范围]s/查找内容/替换内容/[额外参数]
:3,5s/findContent/replaceContent/ig
多文件编辑(切换标签)
上一个标签::prev
下一个标签::next
可以缩写为 n1
最近编辑过的文件: gt
保存 && 退出编辑器
保存并退出: :wq
或 :x
强制保存并退出: :wq!
或 :x!
不保存退出::q
不保存强制退出::q!
这篇文章有详细说明
最后
- 看似很多命令,但是都有规律
- 记住一些常用的就可以了,可以渐进式学习使用
- vim是把双刃剑,锋利无比但是需要时间掌控
linux 终端 常用.vimrc 配置选项
" 显示行号
set nu
" 当前行显示一个下划线
set cul
“ 设置 tab 为 4个空格
set ts=4
" 设置文件编码
set encoding=utf8
set fileencoding=utf8
” 高亮当前行
set cursorline
hi CursorLine cterm=NONE ctermbg=red ctermfg=white guibg=NONE guifg=NONE