vim
开始是命令模式
1) i,a,o进入输入模式,ESC 回到命令模式
2) :进入底线命令模式,回车结束运行
最后输入 :wq 储存后离开 vi
如建立文件 vim wenyu.txt
直接输入 vi 文件名 就能够进入 vi 的一般模式。vi 后面一定要加文件名,不管该文件存在与否!
1. 一般模式
1.1 移动光标
可以用数字+动作
- ctrl+f==pagedown 向下翻页
- ctrl+b==pageup 向上翻页
- ctrl+d 向下翻半页
- ctrl+u 向上翻半页
- + 光标移动到非空格符的下一行
- - 光标移动到非空格符的上一行
- H 移动到屏幕的最上方那一行的第一个字符
- M 移动到屏幕的中央那行的第一个字符
- L 光标移动到屏幕的最下一行的第一个字符
- G 移动到这个档案的最后一行
- nG 移动到这个档案的第 n 行
- gg 移动到这个档案的第 1 行
- n后space,先输入数字n再空格键,光标会向右移动这一行的 n 个字符
- n后enter 光标会向下移动 n 行
- 0或Home键 移动到这一行的最前面字符处
- $或End 移动到这一行的最后面字符处
搜索替换
- /word 向光标之下寻找一个名称为 word 的字符串
- ?word 向光标之上寻找一个字符串名称为 word 的字符串
- n 重复前一个搜寻的动作
- N 与 n 刚好相反,为『反向』进行前一个搜寻动作
- :n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 并取代为 word2
- :1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行
- :1,$s/word1/word2/gc 或 :%s/word1/word2/gc 在取代前显示提示字符给用户确认 (confirm) 是否需要取代
删除 复制 粘贴
- x =delete向后删除一个字符 ,X =backspace为向前删除一个字符
- nx 连续向后删除 n 个字符
- dd 剪切游标所在的那一整行(常用),用 p/P 可以粘贴。
- ndd 剪切光标所在的向下 n 行
- d1G 删除光标所在到第一行的所有数据
- dG 删除光标所在到最后一行的所有数据
- d$ 删除游标所在处,到该行的最后一个字符
- d0 删除游标所在处,到该行的最前面一个字符
- yy 复制游标所在的那一行
- nyy 复制光标所在的向下 n 行
- y1G 复制游标所在行到第一行的所有数据
- yG 复制游标所在行到最后一行的所有数据
- y$ 复制光标所在的那个字符到该行行尾的所有数据
- p,P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
- J 将光标所在行与下一行的数据结合成同一行
- c 重复删除多个数据
- u 复原前一个动作
- ctrl+r 重做上一个动作
- . 重复前一个动作
2. 切换到编辑模式
字符按键+shift 输入字符
回车键换行
del 删除后一个字符
HOME/END 移动光标到行首/行尾
page up/down 上下翻页
insert 切换输入、替换模式
esc退出
- i,I i为从目前光标所在处输入, I 在目前所在行的第一个非空格符处开始输入
- a,A a 从目前光标所在的下一个字符处开始输入, A 从光标所在行的最后一个字符处开始输入
- o,O o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行
- r,R r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;
3. 切换到指令行模式
:进入底线命令模式,
!常有强制的意思
- :w 写入
- :w! 文件只读时强制写入,需要权限
- :q 离开vi
- :q! 离开且不保存
- wq 保存后离开,wq!强制保存离开
- ZZ 保存退出
- ZQ 不保存退出
- :w [filename] 另存为
- :r [filename] 读入另一个文件,内容加到游标所在行后面
- :n1,n2 w [filename] 将 n1 到 n2 的内容写入 filename
- :! command 暂时离开 vi 到指令行模式下执行 command 的显示结果
vim 环境的变更
- :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
- :set nonu 与 set nu 相反,为取消行号