首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vim 文本编辑器[通俗易懂]

vim 文本编辑器[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-06 17:47:26
发布2022-09-06 17:47:26
4.5K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

4.2 vim文本编辑器

4.2.1 简介

vim是vi的升级版,最常见的区别是能用多种颜色显示显示系统文件的一些特殊信息。

  • vi: Visual Interface 文本编辑器,可视化接口
  • vim:vi iMproved的缩写,即vi的增强版 vim编辑器分为三种主要模式:
  1. 命令模式(编辑模式):默认模式,移动光标,剪切/粘贴文本(界面表现:左下角显示文件名或为空)
  2. 插入模式(输入模式):修改文本(界面表现:左下角显示—INSERT–)插入模式下,按ESC按键返回命令模式
  3. 末行模式(扩展模式):保存、退出等(界面表现:左下角显示—VISUAL–)末行模式下连续按两次ESC按键返回末行模式
  • Esc建:退出当前模式
  • Esc建Esc建:总是返回到命令模式
4.2.2 语法

vim [options] [file …] vim [options] – vim [options] -t tag vim [options] -q [errorfile] ex view gvim gview evim eview rvim rview rgvim rgview

  • 用vim打开文件用法: 例如:【vim abc.txt】打开abc.txt文件 例如:【vim +# abc.txt】打开abc.txt文件,光标定位在abc.txt文件的第#行 例如:【vim + abc.txt】打开abc.txt文件,光标定位在最后一行 例如:【vim +/PATTERN abc.txt】打开abc.txt文件,定位第一次被PATTERN(模式)匹配到的行的行首
  • 模式之间的切换 注意:vim打开文件后,默认进入的模式为:命令模式: 命令模式下进入插入模式(输入模式)输入:【i】或者【o】或者【a】等 命令模式下进入末行模式(扩展模式)输入:【:】 使用vim编辑多个文件 【vim FILE1 FILE2 FILE3】可以同时编辑FILE1 FILE2 FILE3这三个文件 【:next】切换至下一个文件 【:prev】切换至前一个文件 【:last】切换至最后一个文件 【:first】切换至第一个文件
4.2.3 vim的命令模式(编辑模式)常用快捷键

1) 模式转换 a) 【i】:在当前光标所在字符的前面,转为输入模式 b) 【a】:在当前光标所在字符的后面,转换为输入模式 c) 【o】:在当前光标所在行的下方,新建一行,并转换为输入模式: d) 【I】:在当前光标所在行的行首,转换为输入模式 e) 【A】:在当前光标所在行的行尾,转换为输入模式 f) 【O】:在当前光标所在行的上方,新建一行,并转换为输入模式; g) 【cc】删除当前行并输入新内容,相当于S。扩展【#cc】 h) 【C】删除当前光标到行尾,并切换成插入模式

  • 改变命令 【c】修改后切换成插入模式
  • 命令模式–>插入模式 【c^】删除光标处到行首的字符,并进入插入模式 【c$】删除光标处到行尾的字符,并进入插入模式 【c0】(c零)删除光标处到当前行首的第一非空字符,并进入插入模式 【cb】删除当前第一个单词,并进入插入模式 【ce】删除下一个单词,并进入插入模式 【cw】删除光标处到单词词尾,并进入插入模式

2) 逐字符移动 a) 【h】向左 b) 【l】向右(小写的L) c) 【j】向上 d) 【k】向下 e) 【#COMMAND】移动#个字符 例如: 【#h】向左移动#个字符 【#l】向右移动#个字符 【#j】向上移动#个字符(相当于向上移动#行) 【#k】向下移动#个字符(相当于向下移动#行) 3) 当前页跳转 a) 【H】:当前页的页首 b) 【M】:当前页的中间行 c) 【L】当前页的页底

4) 以单词为单位移动 a) 【w】移动至下一个单词的词首 b) 【e】跳至当前或下一个单词的词尾 c) 【b】跳至当前或前一个单词的词首 d) 【#COMMAND】跳到第#个单词 例如: 【#w】跳转到第#个单词的词首 【#e】向下跳转到第#个单词的词尾 【#b】向上跳转到第#个单词的词首 5) 行内跳转 a) 【0】(零) :绝对行首,光标移动到当前行的行首 b) 【^】光标移动到当前行首的第一个非空白字符 c) 【&】光标移动到当前行的行尾 6) 行间跳转(相当于上下跳转) a) 【G】跳转到最后一行(整个文档的最后一行) b) 【gg或者1G】跳转到文档的第一行 c) 【#G】跳转到第#行(文档最上为第一行) 注意:想要跳转到最后一行可以输入【0G】也是最后一行 7) 句间移动 a) 【)】下一句 b) 【(】上一句 8) 段落间移动 a) 【}】下一段 b) 【{】上一段 9) 常用快捷键滚动 a) 【Ctrl + e】向下滚动一行 b) 【Ctrl + y】向上滚动一行 c) 【Ctrl + d】向下滚动半屏 d) 【Ctrl + u】向上滚动半屏 e) 【Ctrl + f】向下滚动一屏 f) 【Ctrl + b】向上滚动一屏 10) 字符编辑

  • 【x】删除光标处的字符
  • 【#x】删除从光标处开始向后#个字符
  • 【xp】光标所在处的字符和光标后面的字符对调位置
  • 【~】转换大小写
  • 【J】删除当前行后的换行符

