我们在开发时使用Ubuntu 桌面版,它有各种图形编辑器,如系统自带的gedit 或跨平台的VSCode,这些图形编辑器对用户非常友好,易于使用。尤其是VS Code,它是我们推荐的在开发时用的工具。另外还有一些大神喜欢用的Vi/Vim 编辑器,它对新手来说实在不算友好,但是在一些场合根本没得选,因为在使用Linux 时很多时候并没有图形界面,此时只能通过终端使用命令行来控制,而在终端下Vi/Vim 的编辑功能非常强大,当在终端下需要对系统的一些配置文件进行修改时,使用Vi/Vim 非常方便。

我们不建议Linux 新手刚开始就拼命折腾Vim 编辑器,并不是说它不好,只是希望大家聚焦于Linux 开发学习本身,不要让它成为劝退大家学习Linux 的拦路虎。

gedit 编辑器

gedit 是在Ubuntu 系统下的地位就如同Windows 系统下的记事本软件,它的功能不算强大,但因为是系统自带的,说不上什么时候我们就会图方便使用它用来轻度编辑和记录一些内容。

在图形界面下使用gedit 编辑器在前面已经介绍过,此处我们演示下在终端打开该编辑器。在前面的《使用Linux 命令行/命令究竟是什么》中提到,命令的本质就是一些应用程序,Ubuntu 系统自带的gedit 编辑器,我们也可以通过终端来打开:

# 在终端中执行行下列命令:

gedit 要打开或新建的文件名

为什么要用终端打开gedit?因为在修改系统配置文件时,通常需要管理员权限,而在图形界面下通过gedit 打开文件,只能使用当前用户的身份,这种情况下是无法对这些文件进行修改的。但是,如果我们在终端下,使用sudo 命令为gedit 增加权限来打开这些文件,则可以对它进行修改,在《apt 及yum 包管理工具/修改软件源(命令行)》小节就介绍了这样的方式对/etc/apt/sources.list文件进行了修改。

执行以下命令可进行对比,使用普通用户权限与sudo 权限打开配置文件的差异如下图所示。

# 在后面的说明中,# 号表示注释,它后面的内容不要输入到终端中

gedit /etc/apt/sources.list # 以普通用户身份打开配置文件

sudo gedit /etc/apt/sources.list # 使用sudo 增加权限打开配置文件

总而言之,当我们使用有图形界面的Ubuntu 桌面版进行开发时,使用sudo gedit 的方式修改配置文件是一个非常好的选择。

Linux 新手在配置开发环境时,对Linux 本来就不熟悉,刚学习配置开发环境时一般又一头雾水,再加上网上的教程一般是使用Vim 来修改配置文件,新手照着敲命令使用Vim 编辑器来改内容,经过Vim 的一番操作后,直接就劝退了,我们从此损失了一位未来的技术大牛。

在网上以及我们后面的各种修改配置文件的命令中,默认都是使用Vi/Vim 来修改,因为系统一般自带Vi,而且不需要区分系统是否需要使用图形界面。但是对于刚学习Linux 的用户,能不用Vim 就不去用,在使用带图形界面的Ubuntu 时,看到命令中的vim 时心里就默认把命令中的“vim”替换成“gedit”即可。

例如:

# 使用sudo 权限通过vim 打开文件

sudo vim /etc/apt/sources.list

# 使用sudo 权限通过gedit 打开文件

sudo gedit /etc/apt/sources.list

以上命令区别仅为“vim”和“gedit”,即使是Vim 编辑器同样也是需要sudo 权限才能对文件进行编辑的,如果不使用sudo,以普通用户的身份使用Vim 编辑器打开配置文件,同样也是只有“只读”权限。所以,千万不要把Vi/Vim 编辑器神圣化了。

VS Code 编辑器

VS Code 是微软制作的开源编辑器,跨Windows、Linux 及iOS 平台都有一致的易用体验,推出后广受程序员们的欢迎,配合各种插件可以打造丰富的功能,支持各种文件格式的语法高亮,甚至可以远程编辑服务器或开发板上的文件,我们的例子基本上都是使用VS Code 编辑器写的。

下载安装

在Ubuntu 自带的软件中心可以找到VS Code 软件,通过搜索“vscode”即可安装,但目前Ubunut采用Snap 软件市场来安装软件,暂时还没有国内的镜像下载源,所以下载可能需要花比较长的时间。

我们推荐直接在Ubuntu 下使用浏览器在VS Code 官网下载deb 包进行安装,顺便学习deb 包的安装方法。

