开坑啦!Linux系列之shell与vim速查表

    开个Linux系列文章的坑,这篇算是是这个坑的开篇。只要我觉得我知道的Linux相关内容值得分享,那我就考虑填到这个坑里,这个坑的内容包括但不限于:Shell命令介绍与使用(包括一些小技巧)、软件安装部署使用配置等等。

    这篇先分享一下基础的shellvim

shell 解释器

    shell解释器一般运行在*nix环境(对应Windows环境的cmd.exe或者powershell.exe),主要是负责接收用户输入的操作指令(命令)、解释并将命令传递到操作系统内核执行,当然shell解释器在windows环境下也有不少移植产品,比如cygwin之类的。

种类

    不同系统上预装的shell解释器可能不同,我们可以通过cat /etc/shells查看当前系统支持的shell解释器种类,并通过echo $SHELL查看当前使用的解释器。

开坑啦!Linux系列之shell与vim速查表
Shell解释器与当前使用的解释器

    可以看到,这个系统目前仅支持bash/bin/bash/usr/bin/bash都是bashsh都是直接软链到bash,默认*nix环境基本都是bash)。而且我们当前使用的就是/bin/bash。除了bash,其他种类的shell解释器还有fishcsh以及zsh等,这里我们主要使用bash,因此其他的解释器有需要可以自行了解。

    我们日常开发大多数是基于windows环境下开发的,这时候你可以安装cygwin模拟器,或者开启Windows10Linux子系统。当然只是简单学习的话,我们可以直接通过安装git获得阉割版的bash——git bash(最大的阉割就是没有诸如apt-getyumdnf之类的包管理器,因此你无法直接安装其他命令)。

快捷键

    一些基础的命令(比如:cdlscat之类的)我们就不介绍了,这里先介绍一些bash下笔者常用的快捷键(通常在其他shell解释器下也有相同的效果)。

    「移动相关快捷键」

快捷键 说明
Ctrl A 光标回到行首
Ctrl E 光标回到行末
Ctrl B 光标向行首移动一个字符
Ctrl F 光标向行末移动一个字符
Alt B 光标向行首移动一个单词
Alt F 光标向行末移动一个单词

    「文本操作相关快捷键」

快捷键 说明
Ctrl D 删除光标后的第一个字符
Ctrl H 删除光标前的第一个字符
Ctrl K 剪切光标后的所有字符
Ctrl U 剪切光标前的所有字符
Alt D 剪切光标后的第一个单词
Ctrl W 剪切光标前的第一个单词
Ctrl Y 粘贴由Ctrl U或者Ctrl K或者Ctrl W或者Alt D命令剪切的字符

    bash下我记得是没有复制快捷键,要想实现复制效果也不麻烦,直接剪切后先Ctrl Y粘贴一份剪贴板内容即可;要想实现单词或者文本删除功能也简单,只剪切不粘贴即可。

    「指令操作相关快捷键」

快捷键 说明
Ctrl ? 撤销前一次操作(通常与文本操作快捷键配置使用)
Ctrl P <=> 上一条历史命令
Ctrl N <=> 下一条历史命令
Ctrl I <=> Tab 等同于键入了Tab
Ctrl O <=> Ctrl M <=> Enter 等同于键入了Enter
Ctrl C 中断终端中正在执行的任务(这个应该都比较熟悉)
Ctrl S 使终端发呆,可以使正在输出的终端屏幕停下来(比如你tail -f查看日志时就会用上)
Ctrl Q 恢复Ctrl S引起的终端发呆
Ctrl D 命令行为空状态下输入该快捷键将退出终端,等同于键入了logout
Ctrl R 搜索历史命令

    这里的Ctrl R还有一个小技巧,搜索历史命令是依赖于history的,默认是匹配最近一次的命令,如果最近一次的命令不是我们想要的,那么可以通过再一次Ctrl R匹配往前的命令。

开坑啦!Linux系列之shell与vim速查表
Ctrl R向上搜索历史命令

    注意:以上这些快捷键笔者已经在CentOS7git bash下全部验证能正常使用并且效果如同说明,如果有异议请以你为准。考虑到录制视频后还要剪辑添加各个文本提示,最后还要转gif并且控制在2M大小比较麻烦,这里我们就不演示效果了,具体自己试试就知。

    Shell的一些高级用法比如数组、函数、脚本编写之类的本篇不讲,坑先挖了,讲不讲看心情。

vim 基础

VIM 高手从来不用鼠标

    这句话我是认同的,熟练掌握vim可以很大程度上脱离鼠标,能有效提高*nix环境下的工作效率。这一节我们简单介绍一下vim的基础操作,免得在往后的Linux使用生涯中每次还要百度、谷歌、SO怎么退出vim

开坑啦!Linux系列之shell与vim速查表
传言180万程序员不知如何退出Vim编辑器

    首先是介绍vim的打开方式和对应的三种工作模式:命令模式command mode)、插入模式insert mode)、末行模式last line mode)。

