1、vim的三种工作模式
命令模式、文本模式 、末行模式
进入文本模式
的各种方式:
i 进入文本模式,光标前插入字符
a 进入文本模式,光标后插入字符
o 进入文本模式,光标所在行的下一行插入
I 进入文本模式,光标所在行的行首插入
A 进入文本模式,光标所在行的行末插入字符
O 进入文本模式,光标所在行的上一行插入字符
s 删除光标所在字符并进入文本模式
S 删除光标所在行并进入文本模式
命令模式
下的光标移动:
h 左移
j 下移
k 上移
l 右移
跳转到指定行:
1.
88G
命令模式下按 88G,跳转到88行
2.
:88
(末行模式) 跳转到88行
跳转到n+1行:命令模式下按
n(n是数字)
(如:在命令模式下输入100会跳转到101行)
跳转文件首: 命令模式下按
gg
跳转文件尾:命令模式下按
G
自动格式化程序:命令模式下按
gg=G
大括号对应:
%
(命令模式)(在for{}语句中,把光标移动到{,在命令模式下输入%,会跳转到},可以判断语句有多少行,,再按%跳回去{。其他括号也可以这样)。
光标移至行首:命令模式下按
0
执行结束,工作模式不变
光标移至行尾:命令模式下按
$
执行结束,工作模式不变
删除光标至行尾:命令模式下按
D
或者
d$
删除光标至行首:命令模式下按
d0
(d:delete)
删除单个字符:命令模式下按
x
执行结束,工作模式不变。
替换单个字符:用
光标移到将待替换的字符
,
r
(命令模式),再按欲替换的字符
删除一个单词:
dw
(命令模式)
光标置于单词的首字母
进行操作。
删除指定区域:命令模式下按
V
切换为 “可视模式”,使用 hjkl挪移光标来选中待删除区域。 按 d 删除该区域数据。
剪切(删除)并且粘贴指定1行:命令模式下在光标所在行,按
dd
,然后选择某一行按
p
粘贴剪切的那一行内容到光标所在的下一行(按
P
在当前所在行粘贴)。
剪切(删除)并且粘贴指定N行:在光标所待删除首行,命令模式下在光标所在行,按
Ndd
(N是数字),然后选择某一行按
p
粘贴剪切的那N行内容到光标所在的下一行(按
P
在当前所在行粘贴)。
复制一行:yy(nyy复制n行)
粘贴:p:向后、P:向前。
撤回上一步操作:命令模式下按 u
查找:
1. 找 设想内容:命令模式下, 按 “/” 输入欲搜索关键字,回车。使用 n 检索下一个。(如:我想在文本中查找hello这个单词,应该在命令模式下输入:/hello
然后按下回车键,再按下n键
查找跳转到下一个hello)
2. 找 看到的内容:命令模式下,将光标置于单词任意一个字符上,按 “*” “#” 。(如:我想在文本中查找hello这个单词,应该在命令模式下,应该把光标移动到hello这个单词中的任意一个字母h、e、l、l、o按下*查找下一个hello,按下#查找上一个hello)
替换:
单行替换:将光标置于待替换行上, 进入末行模式,输入 :s
/
原数据
/
新数据。如::s /printf/println/g
通篇替换:末行模式, :%s
/
原数据/新数据/g g:不加,只替换每行首个。如::%s /printf/println/g
指定行的替换:末行模式, :起始行号,终止行号s /原数据/新数据/g g:不加,只替换每行首个。 如::29,35s /printf/println/g(把29到35行的所有printf替换成println,不加g就只替换每行首个printf)
分屏:
sp:横屏分。 Ctrl+ww 切换。:q 退出
vsp:竖屏分。Ctrl+ww 切换。:q 退出
跳转至 man 手册:将光标置于待查看函数单词上,使用 K(命令模式)跳转。 指定卷n, nK
查看宏定义:将光标置于待查看宏定义单词上,使用 [d 查看定义语句。
在末行模式执行shell命令::!命令 如: :! ls -l