9.3 工欲善其事必先利其器
9.3.1 Visual Studio Code (VSCode)
9.3.1.1 设置80字符自动换行
在 Visual Studio Code (VSCode) 中,可以通过设置来实现代码在 80 列时自动换行。
以下是具体步骤:
-
打开设置界面:
- 按下
Ctrl + ,(Windows/Linux) 或Cmd + ,(Mac) 打开设置界面。 - 或者,在菜单栏依次选择文件->首选项->设置,打开设置界面。
- 按下
-
搜索相关设置:
- 在搜索框中输入
word wrap。 - 找到 Editor: Word Wrap 设置项,将其值改为
wordWrapColumn, 代表总是根据Word Wrap Column的值进行换行。
- 在搜索框中输入
-
设置换行列数:
- 继续在搜索框中输入
word wrap column。 - 找到 Editor: Word Wrap Column ,将其值设置为
80。
- 继续在搜索框中输入
完成以上设置后,你的代码将在第 80 列自动换行或格式化。
9.3.1.2 设置80字符垂直标尺
在 Visual Studio Code (VSCode) 中,可以通过设置来实现代码在 80 列显示垂直标尺。
以下是具体步骤:
-
打开设置界面:
- 按下
Ctrl + ,(Windows/Linux) 或Cmd + ,(Mac) 打开设置界面。 - 或者,在菜单栏依次选择文件->首选项->设置,打开设置界面。
- 按下
-
搜索相关设置:
- 在搜索框中输入
editor: rulers。 - 找到 Editor: Rulers 设置项,点击
在settings.json中编辑。
- 在搜索框中输入
-
设置垂直标尺:
-
在打开的
settings.json文件中,新增"editor.rulers",并在其中添加垂直标尺并配置演示。 -
以下示例,在第80列添加一根绿色的垂直标尺。
"editor.rulers": [
{ "column": 80, "color": "#00ff4c" },
],
-
9.3.2 设置Git
注意事项
-
全局 vs 本地配置:
-
如果你希望这些设置对所有仓库生效,可以在命令后加上
--global参数:bashgit config --global user.name "Lizi Ju" git config --global user.email "julizi2025@163.com" -
如果只想对当前仓库生效,则省略
--global参数。
-
-
查看当前配置:
-
使用以下命令查看当前的 Git 配置:
bashgit config --list
-
9.3.2.1 Git基本设置
bash
git config user.name "Lizi Ju"
git config user.email "julizi2025@163.com"
git config core.editor vim
git config core.pager "less -N"
git config color.diff true
1. 设置用户名和邮箱
bash
git config user.name "Lizi Ju"
git config user.email "julizi2025@163.com"
- 作用:定义提交代码时的作者信息。
- 说明 :
user.name是提交记录中的用户名,用于标识提交者。user.email是提交记录中的邮箱地址。
2. 设置默认编辑器
bash
git config core.editor vim
- 作用:指定 Git 使用的默认文本编辑器。
- 说明 :
-
当你需要编辑提交信息(如运行
git commit没有提供-m参数时),Git 会调用你指定的编辑器。 -
这里设置为
vim,但你可以根据需要更改为其他编辑器,例如:bashgit config core.editor code # 使用 VSCode git config core.editor nano # 使用 Nano
-
3. 设置分页器
bash
git config core.pager "less -N"
- 作用:定义 Git 输出内容过长时使用的分页工具。
- 说明 :
-
默认情况下,Git 使用
less作为分页器。 -
这里通过
less -N启用了行号显示功能:less是一个常用的分页工具。-N表示在每行前面显示行号。
-
如果你不希望使用分页器,可以将其设置为
cat:bashgit config core.pager cat
-
4. 启用差异显示的颜色高亮
bash
git config color.diff true
- 作用:启用 Git 在显示差异(diff)时的颜色高亮功能。
- 说明 :
-
当你运行
git diff或查看提交差异时,Git 会以不同的颜色显示添加、删除和修改的内容,便于阅读。 -
示例:
- 添加的行显示为绿色。
- 删除的行显示为红色。
-
如果你想启用所有 Git 命令的颜色支持,可以使用以下命令:
bashgit config color.ui true
-
9.3.2.2 Git发送邮件设置
Linux内核补丁是通过邮件被提交的,必须把补丁作为邮件体的内嵌文本。附件一般是不赞成的, 因为这会使补丁的引用部分在评论过程中变的很困难。
同时也强烈建议在补丁或其他邮件的正文中使用纯文本格式。用来发送Linux内核补丁的邮件客户端在发送补丁时应该处于文本的原始状态。例如,不能改变或者删除制表符或者空格,甚至是在每一行的开头或者结尾。
不要通过format=flowed模式发送补丁。format=flowed是一种用于电子邮件的文本格式,允许邮件客户端在发送和显示邮件时动态调整换行符,从而更好地适应不同宽度的屏幕。一定不要让你的邮件客户端启用format=flowed,这样会引起不可预期以及有害的断行,破坏补丁的内容。
邮件客户端不能改变文本的字符集编码方式。要发送的补丁只能是ASCII或者UTF-8编码 方式,如果你使用UTF-8编码方式发送邮件,那么你将会避免一些可能发生的字符集问题。
复制粘帖(或者剪贴粘帖)通常不能用于补丁,因为制表符会转换为空格。
在给内核邮件列表发送补丁之前,给自己发送一个补丁是个不错的主意,保存接收到的邮件,自己打patch成功了,再给内核邮件列表发送。
这些命令的作用是配置 Git 的邮件发送功能(git send-email),使其能够通过指定的 SMTP 服务器发送补丁或通知邮件。
bash
git config sendemail.smtpencryption ssl
git config sendemail.smtpserver smtp.163.com
git config sendemail.smtpuser julizi2025@163.com
git config sendemail.smtppass ChangeMeToYourOwn
git config sendemail.smtpport 465
1. 设置 SMTP 加密方式
bash
git config sendemail.smtpencryption ssl
- 作用:指定发送邮件时使用的加密协议。
- 说明 :
- 这里设置为
ssl,表示使用 SSL 加密协议来保护邮件传输的安全性。 - 其他可能的值包括
tls或none(不加密)。
- 这里设置为
2. 设置 SMTP 服务器地址
bash
git config sendemail.smtpserver smtp.163.com
- 作用:指定发送邮件时使用的 SMTP 服务器地址。
- 说明 :
- 这里设置为
smtp.163.com,这是 163 邮箱的 SMTP 服务器地址。 - 如果你使用其他邮箱服务(如 Gmail),需要替换为对应的 SMTP 地址,例如:
- Gmail:
smtp.gmail.com - QQ 邮箱:
smtp.qq.com
- Gmail:
- 这里设置为
3. 设置 SMTP 用户名
bash
git config sendemail.smtpuser julizi2025@163.com
- 作用:指定用于发送邮件的邮箱账户。
- 说明 :
- 这里的值是你的邮箱地址
julizi2025@163.com。 - 这个邮箱地址将作为发件人地址出现在邮件中。
- 这里的值是你的邮箱地址
4. 设置 SMTP 密码
bash
git config sendemail.smtppass ChangeMeToYourOwn
- 作用:指定用于发送邮件的邮箱密码或授权码。
- 说明 :
- 网易163邮箱要求第三方邮件客户端必须使用授权码。
5. 设置 SMTP 端口号
bash
git config sendemail.smtpport 465
- 作用:指定 SMTP 服务器的端口号。
- 说明 :
- 这里设置为
465,这是使用 SSL 加密时常见的端口号。 - 如果你使用 TLS 加密,则可能需要改为
587。 - 不同的邮箱服务提供商可能会有不同的端口号要求,具体可以参考邮箱服务商的文档。
- 这里设置为
完成这些配置后,你就可以通过 Git 发送邮件了!测试步骤如下。
-
Git克隆Xenomai代码库后,在任意一个分支生成一个patch补丁文件,例如:0001-doc-Fixes-many-broken-links-and-some-outdated-inform.patch
git format-patch -1 -
使用以下命令测试邮件发送是否正常,例如给自己发邮件:
bashgit send-email --to="julizi2025@163.com" 0001-doc-Fixes-many-broken-links-and-some-outdated-inform.patch
9.3.3 配置vim文本编辑器
如果你是开发者,那么你很可能已经熟悉了文本编辑器 Vim。它以其强大的功能和高度可定制性著称,本文无法涵盖它的所有特性。会聚焦在如何配置Vim以服务于代码编写、邮件书写等参与社区的常见任务,仅会涉及到11行配置参数。
Git的默认文本编辑器已经设置为 vim,当你需要编辑提交信息,Git 会调用你指定的编辑器。例如运行 git commit 没有提供 -m 参数,或者提供了 -e 参数,会自动打开 vim 来允许你编辑patch补丁的内容。
vim的配置文件为~/.vimrc。
9.3.3.1 基本设置
开启语法高亮,并在终端标题栏显示文件名。
vim
syntax on
set title
1. syntax on
语法高亮是一种文本格式化技术,通过给代码的不同部分分配不同的颜色,使得代码更加易于阅读和理解。对于编程语言来说,这意味着关键字、变量名、字符串等都将有不同的颜色显示。
2. set title
为什么需要设置窗口标题?当你同时运行多个Vim实例时,为每个窗口设置独特的标题可以帮助你快速识别当前正在编辑的文件。这对于提高工作效率特别有用。
9.3.3.2 设置缩进
这些设置共同作用,确保了当你在 Vim 中工作时,Tab 键和缩进操作都将遵循传统的 8 空格宽度标准,并且直接插入 Tab 字符而非空格。这对于Linux开发非常重要。同时,由于启用了 filetype plugin indent on,Vim 将能够针对不同的文件类型应用适当的缩进规则,从而提高代码的一致性和可读性。
vim
filetype plugin indent on
set tabstop=8
set softtabstop=8
set shiftwidth=8
set noexpandtab
1. filetype plugin indent on
- 这条命令启用了 Vim 对基于文件类型的插件和缩进的支持 。具体来说:
filetype on打开了对不同文件类型的支持,这意味着 Vim 可以根据打开文件的类型(如.c,.py,.html等)应用不同的行为。plugin on开启了与文件类型相关的插件功能。indent on则是让 Vim 根据文件类型自动调整缩进方式。
2. set tabstop=8
tabstop选项决定了一个实际的 Tab 字符在文件中显示为多少个空格。默认情况下,它的值是 8。当你打开一个包含 Tab 字符的文件时,Vim 会根据这个设置来决定这些 Tab 字符占据多少列宽。
3. set softtabstop=8
softtabstop决定了你在编辑模式下按下 Tab 键时实际插入的空格数或 Tab 字符数 。当设置为 8 时,按下 Tab 键将会插入相当于 8 个空格长度的字符。
4. set shiftwidth=8
shiftwidth控制了自动缩进的宽度,即当你使用 Vim 的自动缩进功能时,每一级缩进占用的空间数 。将其设置为 8 表示每一级缩进将占用 8 个空格的位置。
5. set noexpandtab
noexpandtab告诉 Vim 在输入 Tab 键时插入真正的 Tab 字符而不是空格 。这与expandtab相反,后者会将所有的 Tab 替换为等量的空格。使用noexpandtab是为了保持与Linux编码风格指南一致。
9.3.3.3 设置每行的最大宽度为 80 个字符
通过如下这些设置,可以设置每行的最大宽度为 80 个字符,并在书写patch的说明时自动换行。高亮显示超出列宽限制的列(这里是第 81 列),方便直观判断是否超出 80 个字符。同时在单词边界处换行,避免单词被截断。
vim
set textwidth=80
set colorcolumn=+1
set formatoptions+=t
set linebreak
1. set textwidth=80
- 作用:设置每行文本的最大宽度为 80 个字符。
- 说明 :
- 当你在插入模式下输入文本时,Vim 会在达到 80 个字符时自动换行。
- 注意:这个设置仅在插入模式下生效。如果你已经有一段文本超出 80 列,可以使用
gq命令重新格式化选中的文本。
2. set colorcolumn=+1
- 作用 :高亮显示超出
textwidth的列,类似VSCode的垂直标尺。 - 说明 :
-
colorcolumn=+1表示在textwidth的下一列(即第 81 列)显示一条竖线,并高亮该列。 -
这条竖线是一个视觉提示,帮助你快速识别哪些行超出了设定的列宽限制。
-
如果你想直接指定某一列(例如第 80 列),可以改为:
vimset colorcolumn=80 -
你还可以同时高亮多列,例如:
vimset colorcolumn=80,120
-
3. set formatoptions+=t
- 作用:启用对注释文本的自动换行支持。
- 说明 :
-
formatoptions是一个控制 Vim 文本格式化的选项。 -
+t表示在插入模式下,当输入注释时,Vim 会根据textwidth自动换行,并保持注释符号(如//、#或/* */)的一致性。 -
例如,如果你正在写一段注释:
c// This is a very long comment that exceeds the textwidth limit.Vim 会自动将其拆分为多行:
c// This is a very long comment that // exceeds the textwidth limit.
-
4. set linebreak
- 作用:在单词边界处进行换行,而不是在字符中间断开。
- 说明 :
- 默认情况下,如果一行文本超出了窗口宽度,Vim 会在字符中间断开显示。
- 启用
linebreak后,Vim 会在单词边界处换行,避免单词被截断。 - 例如:
-
未启用
linebreak时:This is an example of a very lo ng word being split in the midd le. -
启用
linebreak后:This is an example of a very long word being split in the middle.
-