VS Code 官网地址:https://code.visualstudio.com VS Code 的安装步骤如下:

到官网找到下载的选项,可看到Linux 平台下分deb 和rpm 安装包,Debian 和Ubuntu 系统都是用deb包,如下图所示。

2. 下载后可以在浏览器中打开下载目录,默认的目录一般为用户家目录下的“/home/下载”。

找到下载好的deb 包,直接双击即可安装。

如果想体验命令行安装deb 包,可以使用以下命令:

sudo dpkg -i 安装包的名字

使用命令行安装过程如下图所示。

安装完成后,可以通过“显示应用程序”中打开,如下图所示。 也可以通过终端打开,在终端下VS Code 的打开命令为“code”:

# 在终端中执行行下列命令:

code

输入命令回车后稍等一会即可。

类似地,如果希望用VS Code 修改配置文件,使用sudo 命令增加权限即可:

sudo code 文件名--user-data-dir

其中的“–user-data-dir”参数是VS Code 提示要输入的,如下图所示。

添加插件

VS Code 的强大之处在于它的插件,刚开始的时候我们安装中文支持和c/c++ 插件即可。

中文支持

点击VS Code 界面左侧的“插件图标”,在输入框中输入“chinese”后搜索,可以找到插件“Language pack extension for Chinese (Simplified)”,点击插件下的install 按钮即可安装。 安装插件后一般需要重启VS Code 才能生效,平时界面的右下角通常也会有各种提示,如下图所示。

C/C++ 插件

VS Code 本身就支持C/C++ 的语法高亮,但并不支持编译、运行、调试等功能,通过安装“C/C++”插件可扩展相应的功能。在插件安装栏中输入“c”即可搜索到“C/C++”插件,直接安装,如下图所示。

Vi/Vim 编辑器

前面已多次提到Vi/Vim 编辑器,大部分Linux 系统中都会自带Vi 编辑器已方便用户在终端上编辑文件,而Vim 是Vi 的升级版本,它在Vi 的基础上改进和增加了很多特性,是一个功能更强大、高度可定制的文本编辑器。如支持代码折叠、插件、多国语言支持、垂直分割视窗、拼字检查、上下文相关补完,标签页编辑等功能。热爱Vim 编辑器的用户,能把它玩出花来,甚至直接把它打造成IDE。

在对Linux 服务器进行运维或控制嵌入式开发板的时候,绝大部分情况下我们只能使用终端,而在终端编辑文件时使用Vi/Vim 编辑器几乎是最好的选择,所以即使它上手不易,但我们也绝不能逃避学习。对新手来说,要求能熟练使用Vi/Vim 编辑器对文件进行基本的读写修改。

Vim 使用演示

安装Vim

在Ubuntu 下,使用apt 可安装Vim 编辑器,执行如下命令安装:

sudo apt install vim

打开Vi/Vim

安装后使用vi 或vim 命令都可以打开,它们的基础使用方法是一样的:

vi # 若系统安装了vim,该命令会自动打开vim 软件

vim # 打开vim 软件

也可以使用如下命令创建或打开文件:

vi 文件名# 若文件存在则打开,文件不存在则创建

vim 文件名

退出Vim

由于Vim 是在终端下使用,没有图形界面的,所以对它的所有控制都只能通过命令来实现,包括退出。对于新手来说如何退出Vim 都是个问题。

最简单粗暴的Vim 退出方式是使用“Ctrl”+“z”直接强制退出。

此处我们通过Vim 的命令行模式退出Vim 的步骤来体验它的“一般模式”和“命令行模式”。

打开Vim 后,请按如下步骤进行操作,注意若开启了输入法,要先把输入法设置成英文:

按下退出键“Esc”,Vim 会进入到“一般模式”。输入英文冒号“:”,Vim 会进入到“命令行模式”。输入强制退出命令“q!”,即字母“q”及英文叹号“!”。按回车执行命令,会退出Vim,返回到终端。

执行时终端显示的内容如下图所示。

输入内容

初次使用Vim 时,想要在编辑器输入内容也并非易事,Vim 打开后默认是在“一般模式”的,键盘的输入都会被当成一般命令而不是文本的内容,即在该模式下的所有输入就如同在其它常用编辑器中按了快捷键。运气好按了进入“插入模式”的快捷键,后续的输入才会被当成文本内容。

可通过以下步骤进入到“插入模式”输入内容并保存文件:

