开个Linux
系列文章的坑,这篇算是是这个坑的开篇。只要我觉得我知道的Linux
相关内容值得分享,那我就考虑填到这个坑里,这个坑的内容包括但不限于:Shell
命令介绍与使用(包括一些小技巧)、软件安装部署使用配置等等。
这篇先分享一下基础的shell
和vim
。
shell 解释器
shell
解释器一般运行在*nix
环境(对应Windows
环境的cmd.exe
或者powershell.exe
),主要是负责接收用户输入的操作指令(命令)、解释并将命令传递到操作系统内核执行,当然shell
解释器在windows
环境下也有不少移植产品,比如cygwin
之类的。
种类
不同系统上预装的shell
解释器可能不同,我们可以通过cat /etc/shells
查看当前系统支持的shell
解释器种类,并通过echo $SHELL
查看当前使用的解释器。

可以看到,这个系统目前仅支持bash
(/bin/bash
和/usr/bin/bash
都是bash
,sh
都是直接软链到bash
,默认*nix
环境基本都是bash
)。而且我们当前使用的就是/bin/bash
。除了bash
,其他种类的shell
解释器还有fish
、csh
以及zsh
等,这里我们主要使用bash
,因此其他的解释器有需要可以自行了解。
我们日常开发大多数是基于windows
环境下开发的,这时候你可以安装cygwin
模拟器,或者开启Windows10
的Linux
子系统。当然只是简单学习的话,我们可以直接通过安装git
获得阉割版的bash
——git bash
(最大的阉割就是没有诸如apt-get
、yum
、dnf
之类的包管理器,因此你无法直接安装其他命令)。
快捷键
一些基础的命令(比如:cd
、ls
、cat
之类的)我们就不介绍了,这里先介绍一些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
匹配往前的命令。

注意:以上这些快捷键笔者已经在CentOS7
和git bash
下全部验证能正常使用并且效果如同说明,如果有异议请以你为准。考虑到录制视频后还要剪辑添加各个文本提示,最后还要转gif
并且控制在2M
大小比较麻烦,这里我们就不演示效果了,具体自己试试就知。
Shell
的一些高级用法比如数组、函数、脚本编写之类的本篇不讲,坑先挖了,讲不讲看心情。
vim 基础
VIM 高手从来不用鼠标
这句话我是认同的,熟练掌握vim
可以很大程度上脱离鼠标,能有效提高*nix
环境下的工作效率。这一节我们简单介绍一下vim
的基础操作,免得在往后的Linux
使用生涯中每次还要百度、谷歌、SO
怎么退出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 |
切换后,先在当前光标所在行上方插入新行,然后让光标停留在新行首处 |
「切换到末行模式」
空格切换到末行模式非常简单,只需要在命令行模式输入:
半角冒号即可进入。
「退出文件」
命令模式除了切换到末行模式进行退出,还有一种退出方式,那就是ZZ
。ZZ
有两种效果。
效果一:如果当前文件是新文件并且没有任何改动,那么直接退出并且不会创建文件(相当于末行模式的q
)。
效果二:如果当前文件是新文件并且有改动或者不是新文件,那么这时候会保存并退出文件(相当于末行模式的wq
)。
工作模式——插入模式
进入插入模式后,一般都是编辑调整文本,这时候一般没什么比较特殊的命令可以介绍。特殊的笔者认为只有一个,那就是粘贴。我们可以从外部文件先复制一段文本到剪贴板里,然后在插入模式通过Shift Insert
快捷键插入到当前光标所在处。插入模式只能通过Esc
退出返回到命令模式,无法切换到末行模式或者直接退出。(当然,强行关闭窗体是一种做法!)
工作模式——末行模式
末行模式可以临时修改当前配置、临时执行命令、文本搜索与替换以及退出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
了,甚至比一些初级运维还要玩的溜,一些特别高级的(比如
vim
插件)我们就不展开了,先自己搞个环境熟悉了这些基本操作再说(windows
环境推荐直接用git bash
上手,本篇的所有内容在git bash
上都能运行)。具体的vim
模式切换这里也画了张图:

结束语
本篇是Linux
大坑开篇,简单理解本篇就是一张bash
和vim
的快捷键和指令速查表。熟悉这些后续才有得开展,建议上手个十几遍以掌握每个速查表指令。
原文始发于微信公众号(三维家技术实践):开坑啦!Linux系列之shell与vim速查表
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/30655.html