打开方式

    通常可以通过vim ${files}命令打开一个或者多个文件,通常可能会用到的选项有:

  • -R:只读方式打开文件(通常用于其他终端正在编辑该文件,一般也会有提示);
  • -r:恢复之前系统崩溃时正在编辑的文件(或者文件编辑一半,直接关了vnc或者SecureCRT之类的窗体,一般会在该目录生成.${file}.swp的隐藏文件);
  • +:打开后直接跳转到文本末尾行;
  • +${num}:打开后跳转到指定行。

工作模式——命令模式

    一般通过vim命令打开某个文件时,默认就是处于命令模式,命令模式下可以移动光标、复制剪切粘贴,但不能编辑文本,下面介绍笔者常用的命令模式指令。

    「移动相关指令」

指令 说明
gg 光标跳到第一行
G 光标跳到最后一行
${num}gg 光标跳到指定行,大于10行时按键时要迅速

    「文本操作相关指令」

指令 说明
yy 复制当前行
${num}yy 复制包括当前行及往下的num
y0 复制光标处至行首的所有字符
y$ 复制光标处至行末的所有字符
yw 复制光标处至第一个单词末的所有字符
dd 剪切当前行
${num}dd 剪切包括当前行及往下的num
d0 剪切光标处至行首的所有字符
d$ 剪切光标处至行末的所有字符
dw 剪切光标处至第一个单词末的所有字符
p 粘贴由d或者y剪切或者复制下来的文字(必须在命令模式下才有效)
u 撤销上一条文本操作命令的执行

    「切换到插入模式」

指令 说明
a 切换后,光标停留在后一个字符处
A 切换后,光标停留在行末处
i 切换后,光标停留在光标前一个字符处
I 切换后,光标停留在行首处
o 切换后,先在当前光标所在行下方插入新行,然后让光标停留在新行首处
O 切换后,先在当前光标所在行上方插入新行,然后让光标停留在新行首处

    「切换到末行模式」

空格切换到末行模式非常简单,只需要在命令行模式输入:半角冒号即可进入。

    「退出文件」

    命令模式除了切换到末行模式进行退出,还有一种退出方式,那就是ZZZZ有两种效果。

    效果一:如果当前文件是新文件并且没有任何改动,那么直接退出并且不会创建文件(相当于末行模式的q)。

    效果二:如果当前文件是新文件并且有改动或者不是新文件,那么这时候会保存并退出文件(相当于末行模式的wq)。

工作模式——插入模式

    进入插入模式后,一般都是编辑调整文本,这时候一般没什么比较特殊的命令可以介绍。特殊的笔者认为只有一个,那就是粘贴。我们可以从外部文件先复制一段文本到剪贴板里,然后在插入模式通过Shift Insert快捷键插入到当前光标所在处。插入模式只能通过Esc退出返回到命令模式,无法切换到末行模式或者直接退出。(当然,强行关闭窗体是一种做法!开坑啦!Linux系列之shell与vim速查表

工作模式——末行模式

    末行模式可以临时修改当前配置、临时执行命令、文本搜索与替换以及退出vim操作。

    「文本搜索与替换指令」

指令 说明
/{searchText} 在光标所在处向下搜索指定字串。当搜索到字串后,通过输入n可以继续向下搜索,输入N可以往上搜索
/?{searchText} 在光标所在处向上搜索指定字串。当搜索到字串后,通过输入n可以继续向上搜索,输入N可以往下搜索
s#{oldString}#{newString}# 在当前行搜索{oldString},然后将第一个出现的${oldString}替换成{newString}
s#{oldString}#{newString}#g 在当前行搜索{oldString},然后全局替换换成{newString}
%s#{oldString}#{newString}#g 全文搜索{oldString},然后全局替换成{newString}
{start},{end}s#{oldString}#{newString}#g 在第start行到第end行之间搜索{oldString},然后全局替换成{newString}
.,+${num}s#{oldString}#{newString}#g 在当前行到当前行往下num行之间搜索{oldString},然后全局替换成{newString}
u 撤销上一条替换命令的执行

    「退出」

指令 说明
w 保存当前改动并返回到命令模式
q 直接退出当前文件,如果有改动会提示无法退出
q! 强制退出当前文件,如果有改动则丢弃改动(找不回来)
wq 保存后退出
wq! 强制保存后退出(如果文件没写权限则强制写入)
x 基本等同于wq
qa 退出所有文件,一般用在多文件编辑

    熟悉以上这些基本能够不怵vim了,甚至比一些初级运维还要玩的溜开坑啦!Linux系列之shell与vim速查表,一些特别高级的(比如vim插件)我们就不展开了,先自己搞个环境熟悉了这些基本操作再说(windows环境推荐直接用git bash上手,本篇的所有内容在git bash上都能运行)。具体的vim模式切换这里也画了张图:

开坑啦!Linux系列之shell与vim速查表
VIM模式切换

结束语

    本篇是Linux大坑开篇,简单理解本篇就是一张bashvim的快捷键和指令速查表。熟悉这些后续才有得开展,建议上手个十几遍以掌握每个速查表指令。


原文始发于微信公众号(三维家技术实践):开坑啦!Linux系列之shell与vim速查表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/30655.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!