按下退出键“Esc”进入“一般模式”。 输入一般命令“i”,即直接按字母“i”,进入“插入模式”,如下图所示。 随意输入一些内容。 按下退出键“Esc”再次进入“一般模式”。 输入英文冒号“:”,Vim 会进入到“命令行”模式。 输入保存退出命令“wq”。 按回车执行命令,会退出Vim,返回到终端。

Vim 的三种模式

经过以上的使用演示,我们体验到了Vim 编辑器的三种工作模式:

一般模式(normal mode):一般模式用来浏览文本,查找内容,但是不可以编辑,在该模式下的键盘输入会被当成快捷键,如复制粘贴等。打开Vim时,默认是工作在一般模式。 插入模式(insert mode):插入模式下具有普通编辑器的功能,该模式下的键盘输入会被当成文本内容。 命令行模式(command-line mode):命令行模式支持保存、退出、替换等命令,以及Vim 的高级功能。

我们在使用Vim 时,常常会在这三种模式之间进行切换,切换方式可以参考下图。

上图的意义就是:

在任意模式下,我们可以通过按键“Esc”进入到一般模式。在一般模式下,通过按键“a”“i”“o”“O”“r”“R”等可进入到插入模式。在一般模式下,通过按键“:”可进入到命令行模式。

插入模式

Vim 提供多个快捷键来从一般模式进入插入模式,见下表。进入插入模式之后,就可以正常地编辑文本了,使用方向键来移动光标,回车键进行换行,操作方式与Windows 记事本没有什么区别。

表进入/退出插入模式的快捷键

快捷键功能描述i在当前光标所在位置插入文本a在当前光标所在位置的下一个字符插入文本o在光标所在位置后插入新行r替换当前光标所在位置的字符R可以替换当前光标所在位置之后的字符,按下“Esc”则退出ESC退出插入模式

一般模式

在任意模式下按按键“Esc”可进入到一般模式。下表列出了一般模式下常用的快捷键。在一般模式下,可以进行复制,粘贴,删除,查找替换某个关键字等。

表一般模式快捷键

快捷键功能描述光标移动k / ↑光标向上移动j / ↓光标向下移动h / ←光标向左移动l / →光标向右移动PageUp向上翻页PageDown向下翻页文本查找与替换/word在文件中搜索关键字wordn查找下一个关键字N查找上一个关键字:1,$s/word1/word2/gc将文本中的所有关键字 word1 用word2 进行替换,需要用户进行确认。(使用:1,$s/word1/word2/g 则直接全部替换)。这实际是运行在命令模式。撤销重做u撤销上一步的操作,等价于Windows 的Ctrl+ZCtrl+r重做上一步的操作。删除、剪切、复制、粘贴d删除光标所选的内容dd删除当前行ndd删除光标后n 行x剪切光标选中的字符y复制光标所选的内容yy复制当前行nyy复制当前行后n 行p将复制的数据粘贴在当前行的下一行P将复制的数据粘贴在当前行的上一行区块操作v选择多个字符V可以选择多行ctrl+v可以选择多列

命令行模式

在一般命令模式下,按下键盘的冒号键“:”,就可以进入命令行模式,继续输入要执行的命令按回车即可执行。

表命令行模式快捷键

快捷键功能描述w保存文档w 另存为以 为文件名的文档r 读取文件名为filename 的文档q直接退出软件,前提是文档未做任何修改q!不保存修改,直接退出软件wq保存文档,并退出软件。set nu在行首加入行号set nonu不显示行号set hlsearch搜索结果高亮显示! command回到终端窗口,执行command 命令,按回车键可切回vim。

用Vi/Vim 软件编写简单的sh 脚本

到此为止,Vim 的基本操作就介绍完了,最后我们尝试用Vim 编写一个输出hello world 的脚本,熟悉Vim 的操作。

在终端中执行行下列命令:

vim hello_world.sh

然后进入插入模式(在一般模式下按“i”键),输入下列代码后,保存文件并退出(退出插入模式,进入命令行模式后,输入wq 并回车),注意以下内容全为英文符号。

ho "helloworld,this is a script test!"

此脚本文件中的echo 命令的作用是将其后面的文本内容直接输出到终端上。

Vim 退出后回到终端,通过source 命令运行刚刚编写的脚本文件:

source hello_world.sh

可以看到终端会输出“helloworld,this is a script test!”字样。

参考资料:Linux 基础与应用开发实战指南——基于STM32MP1 系列

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。