电子说
vim是一个Unix文本编辑器,它以快速高效而闻名,是在终端中运行的小应用程序(当然也有图形界面),它最主要的特点是完全可以通过键盘控制,而不需要菜单栏或鼠标。
例如,将文本插入到文件中,按i键并输入。浏览文本或输入命令,在键盘上按Esc,然后按下对应的任何键或组合键。对于大多数人来说,是一种非常不寻常的文本编辑方式,但这是基于Linux环境工作的开发者编辑配置文件、更改脚本、编写代码等操作的主流方式。
本文将介绍一些必要的基本命令,以供大家很快很容易地掌握vim编辑器。建议初学者在使用中进行学习,而不是只看不动手。不实战操作,那你可能很快忘记这些命令。
使用vim打开文件后,一般会用到三种模式:命令模式(command mode)、输入模式(insert mode)和底行命令模式(last line mode)。
刚启动vim时,默认进入命令模式。这时候,我们敲打键盘的字母会被识别为不同的命令。
如方向键h、j、k、l;输入键i、a、o,切换到输入模式;
冒号键:,切换到底行命令模式。 进入输入模式,可以任意的码入字母、符号,按esc键退出到命令模式。
在底行命令模式,可以输入单个或者多个命令,按enter键结束运行。
1、vim的进入和退出:vi、vim、:q、:q!、:wq 在terminal中直接敲vi或vim打开文本 :q 退出文件 :q! 强制退出文件,丢弃你所做的任何改动 :wq 保存修改,然后退出文件
2、移动光标:h、j、k、l键 h左移、l右移、j下移、k上移,熟练使用hjkl键,习惯之后我们能很快地在屏幕四处移动光标。
3、插入、删除和撤销:i、A、x、u键、ctrl+r 在command模式下:按下i键可以进入insert模式,在光标后插入文字,输入完成按esc键(A键,光标移动到本行末输入);按下x键可以删除光标所在位置的字符;按下u键可以撤销操作,回到上一步。ctrl+r撤销掉撤销命令。 按下esc键会回到command模式或者撤销一个不想输入或部分完整的命令。
4、删除类命令:dw、d$、dd dw 从光标处删除至一个单词的末尾 d$ 从光标处删除至本行末尾 dd 删除光标所在行
5、在动作前输入数字会使操作重复那么多次 3dd 执行三次光标所在行,即往下删除三行 2w
使光标向前移动两个单词 0
移动到光标的行首
6、关于定位和文件状态 gg
跳到文件第一行 G / shift+g
跳到文件最后一行 ctrl+g
显示当前编辑文件名和文件中光标位置 gf
进入光标所在位置路径的文件
7、关于搜索命令 /
加上字符串可以用于在当前文件中查找该字符串 ?用于反向查找
例如:/error <回车> 即可在文件中查找error n键向下继续搜索,N键或shift+n键向上继续搜索(shift+小写=大写)
8、替换命令 :s/old/new/g g是全局进行匹配 多种操作需要多加学习应用
9、在vim内执行外部命令 输入 :! 然后输入外部命令即可执行该外部命令 所有的 : 命令都必须以敲回车键结束
10、使用操作符y复制文本,使用p粘贴文本
配合可视模式使用 多行操作是经常会用到的,切记!
11、set设置一些选项 :set xxx 可以设置 xxx 选项。一些有用的选项如下: 'ic' 'ignorecase' 查找时忽略字母大小写 'is' 'incsearch' 查找短语时显示部分匹配 'hls' 'hlsearch' 高亮显示所有的匹配短语
12、获取在线系统帮助
如下三种方法: - 按下 键 (如果键盘上有的话) - 按下 键 (如果键盘上有的话) - 输入 :help <回车>
13、启用更多的vim的特性
Vim 的功能特性要比 Vi 多得多,但其中大部分都缺省没有启用。为了使用更多的特性,需要创建一个 vimrc 文件。
1. 开始编辑 vimrc 文件,具体命令取决于所用的操作系统: :edit ~/.vimrc
这是 Unix 系统所使用的命令 :edit $VIM/_vimrc
这是 MS-Windows 系统所使用的命令
2. 接着读取 vimrc 示例文件的内容: :r $VIMRUNTIME/vimrc_example.vim
3. 保存文件,命令为: :write 下次启动 Vim 时,编辑器就会有了语法高亮的功能。
可以把喜欢的各种设置添加到这个 vimrc 文件中。
要了解更多信息请输入 :help vimrc-intro
14、使用键进行命令行补全
补全对于许多命令都有效,当输入: 命令时,tab键可以匹配补全。
15、vim自带了一个教程说明,我们可以直接输入vimtutor,打开教程做相应的练习即可。
全局
:h[elp] 关键字 - 打开关键字帮助
:sav[eas] 文件名 - 另存为
:clo[se] - 关闭当前窗口
:ter[minal] - 打开一个shell窗口
K - 打开光标所在单词的man页面
移动光标
h - 左移光标
j - 下移光标
k - 上移光标
l - 右移光标
H - 移动到当前页面顶部
M - 移动到当前页面中间
L - 移动到当前页面底部
w - 移动到下个单词开头
W - 移动到下个单词开头(单词含标点)
e - 移动到下个单词结尾
E - 移动到下个单词结尾(单词含标点)
b - 移动到上个单词开头
B - 移动到上个单词开头(单词含标点)
ge - 移动到上个单词结尾
gE - 移动到上个单词结尾(单词含标点)
% - 跳转到配对的符号(默认支持的配对符号组::'()', '{}', '[]' - 在vim中使用 :h matchpairs 获得更多信息)
0 - 移动到行首
^ - 移动到行首的非空白符
$ - 移动到行尾
g_ - 移动到行内最后一个非空白符
gg - 移动到文件第一行
G - 移动到文件最后一行
5gg or 5G -移动到第五行
gd - 跳转到局部定义
gD - 跳转到全局定义
fx - 移动到字符 x 下次出现的位置
tx - 移动到字符 x 下次出现的位置的前一个字符
Fx - 移动到字符 x 上次出现的位置
Tx - 移动到字符 x 上次出现的位置的后一个字符
; - 重复之前的f、t、F、T操作
, - 反向重复之前的f、t、F、T操作
} - 移动到下一个段落(当编辑代码时则为函数/代码块)
{ - 移动到上一个段落(当编辑代码时则为函数/代码块)
zz - 移动屏幕使光标居中
Ctrl + e -向下移动屏幕一行(保持光标不动)
Ctrl + y -向上移动屏幕一行(保持光标不动)
Ctrl + b - 向上滚动一屏
Ctrl + f - 向下滚动一屏
Ctrl + d - 向下滚动半屏
Ctrl + u - 向上滚动半屏
插入模式 - 插入/追加文本
i - 从光标前开始插入字符
I - 从行首开始插入字符
a - 从光标后开始插入字符
A - 从行尾开始插入字符
o - 在当前行之下另起一行, 开始插入字符
O - 在当前行之上另起一行, 开始插入字符
ea - 从当前单词末尾开始插入
Ctrl + h -在插入模式下,删除光标前的字符
Ctrl + w -在插入模式下,删除光标前的单词
Ctrl + j -在插入模式下,另起一行
Ctrl + t -在插入模式下,向右缩进,宽度由 shiftwidth 控制
Ctrl + d -在插入模式下,向左缩进,宽度由 shiftwidth 控制
Ctrl + n -在插入模式下,在光标之前插入自动补全的下一个匹配项
Ctrl + p -在插入模式下,在光标之前插入自动补全的上一个匹配项
Ctrl + rx - 插入寄存器x 的内容
Ctrl + ox -暂时进入正常模式以发出一个正常模式命令 x。
Esc - 退出插入模式
编辑文本
r - 替换当前字符
R -在 ESC 按下之前,替换多个字符
J - 将下一行合并到当前行,并在两部分文本之间插入一个空格
gJ - 将下一行合并到当前行,两部分文本之间不含空格
gwip - 重新调整段落
g~ - switch case up tomotion
gu - 小写操作修饰符
gU - 大写操作修饰符
cc - 将光标所在的行删除, 然后进入插入模式
C - 将光标处到行尾删除, 然后进入插入模式
c$ - 将光标处到行尾删除, 然后进入插入模式
ciw - 将光标所在的单词删除, 然后进入插入模式
cw or ce -从光标位置开始, 修改单词
s - 删除当前字符, 然后进入插入模式
S - 清空当前行, 然后进入插入模式 (同cc)
xp - 当前字符后移
u - 撤销
U - 撤销上一次的改动行的操作
Ctrl + r -重做(取消撤销)
. - 再次执行上个命令
选择文本(可视化模式)
v - 进入可视化模式, 移动光标高亮选择, 然后可以对选择的文本执行命令
V - 进入可视化模式(行粒度选择)
o - 切换光标到选择区开头/结尾
Ctrl + v -进入可视化模式(矩阵选择)
O - 切换光标到选择区的角
aw - 选择当前单词
ab - 选择被 () 包裹的区域(含括号)
aB - 选择被 {} 包裹的区域(含花括号)
at - 选择被 <>标签包裹的区域(含<>标签)
ib - 选择被 () 包裹的区域(不含括号)
iB - 选择被 {} 包裹的区域(不含花括号)
it - 选择被 <>标签包裹的区域(不含<>标签)
Esc - 退出可视化模式
可视化模式命令
> - 向右缩进
< - 向左缩进
y - 复制
d - 剪切
~ - 大小写切换
u - 将选中文本转换为小写
U - 将选中文本转换为大写
剪切, 复制, 粘贴
yy - 复制当前行
2yy - 复制 2 行
yw - 复制当前单词
yiw - 复制光标处的单词
yaw - 复制光标处的单词及其前后的空格
y$ - 复制, 从光标位置到行末
p - 在光标后粘贴
P - 在光标前粘贴
dd - 剪切当前行
2dd - 剪切 2 行
dw - 剪切当前单词
diw - 删除光标处的单词
daw - 删除光标处的单词及其前后的空格
D - 剪切, 从光标位置到行末
d$ - 剪切, 从光标位置到行末 (同D)
x - 剪切当前字符
文字缩进
>> - 将当前行向右缩进,宽度由 shiftwidth 控制
<< - 将当前行向左缩进,宽度由shiftwidth 控制
>% - 向右缩进 () 或 {} 内的区域(光标需置于括号上)
>ib - 向右缩进 () 内的区域
>at - 向右缩进 <> 标签内的区域
3== - 自动缩进 3 行
=% - 自动缩进 () 或 {} 内的区域 (光标需置于括号上)
=iB - 自动缩进 {} 内的区域(光标需置于括号上)
gg=G - 自动缩进整个缓冲区
]p - 粘贴并调整缩进至当前行
退出
:w - 保存
:w !sudo tee % - 使用 sudo 保存当前文件
:wq or :x or ZZ -保存并退出
:q - 退出(修改未保存时警告)
:q! or ZQ -不保存强制退出
:wqa - 保存所有标签页并全部退出
查找/替换
/pattern -查找pattern
?pattern -向上查找pattern
n - 查找下一个
N - 查找上一个
:%s/old/new/g - 替换全部
:%s/old/new/gc - (逐个)替换
:noh[lsearch] - 移除搜索结果的高亮显示
多文件搜索
:vim[grep] /pattern/{`{file}`} - 在多个文件中搜索 pattern
:cn[ext] - 移动至下一个
:cp[revious] - 移动至上一个
:cope[n] - 打开搜索结果列表
标签
:tabnew or :tabnew{page.words.file} - 在新标签中打开文件
Ctrl + wT -将窗口变成标签
gt or :tabn[ext] -切换到下一个标签
gT or :tabp[revious] -切换到上一个标签
#gt - 切换到第# 个标签
:tabm[ove] # - 移动标签到第# 位(下标从 0 开始)
:tabc[lose] - 关闭当前标签
:tabo[nly] - 关闭其他标签
:tabdo command - 在所有标签中执行命令
多文件编辑
:e[dit] 文件名 - 新建缓冲区打开 filename
:bn[ext] - 切换到下个缓冲区
:bp[revious] - 切换到上个缓冲区
:bd[elete] - 关闭缓冲区
:ls or :buffers -列出所有打开的缓冲区
:sp[lit] 文件名 - 新建缓冲区打开 filename 并水平分割窗口
:vs[plit] 文件名 - 新缓冲区打开filename 并垂直分割窗口
:vert[ical] ba[ll] - editall buffers as vertical windows
:tab ba[ll] - edit allbuffers as tabs
Ctrl + ws -水平分割窗口
Ctrl + wv -垂直分割窗口
Ctrl + ww -在窗口间切换
Ctrl + wq - 关闭窗口
Ctrl + wx - 将窗口切换到下一个窗口
Ctrl + w= - 使所有窗口的高度和宽度相等
Ctrl + wh -切换到左侧窗口
Ctrl + wl -切换到右侧窗口
Ctrl + wj -切换到下侧窗口
Ctrl + wk -切换到上侧窗口
Ctrl + wH -使游标所在视窗全高并移至最左 (最左垂直视窗)
Ctrl + wL -使游标所在视窗全高并移至最右 (最右垂直视窗)
Ctrl + wJ -使游标所在视窗全宽并移至最下 (最下水平视窗)
Ctrl + wK -使游标所在视窗全宽并移至最上 (最上水平视窗)
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !