欢迎光临散文网 会员登陆 & 注册

oeasy教您玩转vim - 51 - # 读写文件

2021-10-02 08:53 作者:oeasy  | 我要投稿

读写文件

回忆上节课内容🤔

  • 命令行的光标控制

    • 方向键⬅️️➡️️️可以控制左右移动

    • shift+⬅️️➡️️️按照word左右移动光标

    • ctrl+b到开头begin

    • ctrl+e到结尾end

    • ctrl+w向前删除一个word

    • ctrl+u删除到开头

  • 历史命令的遍历

    • 方向键↑️↓️️️

  • 命令行的历史记录

    • :history

    • :his -5

    • :his s

  • 进入命令历史记录编辑

    • 命令行状态下ctrl+f

    • 或者正常模式下q:

    • 选择、编辑、回车

  • 使用寄存器

    • 命令行状态下ctrl+r

    • 然后输入寄存器的名称就可以了

  • 命令模式可以读写文件吗?🤔

打开文件

  • 我们一般打开文件的方法是在 shell 里面

    • vi oeasy.txt

  • 如果我们直接进入了vi还可以再打开文件吗?

    • 可以!

    • :e oeasy.txt

    • 就可以打开oeasy.txt

    • e意味着edit

  • 不清楚的话

    • 可以:h :e看到手册!

  • 如果我们不知道要打开文件的名字

    • 可以执行:!ls看到相应的名字

  • 可以打开目录么?

  • 试试!👊

打开目录

  • 直接 :e .

  • 可以打开当前目录

    • . 代表当前目录

    • :pwd 可以看到当前目录

    • 就是运行 vi 的目录

  • 上下方向键选择我们需要编辑的文件

  • 然后回车开始编辑这个文件

netrw插件

netrw插件

  • 右上角看到插件名称和版本

    • netrew

    • v165

  • :h netrw

常用命令

  • - 向上一层

  • D Delete

  • R Rename

  • s sort 切换模式

  • x 特殊 在File Manager中打开

执行命令

  • 有些命令没有快捷键

  • 新建文件夹

    • !mkdir oeasy

  • 新建文件

    • e oeasy.rs

读取文件

  • 已经打开了一个缓存文件 oeasy.txt

  • 我们可以用 :r 进行读取

    • 比如有个 oeasy.css 在当前目录下

    • 我们可以 :r oeasy.css

  • 这样是插入整个文件,我们也可以控制范围

    • :1,3r oeasy.css 就是只插入 oeasy.css1-3

    • 还可以把命令的结果插入当前文件 :r !ls

    • 这会让 !ls 的输出结果流到当前光标位置

  • 复杂的也可以 :r !ls -lah

  • 也可以控制range

    • :4,9r !ls -lah

    • read 输出结果的 4-9

  • :h :r

    • 查询r命令的帮助手册

    • 手册告诉我们r意味着read

固定列宽

  • :h gq

具体控制

#先更新源sudo apt update#fortune可以输出谚语 在<linux>教程那部分有介绍sudo apt install fortune #使用fortune生成谚语fortune -l#进入vi

  • :r !fortune -l

  • :set nopaste

  • :set textwidth=30

    • 控制文字宽度为30

  • gq3k

    • 本行和下面三行 gq 控制宽度

  • 那可以再改变宽度么?

改变宽度

  • :set textwidth=50

  • gq8k

使用管道

#先安软件 fortune、boxes、lolcat  在<linux>教程那部分有介绍sudo apt install fortune boxes catlol#使用fortune生成谚语fortune -l#把谚语通过管道送入boxesfortune -l | boxes -d cat#改成彩色fortune -l | boxes -d cat | lolcat#进入vi:r !fortune -l | boxes -d cat

扩展命令区

  • 可以设置:set cmdheight=3增大命令区高度

  • 确实可以增加命令区高度

  • 不过,这并不究竟

  • 回忆一下

    • 搜到后,修改好,回车执行

    • 然后:visual切换回来

    • 正常模式下可以使用Q进入Ex命令行模式

    • 或者正常模式下q:进入搜索命令的模式

写文件

  • 我们先查:h :w

    • :w 意味着 write

    • :w o3z.txt 把当前文件内容写到 o3z.txt

  • 加上{range}

    • :3,8w o3z.txt把第3到第8行写到 o3z.txt

  • 如果o3z.txt不存在怎么办?

    • :w! o3z 先建立文件再写入

    • 强制写

    • 但是如果已经存在的文件会造成覆盖

  • 想要追加append应该如何

    • :w o3z.txt >> 把内容追加写入到 o3z.txt

面对崩溃

  • vi oeasy.txt

    • 写上一些东西

    • 然后等一小段时间

    • 并不保存

  • 新开一个终端

    • ls -a .oeasy.txt.*

    • 发现已存了一个.oeasy.txt.swp

  • 把原来的终端关上

    • 相当于原来的终端崩溃了

    • 因为第一个终端没有保存文件

    • oeasy.txt不存在

  • vi oeasy.txt

    • 会提醒我虽然没有oeasy.txt

    • 但是替换文件swp是有的

    • 刚才没存到文件的东西

    • 这样可以恢复

  • vi -R oeasy.txt

    • 这样可以恢复

多人编辑

  • 一个终端打开并编辑oeasy.txt

  • 另一个终端也想打开并编辑oeasy.txt

  • 这个时候有一些细节

  • 建议

    • 观察两个文件的时间

    • 用较新的文件

    • 应避免类似的情形

  • 如果需要同时写一个文件

    • 建议用 git之类的 版本控制工具

总结

  • 我们这次研究了文件读写

  • 打开是e,edit

    • :e oeasy.txt

    • :e .

  • 读是:r,read

    • :1,3r o2z.txt 范围读

    • :4,9r !ls -lah 读shell命令运行结果

  • 写是:w,write

    • :w o3z.txt 直接写

    • :3,8w o3z.txt 范围写

    • :w o3z.txt >> 追加写

    • :w! o3z 强制写

  • 命令行可以进行批量替换么?🤔

  • 下次再说 *

[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)


oeasy教您玩转vim - 51 - # 读写文件的评论 (共 条)

分享到微博请遵守国家法律