VI 命令收集

学习中,收了一些常用的。

VI 命令收集
命令(normal)说明
h 或 backspace
l 或 Space
j
k
^e(ctrl+e) 将屏幕上滚一行
^y 将屏幕下滚一行
^u 将屏幕上滚半页
^d 将屏幕下滚半页
^b 将屏幕上滚一页
^f 将屏幕下滚一页
^l 重绘屏幕
H移到屏幕的第一行
nH 将光标移动到屏幕顶行下的第n行
M移到屏幕的中间
L移到屏幕的最后一行
nL 将光标移动到屏幕底行上的第n行
gg移到文件是第一行
G移到文件的最后一行
nG移到文件的第n行
z + enter将当前行置为屏幕的顶行
nz + enter将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行
w移到下一个字的开头
W移到下一个字的开头,忽略标点符号
b移到前一个字的开头
B移到前一个字的开头,忽略标点符号
e移到下一个字的结尾
E移到下一个字的结尾,忽略标点符号
(句子的开头
)下一句子的开头
{移到段落的开头
}移到下一个段落的开头
[[ 回到段落的开头处,以 { 来定义一个段落
%匹配括号移动,包括 (, {, [. 
* 和 #匹配光标当前所在的单词,移动光标到下一个(*)或上一个(#)
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z,小写是当前文件,大写是全局的
`(a-z) 将光标移动到指定的标记,如用`z表示移动到z, `z和 'z都可以。
:marks查看所有的标记
`"这个标记跳转到最后离开这个文件时的位置
`.这个标记跳转到最后修改这个文件时的位置
Ctrl + O和Ctrl + I 在当前跳转序列中前后跳转
将下一行连接到当前行的末尾
0 或 |移到当前行的第一列
n|移到当前行的第n列
^移到当前行的第一个非空字符
$移到当前行的最后一个字符
+移到下一行的第一个非空字符
-移到前一行的第一个非空字符
a在光标后插入文本
A在当前行尾插入文本
i在光标前插入文本
I在当前行首插入文本
o在当前行的下边插入新行
O在当前行的上边插入新行
删除光标处的字符,可以在x前加上需要删除的字符数目
nx 从当前光标处往后删除n个字符
删除光标前的字符,可以在X前加上需要删除的字符数目
nX 从当前光标处往前删除n个字符
d + cursor_cmd 删除至光标命令处,如dG将从当产胆行删除至文件的末尾
dw 删至下一个字的开头
ndw 从当前光标处往后删除n个字
db 删除光标前面的字
ndb 从当前行开始往前删除n字
dG 删除行,直到文件结束
dd 删除整行
ndd 从当前行开始往后删除n行
:n,md 删除n行到m行
D 或 d$ 从光标处删除到行尾
r + char 用char替换当前字符
R text ESC 用text替换光标开始的文本直到按下Esc键 [R进入替换状态]
s text ESC 用text替换当前字符,直到按下ESC键 [删除光标所在字元,并进入输入模式]
S或cc text ESC用text替换整行 [删除光标所在的列,并进入输入模式。]
c + cursor_cmd text
               从当前位置处到光标命令位置处都改为text,如c^ 
cw text  将当前字改为text
C text  将当前行余下的改为text
cG  修改至文件的末尾
gUgU (变大写)后跟移动光标才行
gugu (变小写)后跟移动光标才行
/text 在文件中向下查找text
?text 在文件中向上查找text
在同一方向重复查找
N在相反方向重复查找
f字符在当前行向前查找字符
F字符在当前行向后查找字符
ttext 在当前行向前查找text,并将光标定位在text的第一个字符(text为一个字符)
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
重复前面的f、F、t或T查找命令
以相反的方向重复前面的f、F、t或T查找命令
Y 或 yy拷贝一行
yaw复制一个单词
yas复制一个句子
yy 将当前行的内容放入临时缓冲区,复制
nyy 将n行的内容放入临时缓冲区,复制n行
将临时缓冲区中的文本放入光标后,粘贴
将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行,如"b3yy
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号内的可命名缓冲区的内容放入当前行后,如"bp
"(a-z)P 将名字为圆括号内的可命名缓冲区的内容放入当前行前
撤消最后一次修改
撤消当前行的所有修改
. 或 ^r重复最后一次修改
>>增加缩进(shiftwidth定义的宽度)
<<减少缩进
qa cmd q把你的操作记录在寄存器 a。格式:qa cmd q,最后一个q停止录制。
@a@a 会replay被录制的宏。
@@@@是一个快捷键用来replay最新录制的宏。
命令(插入模式)说明
Ctrl + v ^v char 插入时忽略char的指定意义,这是为了插入特殊字符
Ctrl + d减少缩进
Ctrl + t 或 ^i增加缩进
Ctrl + y复制上一行同一列的字符
Ctrl + e 复制下一行同一列的字符
Ctrl + w 删除光标左侧的一个单词
Ctrl + u 删除光标左侧的行
ESC, Ctrl + c, Ctrl + [
               插入模式退回到normal模式
Ctrl + n, Ctrl + p
                可以搜索匹配
Ctrl + r 插入寄存器中内容,后面再加寄存器编号,:reg可以查看全部寄存器。
Ctrl + h 或 backspace
                删除
命令(底行)说明
:r file 读入文件file内容,并插在当前行后
:nr file 读入文件file内容,并插在第n行后
:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感
:s/oldtext/newtext
               用newtext替换oldtext,当前行的第一个oldtext
:m,ns/oldtext/newtext
               在m行到n行,用newtext替换oldtext,每行的第一个oldtext
:s/oldtext/newtext/g
               用newtext替换oldtext,当前行所有的oldtext
:%s/oldtext/newtext/g
               用newtext替换oldtext,文件中所有的oldtext
:g/text/command
               在所有包含text的行运行command所表示的命令
:g/text1/s/text2/text3
               查找包含text1的行,用text3替换text2
:v/text/command
               在所有不包含text的行运行command所表示的命令
:w 保存文件但不退出vi
:w file将修改保存在file中但不退出vi
:wq或ZZ或:x 保存文件并退出vi
:q! 不保存文件,退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
:saveas:saveas <path/to/file>→另存为 <path/to/file>
:set nu 每行前显示行号,set nonumber取消显示行号
:.= 打印当前行的行号
:= 打印文件中的行数
Ctrl + g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:!command 执行shell的command命令,如:!ls
:!! 执行前一个shell命令
set tabstop=4定义tab所等同的空格长度
set softtabstop=4
               设置(软)制表符宽度为4
set shiftwidth=4
               自动缩进所使用的空白长度
set expandtabtab以空格代替
set aiset autoindent设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set cindent设置使用 C/C++ 语言的自动缩进方式
命令(可视模式)说明(用来选择文件的一部分内容,以便作比如删除,复制等)
v一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。
V一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。
Ctrl+v选中屏幕上的一个矩形区域。以按下时的位置为一个角,光标所在位置为它的对角。
u将选中的部分改为小写
U将选中的部分改为大写
I-- [ESC]I是插入,插入“--”,按ESC键来为每一行生效。
J把所有的行连接起来(变成一行)
< 或 >左右缩进
 多窗口
vim -On f1 f2大写的O参数来垂直分屏,n是数字,表示分成几个屏
vim -on f1 f2小写的o参数来水平分屏
Ctrl+W c关闭当前窗口,基本后一窗口不能关闭
Ctrl+W q关闭当前窗口,如果只剩最后一个了,则退出Vim
Ctrl+W s上下分割当前打开的文件
:sp filename上下分割,并打开一个新的文件
Ctrl+W v左右分割当前打开的文件
:vsp filename左右分割,并打开一个新的文件
窗口间切换先按一下Ctrl+W,再通过h,j,k,l来移动
Ctrl+W w把光标移到下一个的屏中
移动分屏先按一下Ctrl+W,再通过H,J,K,L来移动
Ctrl+W =让所有的屏都有一样的高度
Ctrl+W +增加高度
Ctrl+W -减少高度
Ctrl+W _最大化水平分屏窗口
Ctrl+W |最大化垂直分屏窗口

多文件

ctrl+^ctrl+shift+6快速在最近打开的两个文件间切换
:buffers 或:ls 列出所有的当前文件
:b 2 编辑第二个文件 = :buffer 2
:bd关闭buffer
:bw彻底关闭buffer
:bn 和 :bp 可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件
:n跳至下一个文件 = :next
:prev跳至上一个文件
:e#回到刚才编辑的文件
:first :last:first或者:rewind命令快速切换到第一个文件, :last最后一个文件
gf打开光标处的文件名
`"这个标记跳转到最后离开这个文件时的位置
`.这个标记跳转到最后修改这个文件时的位置
TAB页操作
:tabnew [file]建立对指定文件新的tab, :tabe也一样
:tabc关闭当前的tab
:tabo关闭所有其他的tab
:tabs查看所有打开的tab
:tabp前一个
:tabn后一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值