启动和退出

启动

vi 打开vi
vim 打开vim
vi/vim filename 打开文件

保存、退出等指令

:w 保存
:w! 若文件属性为只读时,强制写入该文件。不过,到底能不能写入,还是跟你对该文件的文件权限有关
:q 退出
:q! 不保存强制退出
:wq 保存退出
:x 保存退出,等同于:wq
:wq! 强制保存退出
ZZ 若文件没有更动,则不保存离开,若文件已经被更动过,则保存后离开
:w filename 另存为,将数据内容存成另一个文件
:r filename 将filename这个文件内容加到光标所在行后面
:n1,n2 w filename 保存 n1 到 n2 的内容为 filename 文件
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果。例如 :! ls /home即可在 vi 当中察看 /home 底下以 ls 输出的文件信息

模式

  • 普通模式:刚打开要编辑的文件时(或新建一个文件时),vim编辑器会进入普通模式;
  • 命令行模式:在普通模式下按下冒号键,光标会移动到最下方消息行,然后出现冒号,等待输入命令;
  • 编辑模式:在普通模式下输入i、I、a、A、o、O、r、R可进入,编辑模式下,按ESC键可返回普通模式

i 从光标所在处插入
I 从当前光标所处行的第一个非空格符处插入
a 从当前光标的下一个字符处插入
A 从当前光标所处行的最后一个字符处插入
o 从当前光标所在行的下一行插入一行
O 从当前光标所在行的上一行插入一行
r 按r键后再输入一个字符,即可替换光标所在位置的单个字符
R 按R键后再输入一串字符,可逐个替换从光标所在位置开始的一串字符,按ESC结束

光标移动

centos vim强制保存退出_linux

编辑

删除

x/X x 为删除当前光标位置的字符, X 为删除当前光标位置的前一个字符
nx n为数字,从当前光标位置开始连续向后删除 n 个字符
dd 删除光标所在的那一整行
ndd n 为数字。删除从光标所在行开始向下的 n 行,例如 20dd 则是删除从当前光标所在行开始往下 20 行
d1G 删除从光标所在行到第一行的所有数据
dG 删除从光标所在行到最后一行的所有数据
d$ 删除从光标所在处,到该行的最后一个字符
d0 删除从光标所在处前一个字符,到该行的第一个字符

复制与黏贴

yy 复制光标所在的那一行
nyy n为数字。复制从光标所在行开始的向下 n 行,例如 20yy 则是复制从光标所在行开始往下 20 行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到最后一行的所有数据
y0 复制光标所在处的前一个字符到该行行首的所有数据
y$ 复制光标所在处的字符到该行行尾的所有数据
p/P p 为将已复制的数据黏贴到光标下一行,P 则为黏贴到上一行

J 将光标所在行与下一行的数据结合成同一行
u 回退,类似于Ctrl+z
Ctrl+r 前进,类似于Ctrl+y
. 重复前一个动作。 如果你想要重复删除、重复黏贴等动作,按下小数点.就好了

查找和替换

/word 向光标之下寻找一个字符串名称为 word 的字符串
?word 向光标之上寻找一个字符串名称为 word 的字符串
n 重复前一个搜寻的动作
N 与 n 刚好相反,为反向进行前一个搜寻动作。 例如 /word 后,按下 N 则表示 ?word,向上寻找word字符串
:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串替换为 word2 , 比如:在 100 到 200 行之间搜寻 null并取代为 NULL 则 :100,200s/null/NULL/g
:1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串替换为 word2
:1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串替换为 word2 。且在替换前显示提示字符 给用户确认 (confirm) 是否需要替换

编辑多个文件

1. 未打开vim时

  • 水平分割显示:vi -o filename1 filename2
  • 垂直分割显示:vi -O filename1 filename2

2. 打开vim后添加文件

  • 水平分割显示:“:sp filename”
  • 垂直分割显示:“:vs filename”

3. 关闭窗口

  • 关闭光标所在的窗口:“:q” 或 “:close”
  • 关闭除光标所在的窗口之外的其他窗口:“:only”
  • 关闭所有窗口:“:qa”

4. 切换窗口

  • 窗口之间切换时:ctrl + ww,即按住ctrl键,按两下w键
  • ctrl + w + h/j/k/l 光标会切换到当前窗口的 左|下|上|右 侧的窗口