Vim使用方法
如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)
在终端中直接输入:vimtutor
- 移动光标:
^
k 提示: h 的键位于左边,每次按下就会向左移动。
< h l > l 的键位于右边,每次按下就会向右移动。
j j 键看起来很象一支尖端方向朝下的箭头。
v
- vim的进入和退出:
:q! 直接退出,丢弃编辑器的改动
:wq. 保存并退出
- 删除光标所在的字符
x 小写x
- 插入
i 光标前插入,进入编辑模式
A 光标跳到整行的最后,进入编辑模式
第一讲小结
1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。
h (左移) j (下行) k (上行) l (右移)
2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>
3. 欲退出 Vim 编辑器,请输入 <ESC> :q! <回车> 放弃所有改动。
或者输入 <ESC> :wq <回车> 保存改动。
4. 在正常模式下删除光标所在位置的字符,请按: x
5. 欲插入或添加文本,请输入:
i 输入欲插入文本 <ESC> 在光标前插入文本
A 输入欲添加文本 <ESC> 在一行后添加文本
特别提示:按下 <ESC> 键会带您回到正常模式或者撤消一个不想输入或部分完整的命令
- 删除类
dw 光标处删除至一个单词的末尾
d$ 从当前光标处删除到行末
- 命令和对象
d motion d是删除操作符,motion是操作符的操作对象
dw 删除从当前光标位置到下一个单词起始处
de 删除从当前光标位置到单词末尾
d$ 删除当前光标开始到行末
- 使用计数指定动作
0 将光标移动到行首
2w 向后动两个单词
3e 向后移动第三个单词的末尾
- 计数来删除
d number(数字) motion
d2w 删除2个单词
dd 删除整行
2dd 删除两行
- 撤销类命令
u 撤销最后执行的命令
U 撤销对整行的修改
CTRL-R 重做被撤销的命令
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二讲小结
1. 欲从当前光标删除至下一个单词,请输入:dw
2. 欲从当前光标删除至当前行末尾,请输入:d$
3. 欲删除整行,请输入:dd
4. 欲重复一个动作,请在它前面加上一个数字:2w
5. 在正常模式下修改命令的格式是:
operator [number] motion
其中:
operator - 操作符,代表要做的事情,比如 d 代表删除
[number] - 可以附加的数字,代表动作重复的次数
motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),
$ 代表行末等等。
6. 欲移动光标到行首,请按数字0键:0
7. 欲撤消以前的操作,请输入:u (小写的u)
欲撤消在一行中所做的改动,请输入:U (大写的U)
欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 置放类命令
p 将最后一次删除的内容置放在光标之后
可以使用这个来进行剪切功能
- 替换类命令
r 替换当前光标所在字符
ce 改变文本直到一个单词的末尾,其实就是删除从光标开始的单词末尾然后进入编辑模式,= de + i 命令
c [number] motion 和c和d性质一样,c是删除并插入,ce,c$都是和de,d$同理
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三讲小结
1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除
的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置
于当前光标所在行的下一行。
2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字符即可。
3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。
比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当
前光标到行末的内容。
4. 更改类命令的格式是:
c [number] motion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 定位及文件状态
CTRL-G 显示文件信息及所在行列
G 跳转到最后一行
gg 跳转到第一行
[number]G 跳转到number行
- 搜索类命令
/[string] 搜索字符串,n查找下一次字符串,N查找上一次字符串
?[string] 搜索字符串,n上一个字符串,N下一个字符串
CTRL-O 跳回之前的位置
CTRL-I 跳到较新的位置
如果查找已经到达文件末尾,则会重新查找,除非‘wrapscan’被复位
- 配对括号的查找
% 可以来回跳转光标来查询是否匹配括号,() [] {}
在程序调试时,这个功能来查询不匹配的括号是很有用的
- 替换命令
:s/old/new 替换old为new,但是只会改变光标所在行的第一个匹配串
:s/old/new/g 替换全行
:#,#s/old/new/g #,#代表的是替换操作的若干行中首位两行的行号,例如 10,999s/old/new/g
:%s/old/new/g 替换整个文件
:%s/old/new/gc 找到整个文件,并提示是否替换
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四讲小结
1. CTRL-G 用于显示当前光标所在位置和文件状态信息。
G 用于将光标跳转至文件最后一行。
先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。
gg 用于将光标跳转至文件第一行。
2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。
输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。
完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查
找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。
CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。
3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。
4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 :s/old/new
在一行内替换所有的字符串 old 为新的字符串 new,请输入 :s/old/new/g
在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g
进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 在VIM内执行外部命令的方法
:![shell] 可以直接shell命令,例如 :!ls 会显示当前目录
- 一个具有选择性的
v 进入可视模式,这个时候可以进行选择,可以删除,或者保存
v 进入可视模式,按:,底部会出现 :'<,'> 然后在进行输入 w filename,则会选择保存选中部分内容
- 提取和合并文件
:r FILENAME 可以将名为FILENAME的文件提取进来,所提取的文件在光标所在位置开始
:r !ls 还可以读取外部命令的输出
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第五讲小结
1. :!command 用于执行一个外部命令 command。
请看一些实际例子:
(MS-DOS) (Unix)
:!dir :!ls - 用于显示当前目录的内容。
:!del FILENAME :!rm FILENAME - 用于删除名为 FILENAME 的文件。
2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。
3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件FILENAME 中。
4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。
5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 打开类命令
o 在光标下一行进入插入模式
O 在光标上一行进入插入模式
- 附加类命令
a 在光标后插入模式
w 光标跳到下一个单词第一个字母
e 光标跳到下一个单词末尾
- 置换类命令
R 替换模式,可以一直替换
- 复制粘贴文本
v 可视模式选中文本
y 复制选中的文本,还可以yw复制一个单词
p 粘贴
% 行末
- 设置类命令
设置可使查找或者替换可忽略大小写
:set ic 即set ignore case的缩写,忽略大小写
:set noic 不忽略大小写
/ignore\c 仅在一次查询时忽略大小写
:set hls is 设置查询高亮
:nohlsearch 移除匹配项高亮显示
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第六讲小结
1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。
输入大写的 O 可以在光标上方打开新的一行。
2. 输入小写的 a 可以在光标所在位置之后插入文本。
输入大写的 A 可以在光标所在行的行末之后插入文本。
3. e 命令可以使光标移动到单词末尾。
4. 操作符 y 复制文本,p 粘贴先前复制的文本。
5. 输入大写的 R 将进入替换模式,直至按 <ESC> 键回到正常模式。
6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
'ic' 'ignorecase' 查找时忽略字母大小写
'is' 'incsearch' 查找短语时显示部分匹配
'hls' 'hlsearch' 高亮显示所有的匹配短语
选项名可以用完整版本,也可以用缩略版本。
7. 在选项前加上 no 可以关闭选项: :set noic
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 在线帮助系统
:help 会出现一个帮助窗口
CTRL-W 可以在窗口之间跳转
:help [command] 可以直接找到该帮助主题
- 创建启动脚本
创建一个vimrc文件
开始编辑vimrc文件,取决于使用的操作系统
:edit ~/.vimrc UNIX系统
:edit ~/_vimrc MS-Windows系统
读取vimrc示例文件
:r $VIMRUNTIME/vimrc_example.vim
保存文件
:write
- 补全功能
<TAB>
CTRL-D
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第七讲小结
1. 输入 :help 或者按 <F1> 键或 <Help> 键可以打开帮助窗口。
2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。
3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。
4. 输入 :q 以关闭帮助窗口
5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。
按 <TAB> 可以使用一个补全。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vim 的用户手册,使用的命令是: :help user-manual
下面这本书值得推荐用于更进一步的阅读和学习:
Vim - Vi Improved - 作者:Steve Oualline
出版社:New Riders
这是第一本完全讲解 Vim 的书籍。它对于初学者特别有用。其中包含有大量实例
和图示。
欲知详情,请访问 https://iccf-holland.org/click5.html
以下这本书比较老了而且内容更多是关于 Vi 而非 Vim,但是也值得推荐:
Learning the Vi Editor - 作者:Linda Lamb
出版社:O'Reilly & Associates Inc.
这是一本不错的书,通过它您几乎能够了解到任何您想要使用 Vi 做的事情。
此书的第六个版本也包含了一些关于 Vim 的信息。
本教程已由 Bram Moolenaar 专为 Vim 进行修订。 译制者附言: =========== 简体中文教程翻译版之译制者为梁昌泰 <beos@turbolinux.com.cn>,还有 另外一个联系地址:linuxrat@gnuchina.org。 繁体中文教程是从简体中文教程翻译版使用 Debian GNU/Linux 中文项目小 组的于广辉先生编写的中文汉字转码器 autoconvert 转换而成的,并对转 换的结果做了一些细节的改动。 变更记录: ========= 2012年10月01日 赵涛 <alick9188@gmail.com> 将 vimtutor 中译版从 1.5 升级到 1.7。 2002年08月30日 梁昌泰 <beos@turbolinux.com.cn> 感谢 RMS@SMTH 的指正,将多处错误修正。 2002年04月22日 梁昌泰 <linuxrat@gnuchina.org> 感谢 xuandong@sh163.net 的指正,将两处错别字修正。 2002年03月18日 梁昌泰 <linuxrat@gnuchina.org> 根据Bram Moolenaar先生在2002年03月16日的来信要求,将vimtutor1.4中译 版升级到vimtutor1.5。 2001年11月15日 梁昌泰 <linuxrat@gnuchina.org> 将vimtutor1.4中译版提交给Bram Moolenaar和Sven Guckes。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PowerVim暂时还没整理记录,后续有时间再写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?