vim | 快捷键整理

vim | 快捷键整理

🌟一、一般模式下的命令

🌊1.1 光标移动命令

🔸基本光标移动命令

命令含义
h / ←光标向左移动一个字符
j / ↓光标向下移动一个字符
k / ↑光标向上移动一个字符
l / →光标向右移动一个字符
n+hjkl多字符移动
0/[Home]移动到行首
$/[End]移动到行尾
n+[space]向右移动 n 个字符

🔸按字光标移动命令

命令含义
w / W光标右移至下一个字的字首
e / E光标右移至下一个字的字尾
b / B光标左移至上一个字的字首
  • w/e/b 命令所指的字是指英文单词、标点符号和非字母字符;
  • W/E/B 命令所指的字是指两个空格之间的任何内容。

🔸按行光标移动命令

命令含义
H光标移动到屏幕最上方一行的第一个字符
M光标移动到屏幕中央一行的第一个字符
L光标移动到屏幕最下方一行的第一个字符
G移动到档案的最后一行
nG移动到档案的第 n 行
gg移动到档案的第一行,相当于 1G
nn 为数字,光标向下移动 n 行

🔸按段落光标移动命令

在 vi 中,一个段落被定义为是以一个空白行开始和结束的片段。按段落移动光标的命令有以下两种:

  • {命令:该命令将光标向前移至上一个段落的开头。
  • }命令:该命令将光标向后移至下一个段落的开头。

🌊1.2 滚屏命令

命令含义
Ctrl + f屏幕向『下』移动一页,相当于 [Page Down]按键
Ctrl + b屏幕向『上』移动一页,相当于 [Page Up] 按键
Ctrl + d屏幕向『下』移动半页
Ctrl + u屏幕向『上』移动半页

🌊1.3 删除、复制、粘贴命令

🔸文本删除命令

命令含义
x向后删除一个字符 ([del] 按键)
X向前删除一个字符([backspace] 按键)
dw删除一个单词
dd删除光标所在的整行
ndd删除光标所在的向下 n 行
d0删除从光标前一个字符开始到行首的内容
D/d$删除从光标所在处开始到行尾的内容
d(删除到上一句开始的所有字符
d)删除到下一句开始的所有字符
d{删除到上一段开始的所有字符
d}删除到下一段开始的所有字符
d<CR>删除包括当前行在内的两行字符(<CR> 表示回车)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据

🔸文本复制命令

命令含义
yy复制光标所在的整行
nyy复制光标所在的向下 n 行
y0复制从光标前一个字符开始到行首的内容
Y/y$复制从光标所在处开始到行尾的内容
y(复制到上一句的开始
y)复制到下一句的开始
y{复制到上一段的开始
y}复制到下一段的开始
y<CR>复制包括当前行在内的两行内容(<CR> 表示回车)
yw复制一个单词
y1G复制游标所在行到第一行所有数据
yG复制游标所在行到最后一行所有数据

🔸文本粘贴命令

命令含义
p在光标下一行粘贴
P在光标上一行粘贴
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如:向下删除 10 行,[ 10cj ]

🌊1.4 动作重复、撤销命令

命令含义
u撤销(Undo)
U撤销对整行的操作
[Ctrl]+r重做(Redo),即撤销的撤销
.重复前一个动作

🌊1.5 搜索替换命令

vi 编辑器提供简单的字符串替换命令,在末行模式下可以使用替换命令,其命令格式如下:

[range]s/s1/s2/ [option]
  • [range] 表示检索范围,省略时表示当前行。下面是一些检索范围的例子。
    • 1,10表示从第 1 行到 10 行。
    • %表示整个文件,同1, $
    • . ,$从当前行到文件尾。
  • s 为替换命令。
  • s1 要被替换的串,s2 为替换的串。
  • option 表示选项:
    • /g表示在全局文件中进行替换。
    • /c表示在每次替换之前需要用户进行确认。
    • 省略时仅对每行第一个匹配串进行替换。
命令含义
/word向光标之下寻找一个名称为 word 的字符串
?word向光标之上寻找一个名称为 word 的字符串
nn 是英文按键,重复前一个搜寻的动作
NN 是英文按键,反向进行前一个搜寻动作
:n1,n2s/word1/word2/g在第 n1 与 n2 行之间寻找 word1,并取代为 word2
:1,$s/word1/word2/g从第一行到最后一行寻找 word1,并取代为 word2
s/old/new/用old替换new,替换当前行的第一个匹配
s/old/new/g用old替换new,替换当前行的所有匹配
%s/old/new/用old替换new,替换所有行的第一个匹配
%s/old/new/g用old替换new,替换整个文件的所有匹配
:10,20s/old/new/g在10-20行之间,用old替换new
:10,20s/^/ /g在10-20行每行前加四个空格,用于缩进
ddp交换光标所在行和其下紧邻的一行

🌊1.6 文本移动命令

命令含义
>>n,n行向右移动
<<n,n行向左移动
>>n>>,n行向右移动
<<n<<,n行向左移动
imj把第 i 行移至第 j 行的下方

