1. 爱玩数码首页
  2. 投稿

vim编辑器基础使用讲解(附vim超实用指南收藏这一篇就够了)

vim是一个Unix文本编辑器,它以快速高效而闻名,是在终端中运行的小应用程序(当然也有图形界面),它最主要的特点是完全可以通过键盘控制,而不需要菜单栏或鼠标。

例如,将文本插入到文件中,按i键并输入。浏览文本或输入命令,在键盘上按Esc,然后按下对应的任何键或组合键。对于大多数人来说,是一种非常不寻常的文本编辑方式,但这是基于Linux环境工作的开发者编辑配置文件、更改脚本、编写代码等操作的主流方式。

本文将介绍一些必要的基本命令,以供大家很快很容易地掌握vim编辑器。建议初学者在使用中进行学习,而不是只看不动手。不实战操作,那你可能很快忘记这些命令。

vim编辑器基础使用讲解(附vim超实用指南收藏这一篇就够了)

使用vim打开文件后,一般会用到三种模式:命令模式(command mode)、输入模式(insert mode)和底行命令模式(last line mode)。

刚启动vim时,默认进入命令模式。这时候,我们敲打键盘的字母会被识别为不同的命令。如方向键h、j、k、l输入键i、a、o,切换到输入模式;冒号键:,切换到底行命令模式。

进入输入模式,可以任意的码入字母、符号,按esc键退出到命令模式。

在底行命令模式,可以输入单个或者多个命令,按enter键结束运行。

vim编辑器基础使用讲解(附vim超实用指南收藏这一篇就够了)

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> 键 (如果键盘上有的话)

– 按下 <F1> 键 (如果键盘上有的话)

– 输入 :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>键进行命令行补全

补全对于许多命令都有效,当输入: 命令时,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 to motion
  • 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$ – 剪切, 从光标位置到行末 (同<kbd>D</kbd>)
  • x – 剪切当前字符

文字缩进

  • >> – 将当前行向右缩进,宽度由 shiftwidth 控制
  • << – 将当前行向左缩进,宽度由 shiftwidth 控制
  • >% – 向右缩进 () 或 {} 内的区域 (光标需置于括号上)
  • >ib – 向右缩进 () 内的区域
  • >at – 向右缩进 <> 标签内的区域
  • 3== – 自动缩进 3 行
  • =% – 自动缩进 () 或 {} 内的区域 (光标需置于括号上)
  • =iB – 自动缩进 {} 内的区域 (光标需置于括号上)
  • gg=G – 自动缩进整个缓冲区
  • ]p – 粘贴并调整缩进至当前行

退出

  • :w – 保存
  • :w !sudo tee % – 使用 sudo 保存当前文件
  • :wq or 😡 or ZZ – 保存并退出
  • :q – 退出(修改未保存时警告)
  • :q! or ZQ – 不保存强制退出
  • :wqa – 保存所有标签页并全部退出

查找/替换

  • /pattern – 查找<kbd>pattern</kbd>
  • ?pattern – 向上查找<kbd>pattern</kbd>
  • n – 查找下一个
  • N – 查找上一个
  • :%s/old/new/g – 替换全部
  • :%s/old/new/gc – (逐个)替换
  • :noh[lsearch] – 移除搜索结果的高亮显示

多文件搜索

  • :vim[grep] /pattern/{`{file}`} – 在多个文件中搜索 <kbd>pattern</kbd>
  • :cn[ext] – 移动至下一个
  • :cp[revious] – 移动至上一个
  • :cope[n] – 打开搜索结果列表

标签

  • :tabnew or :tabnew {page.words.file} – 在新标签中打开文件
  • Ctrl + wT – 将窗口变成标签
  • gt or :tabn[ext] – 切换到下一个标签
  • gT or :tabp[revious] – 切换到上一个标签
  • #gt – 切换到第<kbd>#</kbd> 个标签
  • :tabm[ove] # – 移动标签到第<kbd>#</kbd> 位(下标从 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] – edit all buffers as vertical windows
  • :tab ba[ll] – edit all buffers 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 – 使游标所在视窗全宽并移至最上 (最上水平视窗)

vim编辑器基础使用讲解(附vim超实用指南收藏这一篇就够了)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至87172970@qq.com举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论