vim基本操作
打开文件进入vi后,为命令模式「command mode」;可以编辑文本内容,为插入模式「insert mode」;执行内/外部的命令行,为底行模式「last line mode」。
命令模式:在其他模式下按Esc键,返回命令模式。
删除
x:删除光标后面字符,X:删除光标前面字符;6x/6X:删除光标后、前6个字符。
dd:删除光标整行,并把删除的行存到剪贴板里;6dd:删除光标及向下6行,并把删除的行存到剪贴板里。
输入ggdG清空所有内容(gg移到第一行,d删除,G最后一行)
输入u撤消操作,按一次恢复一次,输入4u则撤消最近的4次操作。按 Ctrl-R 为重做,可以将撤消<撤消命令的操作>。
复制与粘贴
yw:复制光标到行尾的字符,6yw:复制光标后6个字符;
yy:复制整行,3yy:复制光标及向下3行。
p:粘贴到光标的位置,得到移动一行或多行的组合命令:ddp或6ddp,当然dd之后,要移动光标,不然就是向下移动一行。
光标移动
行首:^,行尾:$,首行:gg,尾行:G;
在当前光标行,再向下移11行,输入11;而将光标移到第11行,输入11G。
按Ctrl+G 为显示当前光标所在行的行号及总行数
查找
输入 /key或?key+回车键,进行正向搜索或逆向搜索key;再使用n查找下一个,N查找上一个。区分大小写,支持正则。
插入模式:在命令模式,按i、a、o进入,区别在于:
- i:光标所在位置,进行输入(相似命令cw)
- a:光标所在位置的下一个位置,进行输入
- o:光标所在行的下面插入新行,进行输入
底行模式:在命令模式下,按“:”键进入
| 输入 | 描述 |
|---|---|
:1,$d | 删除第1~最后一行,输入:3,5d删除第3行到第5行。 |
:15 | 定位到第15行 |
:set nu | 显示行号命令nu是number的简化,取消显示为 :set nonu |
:?aa | 在文件中查找aa字符,回车后按n/N查找下一个。等效命令:/aa |
:w [filename] | 保存当前文件 |
:e | 重新加载当前文件 |
:q | 退出vi |
:x! | 强制作用,与其他内部命令结合使用,比如::wq!、:q!、:e! |
:!<bash CMD> | 在不退出vim的情况下,执行外部命令。比如::!ll ~、:!bash |
替换
:%s/要替换的字符串/新字符串/g
- 其中: % 表示对整个文件进行操作,s 表示替换,g 表示全局替换。例如,要将文件中所有的 “apple” 替换为 “orange”,可以执行:
:%s/apple/orange/g - 使用 c 选项可以在每次替换前进行确认,避免误替换:
:%s/apple/orange/gc - 只在第 10 行到第 20 行之间替换:
:10,20s/apple/orange/g
自定义快捷键
vim用户级配置文件~/.vimrc,系统级配置文件/etc/vim/vimrc,可以在这些文件添加set number行,则vim默认显示行号。
| 功能键在vim中的 keyname | 不同模式下,定义命令 |
|---|---|
Ctrl 键对应 <c>空格 键对应 <space>alt 键对应 <a> 或者 <m>esc 键对应 <esc>退格键对应 <bs>回车键对应 <cr>shift 键对应 <shift>f1 到 f12 对应 <f1> 到 <f12> | map: 定义所有模式下的通用快捷键 imap: 定义插入模式下的快捷键 nmpa: 定义命令模式下的快捷键 vmap: 定义视图模式下的快捷键 |
功能键与普通字母做组合键时,将字母键放入到 <>中,并以 - 和功能键做分割,比如说
- 在命令模式下,输入
:map <c-d> dd来将Ctrl+d映射为dd - 在
~/.vimrc文件,增加行nmap <c-j> ddp<cr>来将Ctrl+j映射为ddp(向下移动一行)- 要注意:组合键或按键,不能使用已有的。比如
nmap <a-j> ddp<cr>就没有效果。
- 要注意:组合键或按键,不能使用已有的。比如
视图/可视(选择与操作)模式
用于高效地选择和编辑文本块,快速选定文本区域,并高亮显示;对选中的内容可进行复制、粘贴、删除等操作。
| 命令模式下,按 | 视图下操作命令 |
|---|---|
v:基本模式V:行模式CTRL+v:块模式 | y:复制选定的文本d:删除选定的文本p:粘贴复制的文本 |
移动整行,要麻烦一些,在选中后,再输入
,在底行的绿光标位置继续输入
:m '<-2回车,将把选定行,向上移动一行。:m '>+1回车,将把选定行,向下移动一行。效果同ddp
发表回复