Linux 私房菜:vi 与 vim 编辑器

本文内容精简、整理、摘抄、有感于《鸟哥的Linux私房菜 - 基础篇第四版》第九章 • vim程序编辑器。

vi/vim模式

  • 一般指令模式 ( command mode )

    • vi/vim File,打开文件后即进入当前模式
  • 编辑模式 ( edit mode )

    • 一般指令模式下,按i,I,a,A,o,O,r,R任意键进入
  • 指令列命令模式 ( command-line mode )

    • 一般指令模式下,按:,/,?任意键进入

快捷键

一般指令模式下,对应的常用操作键:

光标移动 说明
k 向上移动
j 向下移动
h 向左移动
l 向右移动
ctrl + fpage up 向下翻页
ctrk + bpage down 向上翻页
ctrk + d 向下翻半页
ctrk + u 向上翻半页
n + 空格键 右移n个字符
0home 移动到当前列最前面
$end 移动到当前列最后面
H 屏幕第一行最前面
M 屏幕中间行最前面
L 屏幕最后一行最前面
G 跳到文件最后一列
n + G 跳到文件第n列
gg 跳到文件第一列,相当于1G
n + enter键 往下移动n列
搜索、替换 说明
/word 向下搜索
?word 向上搜索
n 搜索匹配的下一处
N 搜索匹配的上一处
?word 向上搜索
:n1,n2s/word1/word2/g 将n1到n2行的所有word1替换成word2
:1,$s/word1/word2/g[c] 全局搜索,将所有word1替换成word2,最后那个可选的c用于在全局替换前进行确认
删除、复制及替换 说明
xdel 向后删除一个字符
Xbackspace 向前删除一个字符
n + x 向后删除n个字符
dd 整行删除
ndd 向下n行删除
dnG 向上删除到第n行
dG 向下删除全部
d$ 删除光标处到最后面
d0 删除光标处到最前面
yy 复制整行
nyy 向下复制n行
ynG 向上复制到第n行
yG 向下复制全部
y$ 复制光标处到最后面
y0 复制光标处到最前面
p 复制内容从下一行开始粘贴
P 复制内容从上一行开始粘贴
J 当前行与下一行合并成一行
u 还原前一个操作
ctrl + r 重做前一个操作
. 重复做上一个操作

从一般指令模式进入编辑模式,对应的常用操作键:

操作 说明
i 光标所在处前开始插入
I 所在列最前面开始插入
a 光标所在处后开始插入
A 所在列最后面开始插入
o 光标所在处上一行开始插入
O 光标所在处下一行开始插入
r 替换模式,只取代光标处字符一次
R 替换模式,一直取代光标处字符直到按ESC退出
ESC 退出编辑模式,回到一般指令模式

从一般指令模式进入指令列模式下对应的常用操作键:

操作 说明
:w 保存,但不退出
:w! 强制保存(跟用户的操作权限有关)
:q 退出vi/vim(没有操作的情况下可成功退出)
:q! 强制退出vi/vim,也不保存修改
:wq 保存修改并退出vi/vim
ZZ 保存修改后退出vi/vim
:w [file] 另存为file
:n1,n2 w [file] 将n1到n2列另存为file
:r [file] 将file的内容追加到光标下一列
:! [command] 暂离vi/vim编辑执行后面的command,按Enter后返回
:set nu:set number 显示行号
:set nonu:set nonumber 取消显示行号

区块选择

操作 说明
v 字符选择,将光标移动过的位置全部选择
V 列选择,将光标移动过的位置全部选择
ctrl + v 区块选择,将光标移动过的位置全部选择
y 复制上述所选
d 删除上述所选
p 粘贴上述所选

多文件编辑

vim还支持同时打开多个文件,用于跨文件操作:vim file1 file2 file*

操作 说明
n 编辑下一个文件
N 编辑上一个文件
files 列出当前vim编辑的所有文件

多窗口功能

操作 说明
sp [filename] 开启多窗口,如果不输入默认为当前文件
ctrl + w + jctrl + w + ↓ 将光标移动到下一个窗口
ctrl + w + kctrl + w + ↑ 将光标移动到上一个窗口
ctrl + w + q:q 退出当前窗口

其它功能

  • 代码提示补全

  • 环境设定。set all命令用于查看所有的设定值,vim的设定文件在一般放置在/etc/vim/vimrc,自定义下建议新建保存在~/.vimrc

  • vim常用指令示意图

vim常用指令示意图

重点回顾

重点回顾

欢迎关注我的个人公众号:超级码里奥
如果这对您有帮助,欢迎点赞和分享,转载请注明出处

你可能感兴趣的:(Linux 私房菜:vi 与 vim 编辑器)