文字编辑软件linux教程vim编辑器学习文本编辑器vim




文字编辑软件linux教程vim编辑器学习文本编辑器vim

2022-07-20 21:11:10 网络知识 官方管理员

本文目录

  • vi和vim简介
  • 使用vim初步
  • 扩展命令模式
  • 命令模式
  • 可视化模式
  • 文件模式
  • 多窗口模式
  • vim的寄存器
  • 标记和宏(macro)
  • 编辑二进制文件
  • 帮助
  • vim总结图

vi和vim简介

在Linux中我们经常编辑修改文本文件,即由ASCII,Unicode或其它编码的纯文字的文件。之前介绍过nano,实际工作中我们会使用更为专业,功能强大的工具

文本编辑种类:

  • 全屏编辑器:nano(字符工具),gedit(图形化工具),vi,vim
  • 行编辑器:sed

vi

Visualeditor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大

vim

VIsualeditoriMproved,和vi使用方法一致,但功能更为强大,不是必备软件

官网:www.vim.org

其他相关编辑器:gvim一个Vim编辑器的图形版本

vim小抄

文字编辑软件(linux教程vim编辑器学习)(1)

使用vim初步

2.1vim命令格式

vim[OPTION]...FILE...
  • #打开文件后,让光标处于第#行的行首,默认行尾
  • /PATTERN让光标处于第一个被PATTERN匹配到的行行首
  • -bfile二进制方式打开文件
  • -dfile1file2…比较多个文件,相当于vimdiff
  • -mfile只读打开文件
  • -efile直接进入ex模式,相当于执行exfile

说明:

  • 如果该文件存在,文件被打开并显示内容
  • 如果该文件不存在,当编辑后第一次存盘时创建它

2.2三种主要模式和转换

vim是一个模式编辑器,击键行为是依赖于vim的的“模式”

三种常见模式:

  • 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
  • 插入(Insert)或编辑模式:用于修改文本
  • 扩展命令(extendedcommand)或命令(末)行模式:保存,退出等

模式转换

文字编辑软件(linux教程vim编辑器学习)(2)

  • 命令模式-->插入模式

iinsert,在光标所在处输入

I在当前光标所在行的行首输入

aappend,在光标所在处后面输入

A在当前光标所在行的行尾输入

o在当前光标所在行的下方打开一个新行

O在当前光标所在行的上方打开一个新行

  • 插入模式---ESC----->命令模式
  • 命令模式----:---->扩展命令模式
  • 扩展命令模式----ESC,enter---->命令模式

扩展命令模式

按“:”进入Ex模式,创建一个命令提示符:处于底部的屏幕左侧

3.1扩展命令模式基本命令

w写(存)磁盘文件wq写入并退出x写入并退出X加密q退出q!不存盘退出,即使更改都将丢失rfilename读文件内容到当前文件中wfilename将当前文件内容写入另一个文件!command执行命令r!command读入命令的输出

3.2地址定界

格式:

:start_pos,end_poscmd#具体第#行,例如2表示第2行#,#从左侧#表示起始行,到右侧#表示结尾行#,#从左侧#表示的起始行,加上右侧#表示的行数,范例:2,3表示2到5行.当前行$最后一行.,$-1当前行到倒数第二行%全文,相当于1,$/pattern/从当前行向下查找,直到匹配pattern的第一行,即:正则表达式/pat1/,/pat2/从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束#,/pat/从指定行开始,一直找到第一个匹配patttern的行结束/pat/,$向下找到第一个匹配patttern的行到整个文件的结尾的所有行

地址定界后跟一个编辑命令

d删除y复制wfile:将范围内的行另存至指定文件中rfile:在指定位置插入指定文件中的所有内容

3.3查找并替换

格式

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用正则表达式模式

替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容

修饰符:

  • i忽略大小写
  • g全局替换,默认情况下,每一行只替换第一次出现
  • gc全局替换,每次替换前询问

说明:查找替换中的分隔符/可替换为其它字符,如:#,@

范例:

s@/etc@/var@gs#/boot#/#i

3.4定制vim的工作特性

配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc

扩展命令模式:当前vim进程有效

3.4.1行号

显示:setnumber,简写setnu

取消显示:setnonumber,简写setnonu

3.4.2忽略字符的大小写

启用:setignorecase,简写setic

不忽略:setnoic

3.4.3自动缩进

启用:setautoindent,简写setai

禁用:setnoai

3.4.4复制保留格式

启用:setpaste

禁用:setnopaste

3.4.5显示Tab和换行符^I和$显示

启用:setlist

禁用:setnolist

3.4.6高亮搜索

启用:sethlsearch

禁用:setnohlsearch

3.4.7语法高亮

启用:syntaxon

禁用:syntaxoff

3.4.8文件格式

启用windows格式:setfileformat=dos

启用unix格式:setfileformat=unix

简写setff=dos|unix

3.4.9设置文本宽度

settext width=65(vimonly)

setwrapmargin=15

3.4.10设置光标所在行的标识线

启用:setcursorline,简写setcul

禁用:setnocursorline

3.4.11加密

启用:setkey=password

禁用:setkey=

3.4.12了解更多

set帮助

:helpoption-list

:setor:setall

命令模式

命令模式功能强大,只是按键时,看不到输入,所以需要大量的记忆才能更好的使用。

4.1退出VIM

  • ZZ保存退出
  • ZQ不保存退出

4.2光标跳转

字符间跳转:

  • h:左L:右j:下k:上
  • #COMMAND:跳转由#指定的个数的字符

