vim 文本编辑器

vim 文本编辑器

 

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,$】
例如:【:.,$-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)

[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 ~]#
posted @ 2020-12-01 20:35  25岁男孩的梦想  阅读(88)  评论(0编辑  收藏  举报