Shell文件编辑器

文件编辑器,允许在文件中插入、编辑和替换文本等操作。
本文主要针对vim编辑器和nano编辑器的使用做简单记录,目前macOS是支持这两种编辑器的。

vim编辑器

vi编辑器是Unix系统最初的编辑器,后来被GNU项目改进后,称为vi improved,简称:vimLinux移植了vim编辑器。
macOS系统可以使用viview,也可以使用vim

qwldeMacBook-Pro:~ qwl$ which vim
/usr/bin/vim
qwldeMacBook-Pro:~ qwl$ ls -l /usr/bin/vim
-rwxr-xr-x  1 root  wheel  2129184  7 10 06:26 /usr/bin/vim
qwldeMacBook-Pro:~ qwl$ which vi
/usr/bin/vi
qwllideMacBook-Pro:~ qwl$ ls -l /usr/bin/vi
lrwxr-xr-x  1 root  wheel  3 10 11  2019 /usr/bin/vi -> vim
qwldeMacBook-Pro:desktop qwl$ which view
/usr/bin/view
qwldeMacBook-Pro:desktop qwl$ ls -l /usr/bin/view
lrwxr-xr-x  1 root  wheel  3 10 11  2019 /usr/bin/view -> vim

通过上述终端查看,可以发现viviewvim的联系:viview是链接文件最终指向了vim

1.vim基础

vim编辑器启动的命令格式:vim filenamevi filename。若filename为空,或filename文件不存在,vim会开辟新的缓冲区来编辑;若filename不为空,则vim会将文件整个内容都读取到缓冲区,准备编辑,若读取的文件内容不足以显示一屏,vim会在非文件内容行放置一个波浪线~

vim编辑器有两种操作模式:

  • 普通模式:当刚打开要编辑的文件时(或新建一个文件时),vim编辑器会进入普通模式。在普通模式中,vim编辑器会将键盘按键解释成命令。
  • 插入模式:在插入模式下,vim会将当前光标位置输入的每个键都插入到缓冲区。按下i键就可以进 入插入模式。要退出插入模式回到普通模式,按下键盘上的退出键esc

普通模式,使用键盘的上下左右,可控制光标的移动,也有代替键盘的控制光标移动的命令:

h:左移一个字符
j:下移一行
k:上移一行
l:右移一个字符
ctrl+f:下翻一屏
ctrl+b:上翻一屏
G:移动到缓冲区的最后一行
num G:移动到缓冲区的第num
gg:移动到缓冲区的第一行

普通模式下有个特殊的功能,叫命令行模式。命令行模式提供了一个交互式命令行,可以输入额外的命令来控制vim的行为。通过在普通模式下输入冒号::,可以进入vim编辑器的命令行模式。
在命令行模式下有几个命令可以将缓冲区的数据保存到文件中并退出vim:

q:如果未修改缓冲区数据,退出
q!:取消修改并退出
w filename:将文件保存到另一个文件中
wq:将缓冲区数据保存到文件中并退出

在插入模式下,你可以向缓冲区插入数据。然而有时将数据输入到缓冲区中后,你需要再对其进行添加或删除。在普通模式下,vim编辑器提供了一些命令来编辑缓冲区中的数据:

x:删除当前光标所在位置的字符
num x:删除当前光标所在位置开始的num个字符
dd:删除当前光标所在的行
num dd:删除当前光标所在的行开始的num行。
dw:删除当前光标所在位置的单词
num dw:删除当前光标所在位置开始的num个单词
J:删除当前光标所在行行尾的换行符
u:撤销前一个编辑的命令
a:在光标后追加数据
A:在当前光标所在行的行尾追加数据
r char:用char替换当前光标所在位置的单个字符
R text:用text覆盖当前光标所在位置的数据,直到按下ESC键

2.vim编辑器的剪切和粘贴
vim在删除数据时,会将数据保存在单独的一个寄存器中,可以用p命令取回数据。

dd + p:整行数据的剪切与粘贴
x+p: 单个字符的剪切与粘贴
dw+p:单个单词的剪切与粘贴

3.vim编辑器的复制和粘贴
vim中复制命令是y(代表yank)。可以在y后面使用和d命令相同的第二字符(yw表示复制一个单词,y$表示复制到行尾)。在复制文本后,把光标移动到想放置文本的地方,输入p命令。复制的文本就会出现在该位置。

yy:复制整行,可加 num
yw:复制单词,可加num
y:复制单个字符,可加num
y$:从当前光标位置复制到行尾

  1. vim编辑器的可视化复制

上述的复制方法,我们无法知道复制的是什么。vim编辑器提供了一种可视化模式,来解决这个问题。
要进行可视化模式复制,首先要将我们的光标移动到文本开始复制的位置,然后按下v键,最后控制光标移动的命令或键盘,进行选择要复制的文本即可。使用p进行粘贴。

  1. vim编辑器的查找和替换

查找:普通模式下要查找字符串,首先按下斜杠键/,接着输入要查找的字符串,按enter键进行查找,默认 enter之后的编辑器会有以下三中行为:

  • 如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。
  • 如果要查找的文本未在光标当前位置之后出现,则光标会绕过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)。
  • 输出一条错误消息,说明在文件中没有找到要查找的文本。

若要继续查找同一个字符串,有两种方式:

  • 输入/,按enter
  • n键,意为:next

替换:必须进入命令模式才能使用替换,即普通模式下使用冒号:进入命令模式。替换的命令格式如下::s/old/new/
光标移动到字符串替换开始的位置,进入命令行模式,输入s/old/newvim编辑器会跳到光标处的old,并用new来替换。

可以对替换命令作一些修改来替换多处文本:

  • :s/old/new/g:替换一行中出现的所有oldnew
#文本:hello hello hello hello hello word!
#光标移动至替换开始的位置(第一个hello的h处),并输入
:s/hello/hi/g
#输出
hi hi hi hi hi word!
  • :num s/old/new/g:替换第num行中出现的所有oldnew
#大漠孤烟直
#hello word!
#hello hello hello hello hello word!
#hello word!
#长河落日圆

#输入
:2 s/hello/hi/g
#输出:

#大漠孤烟直
#hi word!
#hello hello hello hello hello word!
#hello word!
#长河落日圆
  • :n,m s/old/new/g:替换n行到m行中出现的所有oldnew
#大漠孤烟直
#hello word!
#hello hello hello hello hello word!
#hello word!
#长河落日圆

#输入
:2, 4 s/hello/hi/g
#输出:

#大漠孤烟直
#hi word!
#hi hi hi hi hi word!
#hi word!
#长河落日圆
  • :% s/old/new/g:替换整个文件中的所有old
  • :%s/old/new/gc:替换整个文件中的所有old,但在每次出现时提示:replace with hi (y/n/a/q/l/^E/^Y)?

nano编辑器

nano文本编辑器也是从Unix系统移植过来的,它的使用就很简单,许多命令,都会显示在编辑器窗口的下方,可以按照这些命令提示轻松使用它:

nano编辑器

关于启动nano编辑器:nano filename,关于filenamevim编辑器的处理相同。

参考资料:
Linux命令行与shell脚本编程大全

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270