单词间跳转:

  • w:下一个单词的词首
  • e:当前或下一单词的词尾
  • b:当前或前一个单词的词首
  • #COMMAND:由#指定一次跳转的单词数

当前页跳转:

  • H:页首
  • M:页中间行
  • L:页底
  • zt:将光标所在当前行移到屏幕顶端
  • zz:将光标所在当前行移到屏幕中间
  • zb:将光标所在当前行移到屏幕底端

行首行尾跳转:

  • ^跳转至行首的第一个非空白字符
  • 0跳转至行首
  • $跳转至行尾

行间移动:

  • #G或者扩展命令模式下:#跳转至由第#行
  • G最后一行
  • 1G,gg第一行

句间移动:

)下一句(上一句

段落间移动:

}下一段{上一段

命令模式翻屏操作

  • Ctrlf向文件尾部翻一屏
  • Ctrlb向文件首部翻一屏
  • Ctrld向文件尾部翻半屏
  • Ctrlu向文件首部翻半屏

4.3字符编辑

  • x删除光标处的字符
  • #x删除光标处起始的#个字符
  • xp交换光标所在处的字符及其后面字符的位置
  • ~转换大小写
  • J删除当前行后的换行符

4.4替换命令(replace)

r替换光标所在处的字符

R切换成REPLACE模式,按ESC回到命令模式

4.5删除命令(delete)

  • d删除命令,可结合光标跳转字符,实现范围删除
  • d$删除到行尾
  • d^删除到非空行首
  • d0删除到行首
  • dw
  • de
  • db
  • #COMMAND
  • dd:删除光标所在的行
  • #dd多行删除
  • D:从当前光标位置一直删除到行尾,等同于d$

4.6复制命令(yank)

  • y复制,行为相似于d命令
  • y$
  • y0
  • y^
  • ye
  • yw
  • yb
  • #COMMAND
  • yy:复制行
  • #yy复制多行
  • Y:复制整行

4.7粘贴命令(paste)

p缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

4.8改变命令(change)

  • c:删除后切换成插入模式
  • c$
  • c^
  • c0
  • cb
  • ce
  • cw
  • #COMMAND
  • cc:删除当前行并输入新内容,相当于S
  • #cc
  • C:删除当前光标到行尾,并切换成插入模式,相当于c$

4.9查找

  • /PATTERN:从当前光标所在处向文件尾部查找
  • ?PATTERN:从当前光标所在处向文件首部查找
  • n:与命令同方向
  • N:与命令反方向

4.10撤消更改

  • u撤销最近的更改
  • #u撤销之前多次更改
  • U撤消光标落在这行后所有此行的更改
  • Ctrl-r重做最后的“撤消”更改
  • .重复前一个操作
  • #.重复前一个操作#次

4.11高级用法

<startposition><command><endposition>

常见Command:y复制、d删除、gU变大写、gu变小写

范例:

0y$命令0→先到行头y→从这里开始拷贝$→拷贝到本行最后一个字符

范例:粘贴“wang”100次

100iwang[ESC]
  • di"光标在”“之间,则删除”“之间的内容
  • yi(光标在()之间,则复制()之间的内容
  • vi[光标在[]之间,则选中[]之间的内容
  • dtx删除字符直到遇见光标之后的第一个x字符
  • ytx复制字符直到遇见光标之后的第一个x字符

可视化模式

允许选择的文本块

  • v面向字符
  • V面向整行
  • ctrl-v面向块

可视化键可用于与移动键结合使用

w)}箭头等

突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

范例:在文件行首插入#

输入ctrlv进入可视化模式输入G跳到最后1行,选中第一行输入I切换至插入模式输入#按ESC键

多文件模式

  • vimFILE1FILE2FILE3...
  • :next下一个
  • :prev前一个
  • :first第一个
  • :last最后一个
  • :wall保存所有
  • :qall不保存退出所有
  • :wqall保存退出所有

多窗口模式

7.1多文件分割

  • vim-o|-OFILE1FILE2...
  • -o:水平或上下分割
  • -O:垂直或左右分割(vimonly)
  • 在窗口间切换:Ctrlw,Arrow

7.2单文件窗口分割

  • Ctrlw,s:split,水平分割
  • Ctrlw,v:vertical,垂直分割
  • ctrlw,q:取消相邻窗口
  • ctrlw,o:取消全部窗口
  • :wqall退出

vim的寄存器

有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享寄存器名称a,b,…,z,格式:“寄存器放在数字和命令之间

范例:

3"tyy表示复制3行到t寄存器中

"tp表示将t寄存器内容粘贴

未指定,将使用无命名寄存器

有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享

标记和宏(macro)

  • ma将当前位置标记为a,26个字母均可做标记,mb、mc等等
  • 'a跳转到a标记的位置,实用的文档内标记方法,文档中跳跃编辑时很有用
  • qa录制宏a,a为宏的名称
  • q停止录制宏
  • @a执行宏a
  • @@重新执行上次执行的宏

编辑二进制文件

w写(存)磁盘文件wq写入并退出x写入并退出X加密q退出q!不存盘退出,即使更改都将丢失rfilename读文件内容到当前文件中wfilename将当前文件内容写入另一个文件!command执行命令r!command读入命令的输出0

帮助

:help

:helptopic

Use:qtoexithelp

vimtutor

vim总结图

文字编辑软件(linux教程vim编辑器学习)(3)

文字编辑软件(linux教程vim编辑器学习)(4)

文字编辑软件(linux教程vim编辑器学习)(5)



发表评论:

最近发表
网站分类
标签列表