11) 替换命令(r,replace)

  • 【r】替换光标所在字符
  • 【R】切换成REPLACE模式

12) 删除命令(剪切命令) 注意:d命令删除的字符会默认复制到剪贴板 a) 【d】删除命令,可以结合光标跳转字符,实现范围删除 b) 【d】删除到行尾 c) 【d^】删除到非空行首 d) 【d0】删除到行首 e) 【dd】删除光标所在行 f) 【#dd】多行删除 g) 【D】从当前光标位置一直删除到行尾,留空行,等同于【d】 h) 【de】 i) 【dw】 j) 【db】 k) 【#COMMAND】 l) 【Shift + j】删除两行质检的空行,实际上是合并两行 插入模式(输入模式下的剪切) 正常模式(默认模式)下按v(逐字)或V(逐行)进入可视模式,然后用【j】【k】【l】【h】命令移动即可选择某些行或字符,再按d即可剪切

13) 复制命令(y,yank) a) 【y】复制,可以结合光标跳转字符,实现范围复制(行为与d有类似之处) b) 【y$】复制到行尾 c) 【y^】复制到非空行首 d) 【y0】复制到行首 e) 【yy】复制当前行 f) 【#yy】复制多行 g) 【Y】整行复制 h) 【ye】 i) 【yw】 j) 【yb】 k) 【#COMMAND】

14) 粘贴命令(p,paste) a) 【p】缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则粘贴至当前光标所在处的后面 b) 【P】缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则粘贴至当前光标所在处的前面 15) 撤销更改 a) 【u】撤销最近的更改 b) 【#u】撤销之前多次更改 c) 【U】撤销光标落在这行后所有此行的更改 d) 【按Ctrl + r】重做最后的“撤销”更改(相当于取消撤销) e) 【.】重做前一个操作 f) 【#】重复前一个操作#次

4.2.4 vim的末行模式(扩展模式)

命令模式下进入末行模式(扩展模式)输入:【:】

4.2.4.1 退出命令 【:q】退出 【:x】保存退出 【:wq】保存并退出 【:q!】强制退出并或略所有更改 【:e!】放弃所有修改,并打开源文件 注意:在默认模式的退出方法 【ZZ】保存并退出 【ZQ】不保存退出 附加: 【:!COMMAND】执行COMMAND命令,和shell交互 【r!COMMAND】读入命令的输出 【r filename】读取filename文件内容到当前文件中 【w filename】将当前文件内容下入filename文件中

4.2.4.2 地址定界(可以用于查找和替换等) 语法:【:start_pos,end_pos】 例如: 【:#】具体第#行,例如2表示第2行 【#,#】从左侧#表示起始行,到右侧#表示结尾行 【#,+#】从左侧#表示的起始行,加上右侧#表示的行数 例如【:2,+3】表示2到5行 【.】表示当前行 【】最后一行 【%】全文,相当于【1,】 例如:【:.,

  • 扩展命令模式:地址定界 注意:地址界定默认是从光标位置开始(即在默认模式进入命令模式时的光标位置)向下搜索匹配(如果查到到文件结尾,依旧没找到,会从头开始查找) 【:/pat1/,/pat2/】从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 【:#,/pat/】从第#行开始,一直到第一次被pat匹配到的行结束 【:/pat/,$】从第一次被pat匹配到的行开始,一直到最后一行
  • 地址界定后面可跟随的编辑命令 【d】例如:【:/pat1/,/pat2/d】 表示,从光标位置开始向下匹配,第一次匹配到“pat1”的位置开始到第一次匹配到pat2结束是的末行,删除末行。(注意:如果匹配结果是多行,只会删除最后一行) 【y】例如:【:/pat1/,/pat2/y】 表示,从光标位置开始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置直接,复制内容到剪贴板。 【w file】将范围内的行另存至指定文件中。 例如:【:/pat1/,/pat2/w ./abc.txt】 表示从光标位置开始向下匹配,第一次匹配到pat1的位置到第一次匹配到pat2的位置内容写到当前目录下的abc.txt文件中。 【r file】在指定位置插入指定文件中的所有内容。 例如:【:/pat1/,/pat2/r ./abc.txt】 表示从光标位置开始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置的行末插入abc.txt文件内容

