Skip to content

Latest commit

 

History

History
96 lines (66 loc) · 4.28 KB

README.md

File metadata and controls

96 lines (66 loc) · 4.28 KB

myvim

This is a vim like editor written in bash shell.

功能描述

简介

本程序使用shell脚本实现了一个命令行编辑器,并集成了Vim中常见的功能

打开方式

  1. 首先进入myshell.sh所在的文件夹
  2. 使用chmod u+x ./myshell.sh为脚本文件添加执行权限
  3. 使用命令./myshell.sh [FILE]运行编辑器,其中[FILE]为所需要编辑的文件路径(相对路径或绝对路径)

使用方法

此编辑器分为四种运行模式:命令模式command,底线命令模式lastline,插入模式insert和替换模式replace

打开编辑器后,默认进入的模式即为命令模式。在命令模式下,底部不出现模式提醒;而在其余模式下,会在文章下方提示当前所处的模式

命令模式

在命令模式下,不能直接输入字符进行插入或替换,需要通过一些命令来帮助改变文档内容(与Vim的逻辑类似)

以下为命令模式中所涉及的命令:

  1. h/j/k/l:分别代表光标向左/下/上/右移动
  2. ///:分别代表光标向上/下/左/右移动
  3. x:删除当前位置之后的字符(相当于[del]
  4. X:删除当前位置之前的字符(相当于[backspace]
  5. 0:将光标移动到当前行的最左端
  6. $:将光标移动到当前行的最右端
  7. [SPACE]:将光标向后移动$n$个字符($n$为输入空格之前输入的数字),若之前未输入数字,则默认向后移动一个字符
  8. [ENTER]:将光标向下移动$n$行($n$为输入回车之前输入的数字)
  9. [BACKSPACE]:将光标向前移动$n$个字符($n$为输入退格键之前输入的数字),若之前未输入数字,则默认向前移动一个字符
  10. G:将光标移动到指定的第$n$行($n$为输入G之前输入的数字),若之前未输入数字,则默认移动到最后一行
  11. dd:剪切从当前行开始向下的共$n$行($n$为输入dd之前输入的数字),若之前未输入数字,则默认剪切当前行
  12. yy:拷贝从当前行开始向下的共$n$行($n$为输入dd之前输入的数字),若之前未输入数字,则默认拷贝当前行
  13. p:在当前行的下一行粘贴剪贴板中的内容
  14. P:在当前行的上一行粘贴剪贴板中的内容
  15. i:进入插入模式(光标仍保留在当前位置)
  16. a:进入插入模式(光标向后移动一个位置,从后一个字符开始插入)
  17. o:向后插入一行空行,并从后一行进入插入模式
  18. O:向前插入一行空行,并从前一行进入插入模式
  19. r:进入替换模式,使用下一个输入的字符替换当前光标所在位置字符;替换一次之后立即退出替换模式
  20. R:进入替换模式,并可以多次替换字符
  21. ::进入底线命令模式

底线命令模式

在底线命令模式下,会在文档下方显示如下内容:

-- LAST LINE --
: 

输入的命令会在冒号之后呈现,通过输入回车可以应用相应的命令

本程序中实现的命令如下所示:

  1. [ESC]:返回命令模式
  2. q:退出编辑器,若文档发生修改,则进行警告提示并返回命令模式
  3. q!:不进行保存,强制退出编辑器
  4. w:保存修改并返回命令模式
  5. wq:保存修改并退出编辑器
  6. e!:放弃对文件的所有修改,恢复文件到上次保存的位置后返回命令模式
  7. 其他无效命令:进行警告提示并返回命令模式

插入模式

在插入模式下,会在文档下方显示如下内容:

-- INSERT --

在插入模式下,可以通过方向键控制光标移动,输入任意字符实现在光标位置插入,并通过退格键进行删除

[ESC]键可以返回命令模式

替换模式

在替换模式下,会在文档下方显示如下内容:

-- REPLACE --

在替换模式下,可以通过方向键控制光标移动,输入任意字符实现在光标位置替换,并通过退格键进行删除

若为通过r进入的单字符替换模式,则在替换完成当前字符后立即返回命令模式

[ESC]键可以返回命令模式