🌟二、编辑模式下的命令

命令含义
i, I插入模式:i 从光标所在处插入,I 在所在行第一个非空格符处插入
a, A插入模式:a 从光标所在下一个字符处插入,A 所在行最后一个字符处插入
o, O插入模式:o 所在行的下一行插入新行,O 所在行的上一行插入新行
r, R取代模式:r 只取代光标所在字符一次,R 一直取代光标所在文字,直到按下 ESC
[Esc]退出编辑模式,回到一般模式

🌟三、指令行模式下的命令

🌊3.1 vi 文件操作命令

命令含义
:w将编辑数据写入硬盘
:w!文件属性为只读时,强制写入
:q离开 vi
:q!强制离开不储存
:wq储存后离开,:wq! 为强制储存后离开
ZZ没有更动则不储存离开,已被更动则储存后离开
:w [filename]另存新档
:r [filename]将新档案内容追加到游标所在行后
:n1,n2 w [filename]将 n1 ~ n2 内容另存新档
:! command退出并执行 command
例如『:! ls /home』可在 vi 中查看 /home 下以ls 输出的信息
:open file在vim窗口中打开一个新文件
:split file在新窗口中打开文件
:bn切换到下一个文件
:bp切换到上一个文件
:args查看当前打开的文件列表,当前正在编辑的文件会用[]括起来

🌊3.2 vi 窗口切分命令(split)

在末行模式中,输入 split 命令即可实现窗口的切分,其命令格式如下:

:sp [file]              #水平切分窗口
:vsp [file]             #垂直切分窗口
:e.                     #vim内置文件浏览器
vim -o file1 file2 ...  #水平打开多窗口
vim -O file1 file2 ...  #垂直打开多窗口
vim -d file1 file2 ...  #垂直打开多窗口并进行比较

split 也可简写为 sp。这时窗口切分为上下两部分,下半部分对应原来的文件,上半部分对应新打开的文件。有时用户需要在多窗口之间进行切换,vi 编辑器提供一组命令支持用户切换多个窗口,其命令如下表所示:

命令含义
Ctrl+w,然后 w移动光标到另一个窗口
Ctrl+w,然后 r对调两窗口位置
Ctrl+w,然后 q关闭当前窗口
Ctrl+w,然后 j移动光标到下面的一个窗口
Ctrl+w,然后 k移动光标到上面的一个窗口

🌊3.3 vi 属性设置命令

设置命令
行号设置命令:set nu (nonu)
高亮搜索结果:set hlsearch (nohlsearch)
大小写区分命令:set ignorecase(noignorecase)
语法缩进命令:set autoindent
自动储存备份:set backup(nobackup)
显示选项命令:set all
语法高亮命令:syntax on (off)
逐步搜索模式:set incsearch
循环搜索:set wrapscan

🌟四、vim 中的可视模式

  • 字符模式:v
  • 行模式:shift+v
  • 块模式:ctrl+v
💌vim 中批量添加注释

方法一 :块选择模式

批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 //#,输入完毕之后,按两下 ESCVim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。

方法二: 替换命令

批量注释:

使用下面命令在指定的行首添加注释。

使用名命令格式: :起始行号,结束行号s/^/注释符/g (注意冒号)

取消注释:

使用名命令格式: :起始行号,结束行号s/^注释符//g (注意冒号)

例子:

1、在 10 - 20 行添加 // 注释

:10,20s#^#//#g

2、在 10 - 20 行删除 // 注释

:10,20s#^//##g

3、在 10 - 20 行添加 # 注释

:10,20s/^/#/g

4、在 10 - 20 行删除 # 注释

:10,20s/#//g
💌vim 窗口切换(附)
1、打开多个窗口

打开多个窗口的命令以下几个:

#横向切割窗口
:new+窗口名(保存后就是文件名) 
:split+窗口名,也可以简写为:sp+窗口名
#纵向切割窗口名
:vsplit+窗口名,也可以简写为:vsp+窗口名

vim -o file1 file2 ...  #水平打开多窗口,
vim -O file1 file2 ...  #垂直打开多窗口,
vim -d file1 file2 ...  #垂直打开多窗口,并且进行比较
vimdiff file1 file2 ..  #等同于上一句
2、关闭多窗口

可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。

q 或 close      #关闭当前窗口
only          	#保留当前窗口,关闭其它所有窗口
qall(qa)        #退出所有窗口
wall          	#保存所有窗口
3、窗口切换

:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。

4、窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num  例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列
5、给窗口重命名
:f file
6、vi打开多文件
vi a b c
:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件
7、文件浏览
:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
:ls 显示当前buffer情况
8、vi与shell切换
:shell 可以在不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi
9. 多标签

直接在编辑的时候输入:
vim -p 要编辑的文件名
vim -p * 就是编辑当前目录的所有文件
多个标签间进行切换时向右切换gt,向左切换用gT
在编辑的时候想增加一个标签就可以:

tabnew filename 或者tabe filename
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp       前一个
:tabn       后一个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值