4.2.4.3 查找并替换

  • 【:/PATTERN】从当前光标所在处向文件尾部查找匹配“PATTERN”相同的内容。
  • 【:?PATTERN】从当前光标所在处向文件首部查找匹配“PATTERN”相同内容
  • 【n】与命令同方向
  • 【N】与命令反方向 扩展命令模型:查找并替换
  • 【s】在扩展模式下完成查找替换操作 格式:【s/要查找的内容/替换为的内容/修饰符】
    • 要查找的内容:可以使用模式
    • 替换为的内容:不能使用模式,单可以使用\1,\2等后向引用符号;还可以使用“&”引用前面查找时查找的整个内容
    • 修饰符:
      • 【i】忽略大小写
      • 【g】管局替换;默认情况下,每行只替换第一次出现
      • 【gc】全局替换,每次替换前询问

    注意:查找替换中的分隔符【/】可用其他符号替代,例如【@】【#】等

例子:【s/a/Good/g】或者【s@a@Good@g】查找当前光标所在行的“a”字符,全部替换成“Good”字符 替换后: 例如:【s#/boot#/#i】将光标所在行的【/boot】替换成【/】,默认只会替换一个,匹配时会忽略大小写 例如:【4s@^.*\(你好\).*@\1@ig】 在4行查找匹配“^.*\(你好\).*”这个正则表达式 能匹配到的内容,替换成“你好” 替换前: 替换后: 如果需要对全文替换可以使用如下命令 【:1,s/^.*\(你好\).*/\1/ig】其中【1,】为地址界定。

4.2.4.4 地址定界与查找替换扩展模式结合使用:4,8s/^.*\(你好\).*/\1/ig】这种为只替换第4行到第8行之间的内容,其中【4,8】表示4行到8行之间的内容 【:/par1/,/par2/s/^.*\(你好\).*/\1/ig】这种为从第一次匹配到par1到第一次匹配par2之间的内容中间, 按照【s/^.*\(你好\).*/\1/ig】命令进行匹配替换

4.2.4.5 帮助命令

  • 【:help or F1】显示整个帮助
  • 【:help xxx】显示xxx的帮助,比如:【:help I】【:help CTRL-[】即Ctrl+[的帮助
  • 【:help ‘number’】Vim选项的帮助用单引号刮起
  • 【:help 】特殊建的帮助用<>扩起
  • 【:help –t】Vim启动参数的帮助用-
  • 【:help –i_】插入模式下Esc的帮助,某个模式下的帮助用(模式_主题)的模式

帮助文件中位于||之间的内容是超链接,可以用Ctrl+]进入链接,Ctrl+o(Ctrl + t)返回

4.2.4.6 其他非编辑命令

  • 【:.】重复前一次命令
  • 【:set ruler?】查看是否设置了ruler,在.vimrc中,使用set命令设置的选项都可以通过这个命令查看
  • 【:scriptnames】查看vim脚本文件的位置,比如.vimrc文件,语法文件及plugin等
  • 显示非打印字符 【:set list】显示非打印字符,比如tab,空格,行尾等。如果tab无法显示,请确定用set lcs=tab:>-命令设置了.vimrc文件,并确保你的文件中的确有tab,如果开启了expendtab,那么tab将被扩展为空格。 【:set nolist】关闭非打印字符
  • 行号: 【:set number】显示行号或者【:set nu】 【:set nu】关闭行号显示
  • 大小写 【:set ignorecase】忽略区分大小写或者【:set ic】 【:set noignorecase】不忽略大小写或者【:set noic】
  • 设置自动缩进 【:set autoindent】设置自动缩进或者【:set ai】 【:set noai】取消制动缩进
  • 查找文本高亮显示或取消 【:set hlsearch】设置高亮显示 【:set nohlsearch】取消高亮显示
  • 语法高亮显示 【:syntax on】开启语法高亮显示 【:synatx off】关闭语法高亮显示
  • 辅助保留格式 【:set paste】启用复制保留格式 【:set noPaste】关闭复制保留格式
  • 文件格式 【:set fileforma=doc】启用windows格式。或者【:set ff=doc】 【:set fileforma=unix】启用unix格式。或者【:set ff=nuix】
  • 设置文本宽度 【:set textwidth=65】启用 【:set wrapmargin=15】禁用
  • 设置光标所在行的标识线 【:set cursorline】或者【:set cul】启用标识线 【:set no cursorline】或者【:set not cul】禁用标识线
  • 【:set or】查看set帮助或者【:set all】
4.2.5 vim可视化模式

默认模式下输入:

  • 【v】按照字符选取,或者【ctrl + v】
  • 【V】按矩形快选取

可视化建可用于与移动建结合使用 【w】【)】【}】箭头灯 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

