1.打开文件
vim filename 直接使用vim命令打开一个文件。
q! / quit! 强制退出
ZZ 保存文件为常规的Unix文件
ls 列举出当前目录下的文件
w 写入文件,但是不退出vim
wq 写入文件并离开vim,与ZZ类似
e! / q! 退出vim编辑器,不保存编辑结果
w! filename 强制覆盖现有文件
!rm filename 删除文件
2. 移动光标
h, j, k, l
对应与向左移动一个字符,向下移动一行,向上移动一行,向右移动一个字符。
0 移到一行的开头
$ 移到一行的结尾
w / b 移动一个单词,向后/向前
G 移动到一个特定的行,1G 移动到第一行
+ 下一行的第一个字符
- 上一行的第一个字符
e / E 到单词的结尾
vim的移动命令
Ctrl+End 移动到文件的末端
Ctrl+Home 移动到文件的第一行,第一个非空字符
count% 移动到文件%n的地方,50% 移动到文件的中间位置
4. 编辑命令
简单的编辑命令:
i 表示插入,在光标当前位置开始插入
a 表示追加,在当前光标之后的一个位置开始
c 表示更改,
d 表示删除,
A 在一行的结尾处附加文本
I 在一行的开头处插入文本
o 在光标所在位置的下一行打开新行
O 在光标的上一行打开新行
s 删除光标所在位置的字符后,再替换文本
S 删除一整行后,再替换文本
R 用新的字符覆盖现有的字符
c 命令:
cw 从光标到这个单词结尾,修改
c2b 从光标往前的两个单词
c$ / C 从光标到行结尾
c0 从光标到行的开头
cc 会将一整行换成任何输入的文本。它删除原来的行。
r 修改当前的字符,修改后直接回到命令行模式
修改字符,如将|| 替换为 && 可以输入 2r&
R 进入整行的覆盖模式,直到按Esc为止
s 修改几个字符 3s 删除当前光标及之后两个字符,进入插入模式
S 删除整行,并在行其实位置进入插入模式
~ 将当前的文本变为大写
dw 删除光标到本单词的结尾处
dd 删除当前行 2dd 删除两整行
db 删除光标到单词开始处
d$ / d0 删除光标到行末/行起始位置
D 删除光标到行的结束所有的内容
x 删除一个字符 3x 删除三个字符
u 只会撤销最近一次命令
p 恢复最近几次的删除动作,vim保存了最近9次的动作 3p
恢复缓冲区的第三个
复制、剪切与粘贴:
dd 删除一整行,p 将删除的行粘贴到光标所在行的下一行
x p 可以将两个字符对调
y 复制命令 yw复制一个单词,y$复制光标到行末 4yy 复制4行内容
Y 和yy的功能相同(D,C的功能和 dd,cc功能不同)
. 用于重复上一条命令
J 用于将当前行 和下一行 合并
[++
注释:
(command)(number)(text object) 或者相等的模式
(number)(command)(text object)
命令+数字+文本对象
3k 向上移动三行 / d3 删除当前行及其之后两行,共三行
--]
5. 高级移动命令
滚动:
Ctrl+F 往前滚动一整屏
Ctrl+B 往后滚动一整屏
Ctrl+D 往前滚动半屏幕
Ctrl+U 往后滚动半屏幕
z Enter 将光标移动到屏幕顶端,并滚动屏幕
z . 将光标移动到屏幕中心,并滚动屏幕
z - 将光标移动到屏幕底端,并滚动屏幕
200z Enter 会将200行移动到屏幕顶端
H 移动到屏幕顶端的行
M 移动到屏幕中央的行
L 移动到屏幕底端的行
nH 移动到屏幕往下的第n行
nL 移动到屏幕底端网上的第n行
Enter 移动到下一行的其实位置
+ 移动到下一行的第一个字符
- 移动到上一行的第一个字符
^ 移动到当前行的第一个非空格处
n| 移动到当前行的第n列
e 移动到单词的结尾
E 移动到单词的结尾,忽略标点符号
( 移动到当前句子的开头
) 移动到下一个句子开头
{ 移到当前这一段开头
} 移到下一段的开头
[[ 移到本节的开头
]] 移到下节的开头
搜索:
/ 搜索命令,向后搜索,/pattern pattern可以是一个完整单词,或字符串
? 向前搜索,用法和 / 相同
n 向同一个方向重复搜索
N 向相反的方向重复搜索
/Enter 往前重复搜索
?Enter 往后重复搜索
G(转至)命令
100G 转到文本的一百行。
`` 回到移动前的位置
'' 回到移动前位置所在行,行首位置
6. :set option 命令
:set all 列举出所有的选项
:set autoindent 设置自动缩进缩进
:set shiftwidth=4 设置shiftwidth与制表符 tabstop 距离相同
:set tabstop=4 设置制表符 tab为4个字符
set nu 设置行号
set wm / wrapmargin 设置自动换行的宽度
7. 编程
特殊的搜索命令:
( [ { < 这几个称为开括号,当光标位于任何一个开括号时,按下
%键可以将光标移到成对的闭括号上。同样,位于闭括号时,也可以回到开括号。
折叠命令:
zA 递归切换折叠状态
zC 递归关闭折叠
zD 递归删除折叠
zE 去除所有的折叠
zf 创建折叠,从当前的行开始到光标移动后到达的结束位置
countzF 创建涵盖count行的折叠,从当前行开始
zM 设置foldlevel 选项为0
zN,zn 设置 复位(zn) foldenable
zo 递归打开折叠
za 切换一个折叠的状态
zd 删除一个折叠
zc 关闭一个折叠
zj,zk 移动到下一个折叠开始的地方(zj),前一个折叠的结尾处(zk)
zo 打开一个折叠
C/C++中折叠
将光标放在( { 或 }) 上,输入zf%,将其中的内容折叠。
zfgg 将光标到文件开始处的内容折叠。
自动智慧缩进:
:set cindent 可以理解C语法,
关键字补全:
:help compl -generic / :help 'complete' / :help ins-completion
调出自动补全的功能。
Ctrl-N Ctrl-P 在当前缓冲区 查找以光标前关键字开始的单词。
Ctrl-X Ctrl-L 整行补全
Ctrl-X Ctrl-N 根据当前文件里关键字补全
Ctrl-X Ctrl-K 根据字典补全
Ctrl-X Ctrl-T 根据同义词字典补全
Ctrl-X Ctrl-I 头文件内关键补全
Ctrl-X Ctrl-J 根据标签补全
Ctrl-X Ctrl-F 补全文件名
Ctrl-X Ctrl-D 补全宏定义
Ctrl-x Ctrl-o 调用omnifunc定义的函数
在全能补全中,Ctrl-X / Ctrl-N 用于选择。不需要回车。
Ctrl-x Ctrl-u 调用completefunc定义的函数
:imap Tab <C-P>
将tab映射为补全键。在tab键前后输入Ctrl+v就可以输入tab键了。
语法的高亮:
:syntax enable
:syntax on
:highlight comment 以高亮显示一个单词
8.Vim多窗口的功能
vim -o file1 file2 -o 命令指明使用多窗口的方式打开两个文件
-o 后添加数字, vim -o5 file1 file2 将vim分割为5个窗口,前两个打开文件
:split 创建新的窗口(水平分割),两个窗口均显示相同的文件内容
:vsplit 创建垂直分割的窗口
:split otherfile 则在新的窗口中打开 otherfile
:[n]split [++opt] [+cmd] [file] 完整的split命令形式
n 为Vim指定新窗口显示的行数
opt 为Vim新窗口传递选项信息 前面要加两个 加号
cmd 传入欲在新窗口中执行的命令,前面必须加一个加号
file 在新窗口中编辑的文件
new / vnew 命令与split / vsplit含义类似
sview filename 新建窗口以只读方式 打开文件
sfind [++opt] [+cmd] filename 搜索文件,找到则建立新窗口打开文件
窗口之间切换:
Ctrl+W Down / Ctrl+W j 切换到下一个窗口
Ctrl+W Up / Ctrl+W k 切换到上一个窗口
Ctrl+W Left / Ctrl+W h 切换到当前窗口的左边窗口
Ctrl+W Right / Ctrl+W l切换到当前窗口右边的窗口
Ctrl+W t / Ctrl+W Ctrl+t 切换到左上角的窗口
Ctrl+W b / Ctrl+W Ctrl+b 切换到右上角的窗口
Ctrl+W 在窗口之间切换
Ctrl+W p 移动到前一个访问窗口
Ctrl+W r 向右或向下方轮换窗口,Ctrl+W R,轮换方向相反。
(注意这个不是在窗口之间切换,而是移动窗口位置)
Ctrl+W x 向右或向下方轮换窗口,Ctrl+W X,轮换方向相反。
分页编辑:
创建多个分页,tab。
:tabnew filename
在新的分页打开并编辑新文件,不指定文件则打开一个空的tab。
:tabclose 关闭当前的分页
:tabonly 关闭其他的所有分页,除非文件被修改了,没有设置 autowrite。
quit 离开窗口
close 关闭窗口
hide 隐藏窗口
vim filename 直接使用vim命令打开一个文件。
q! / quit! 强制退出
ZZ 保存文件为常规的Unix文件
ls 列举出当前目录下的文件
w 写入文件,但是不退出vim
wq 写入文件并离开vim,与ZZ类似
e! / q! 退出vim编辑器,不保存编辑结果
w! filename 强制覆盖现有文件
!rm filename 删除文件
2. 移动光标
h, j, k, l
对应与向左移动一个字符,向下移动一行,向上移动一行,向右移动一个字符。
0 移到一行的开头
$ 移到一行的结尾
w / b 移动一个单词,向后/向前
G 移动到一个特定的行,1G 移动到第一行
+ 下一行的第一个字符
- 上一行的第一个字符
e / E 到单词的结尾
vim的移动命令
Ctrl+End 移动到文件的末端
Ctrl+Home 移动到文件的第一行,第一个非空字符
count% 移动到文件%n的地方,50% 移动到文件的中间位置
4. 编辑命令
简单的编辑命令:
i 表示插入,在光标当前位置开始插入
a 表示追加,在当前光标之后的一个位置开始
c 表示更改,
d 表示删除,
A 在一行的结尾处附加文本
I 在一行的开头处插入文本
o 在光标所在位置的下一行打开新行
O 在光标的上一行打开新行
s 删除光标所在位置的字符后,再替换文本
S 删除一整行后,再替换文本
R 用新的字符覆盖现有的字符
c 命令:
cw 从光标到这个单词结尾,修改
c2b 从光标往前的两个单词
c$ / C 从光标到行结尾
c0 从光标到行的开头
cc 会将一整行换成任何输入的文本。它删除原来的行。
r 修改当前的字符,修改后直接回到命令行模式
修改字符,如将|| 替换为 && 可以输入 2r&
R 进入整行的覆盖模式,直到按Esc为止
s 修改几个字符 3s 删除当前光标及之后两个字符,进入插入模式
S 删除整行,并在行其实位置进入插入模式
~ 将当前的文本变为大写
dw 删除光标到本单词的结尾处
dd 删除当前行 2dd 删除两整行
db 删除光标到单词开始处
d$ / d0 删除光标到行末/行起始位置
D 删除光标到行的结束所有的内容
x 删除一个字符 3x 删除三个字符
u 只会撤销最近一次命令
p 恢复最近几次的删除动作,vim保存了最近9次的动作 3p
恢复缓冲区的第三个
复制、剪切与粘贴:
dd 删除一整行,p 将删除的行粘贴到光标所在行的下一行
x p 可以将两个字符对调
y 复制命令 yw复制一个单词,y$复制光标到行末 4yy 复制4行内容
Y 和yy的功能相同(D,C的功能和 dd,cc功能不同)
. 用于重复上一条命令
J 用于将当前行 和下一行 合并
[++
注释:
(command)(number)(text object) 或者相等的模式
(number)(command)(text object)
命令+数字+文本对象
3k 向上移动三行 / d3 删除当前行及其之后两行,共三行
--]
5. 高级移动命令
滚动:
Ctrl+F 往前滚动一整屏
Ctrl+B 往后滚动一整屏
Ctrl+D 往前滚动半屏幕
Ctrl+U 往后滚动半屏幕
z Enter 将光标移动到屏幕顶端,并滚动屏幕
z . 将光标移动到屏幕中心,并滚动屏幕
z - 将光标移动到屏幕底端,并滚动屏幕
200z Enter 会将200行移动到屏幕顶端
H 移动到屏幕顶端的行
M 移动到屏幕中央的行
L 移动到屏幕底端的行
nH 移动到屏幕往下的第n行
nL 移动到屏幕底端网上的第n行
Enter 移动到下一行的其实位置
+ 移动到下一行的第一个字符
- 移动到上一行的第一个字符
^ 移动到当前行的第一个非空格处
n| 移动到当前行的第n列
e 移动到单词的结尾
E 移动到单词的结尾,忽略标点符号
( 移动到当前句子的开头
) 移动到下一个句子开头
{ 移到当前这一段开头
} 移到下一段的开头
[[ 移到本节的开头
]] 移到下节的开头
搜索:
/ 搜索命令,向后搜索,/pattern pattern可以是一个完整单词,或字符串
? 向前搜索,用法和 / 相同
n 向同一个方向重复搜索
N 向相反的方向重复搜索
/Enter 往前重复搜索
?Enter 往后重复搜索
G(转至)命令
100G 转到文本的一百行。
`` 回到移动前的位置
'' 回到移动前位置所在行,行首位置
6. :set option 命令
:set all 列举出所有的选项
:set autoindent 设置自动缩进缩进
:set shiftwidth=4 设置shiftwidth与制表符 tabstop 距离相同
:set tabstop=4 设置制表符 tab为4个字符
set nu 设置行号
set wm / wrapmargin 设置自动换行的宽度
7. 编程
特殊的搜索命令:
( [ { < 这几个称为开括号,当光标位于任何一个开括号时,按下
%键可以将光标移到成对的闭括号上。同样,位于闭括号时,也可以回到开括号。
折叠命令:
zA 递归切换折叠状态
zC 递归关闭折叠
zD 递归删除折叠
zE 去除所有的折叠
zf 创建折叠,从当前的行开始到光标移动后到达的结束位置
countzF 创建涵盖count行的折叠,从当前行开始
zM 设置foldlevel 选项为0
zN,zn 设置 复位(zn) foldenable
zo 递归打开折叠
za 切换一个折叠的状态
zd 删除一个折叠
zc 关闭一个折叠
zj,zk 移动到下一个折叠开始的地方(zj),前一个折叠的结尾处(zk)
zo 打开一个折叠
C/C++中折叠
将光标放在( { 或 }) 上,输入zf%,将其中的内容折叠。
zfgg 将光标到文件开始处的内容折叠。
自动智慧缩进:
:set cindent 可以理解C语法,
关键字补全:
:help compl -generic / :help 'complete' / :help ins-completion
调出自动补全的功能。
Ctrl-N Ctrl-P 在当前缓冲区 查找以光标前关键字开始的单词。
Ctrl-X Ctrl-L 整行补全
Ctrl-X Ctrl-N 根据当前文件里关键字补全
Ctrl-X Ctrl-K 根据字典补全
Ctrl-X Ctrl-T 根据同义词字典补全
Ctrl-X Ctrl-I 头文件内关键补全
Ctrl-X Ctrl-J 根据标签补全
Ctrl-X Ctrl-F 补全文件名
Ctrl-X Ctrl-D 补全宏定义
Ctrl-x Ctrl-o 调用omnifunc定义的函数
在全能补全中,Ctrl-X / Ctrl-N 用于选择。不需要回车。
Ctrl-x Ctrl-u 调用completefunc定义的函数
:imap Tab <C-P>
将tab映射为补全键。在tab键前后输入Ctrl+v就可以输入tab键了。
语法的高亮:
:syntax enable
:syntax on
:highlight comment 以高亮显示一个单词
8.Vim多窗口的功能
vim -o file1 file2 -o 命令指明使用多窗口的方式打开两个文件
-o 后添加数字, vim -o5 file1 file2 将vim分割为5个窗口,前两个打开文件
:split 创建新的窗口(水平分割),两个窗口均显示相同的文件内容
:vsplit 创建垂直分割的窗口
:split otherfile 则在新的窗口中打开 otherfile
:[n]split [++opt] [+cmd] [file] 完整的split命令形式
n 为Vim指定新窗口显示的行数
opt 为Vim新窗口传递选项信息 前面要加两个 加号
cmd 传入欲在新窗口中执行的命令,前面必须加一个加号
file 在新窗口中编辑的文件
new / vnew 命令与split / vsplit含义类似
sview filename 新建窗口以只读方式 打开文件
sfind [++opt] [+cmd] filename 搜索文件,找到则建立新窗口打开文件
窗口之间切换:
Ctrl+W Down / Ctrl+W j 切换到下一个窗口
Ctrl+W Up / Ctrl+W k 切换到上一个窗口
Ctrl+W Left / Ctrl+W h 切换到当前窗口的左边窗口
Ctrl+W Right / Ctrl+W l切换到当前窗口右边的窗口
Ctrl+W t / Ctrl+W Ctrl+t 切换到左上角的窗口
Ctrl+W b / Ctrl+W Ctrl+b 切换到右上角的窗口
Ctrl+W 在窗口之间切换
Ctrl+W p 移动到前一个访问窗口
Ctrl+W r 向右或向下方轮换窗口,Ctrl+W R,轮换方向相反。
(注意这个不是在窗口之间切换,而是移动窗口位置)
Ctrl+W x 向右或向下方轮换窗口,Ctrl+W X,轮换方向相反。
分页编辑:
创建多个分页,tab。
:tabnew filename
在新的分页打开并编辑新文件,不指定文件则打开一个空的tab。
:tabclose 关闭当前的分页
:tabonly 关闭其他的所有分页,除非文件被修改了,没有设置 autowrite。
quit 离开窗口
close 关闭窗口
hide 隐藏窗口