4.2.6 vim多窗口

语法:【vim –o|-O FILE1 FILE2 …】 【-o】水平分割显示 【-O】垂直分割显示 命令模式下输入【:qa】关闭所有窗口 窗口间切换:Ctrl+w,Arrow

  • 单文件窗口分割:
    • 【Ctrl+w,s】split,水平分割
    • 【Ctrl+w,v】vertical,垂直分割
    • 【Ctrl+w,q】取消相邻窗口
    • 【Ctrl+w,o】取消全部窗口
    • 【:wqall】退出
4.2.7 vim配置文件

【/etc/vimrc】vim的全局配置文件 【~/.vimrc】用户的vim配置文件

4.2.8 相关编辑器

文本:ASCII,Unicode

  • 文本编辑器种类: 行编辑器:sed 全屏编辑器:nano,vi vim-Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个Vim编辑器的图形版本
4.2.9 帮助(vim –help)
代码语言:javascript
代码运行次数:0
运行
复制
[root@gdy103 ~]# vim --help
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)

用法: vim [参数] [文件 ..]       编辑指定的文件
  或: vim [参数] -               从标准输入(stdin)读取文本
  或: vim [参数] -t tag          编辑 tag 定义处的文件
  或: vim [参数] -q [errorfile]  编辑第一个出错处的文件

参数:
   --			在这以后只有文件名
   -v			Vi 模式 (同 "vi")
   -e			Ex 模式 (同 "ex")
   -s			安静(批处理)模式 (只能与 "ex" 一起使用)
   -d			Diff 模式 (同 "vimdiff")
   -y			容易模式 (同 "evim",无模式)
   -R			只读模式 (同 "view")
   -Z			限制模式 (同 "rvim")
   -m			不可修改(写入文件)
   -M			文本不可修改
   -b			二进制模式
   -l			Lisp 模式
   -C			兼容传统的 Vi: 'compatible'
   -N			不完全兼容传统的 Vi: 'nocompatible'
   -V[N][fname]		Be verbose [level N] [log messages to fname]
   -D			调试模式
   -n			不使用交换文件,只使用内存
   -r			列出交换文件并退出
   -r (跟文件名)		恢复崩溃的会话
   -L			同 -r
   -A			以 Arabic 模式启动
   -H			以 Hebrew 模式启动
   -F			以 Farsi 模式启动
   -T <terminal>	设定终端类型为 <terminal>
   -u <vimrc>		使用 <vimrc> 替代任何 .vimrc
   --noplugin		不加载 plugin 脚本
   -P[N]		打开 N 个标签页 (默认值: 每个文件一个)
   -o[N]		打开 N 个窗口 (默认值: 每个文件一个)
   -O[N]		同 -o 但垂直分割
   +			启动后跳到文件末尾
   +<lnum>		启动后跳到第 <lnum> 行
   --cmd <command>	加载任何 vimrc 文件前执行 <command>
   -c <command>		加载第一个文件后执行 <command>
   -S <session>		加载第一个文件后执行文件 <session>
   -s <scriptin>	从文件 <scriptin> 读入正常模式的命令
   -w <scriptout>	将所有输入的命令追加到文件 <scriptout>
   -W <scriptout>	将所有输入的命令写入到文件 <scriptout>
   -x			编辑加密的文件
   --startuptime <file>	Write startup timing messages to <file>
   -i <viminfo>		使用 <viminfo> 取代 .viminfo
   -h  或  --help	打印帮助(本信息)并退出
   --version		打印版本信息并退出
[root@gdy103 ~]#

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134235.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.2 vim文本编辑器
    • 4.2.1 简介
    • 4.2.2 语法
    • 4.2.3 vim的命令模式(编辑模式)常用快捷键
    • 4.2.4 vim的末行模式(扩展模式)
    • 4.2.5 vim可视化模式
    • 4.2.6 vim多窗口
    • 4.2.7 vim配置文件
    • 4.2.8 相关编辑器
    • 4.2.9 帮助(vim –help)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档