此次课程主要包含VSCode、git、vim和正则表达式四个方面的内容。
VSCode
Visual Studio Code combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools.
以上是github上的vscode项目的介绍,丰富的扩展支持使得其可以支持各种常见的开发语言,满足各类开发人员的需求。而且本身也比较轻量,又支持各个主流操作系统,使得其非常流行。
在vscode出现之前,用的比较多的免费的代码编辑器是notepad++。相比于notepad++,vscode有更好看的ui界面,更多的扩展支持,所以我很快就用vscode代替了notepad++。
快捷键
想要提高使用软件的效率,学习其各个操作的快捷键是必要的。官方整理了一份常用快捷键的文档,不同版本的链接地址如下:
- Windwos:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
- Linux:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf
- macOS:https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf
以下以windows为例,简要记录几个常用的快捷键:
- 左侧五个主页面的快捷方式:资源管理器(Ctrl+Shift+E)、搜索(Ctrl+Shift+F)、源代码管理(Ctrl+Shift+G)、调试(Ctrl+Shift+D)、扩展(Ctrl+Shift+X);
- 打开文件(Ctrl+O)、新建文件(Ctrl+N),这两个与操作系统的快捷方式是一样的;
- 打开文件夹(Ctrl+K Ctrl+O);
- 文件内搜索(Ctrl+F);
- 搜索后跳转到下一个/上一个匹配的位置(F3 / Shift+F3);
- 选中多列(Ctrl+Shift+Alt+上下箭头,或者Shift+Alt+拖动鼠标)
基本上每个菜单选项中都在后面注明了快捷键,忘记的话可以直接点开菜单查看,或者直接在设置中查看快捷键的配置。
除了使用默认的快捷键,vscode还支持导入其他编辑器的快捷键,或者直接自定义。具体的快捷键配置方法可以参考官方文档:https://code.visualstudio.com/docs/getstarted/keybindings。
插件(Extensions)
从英文来看似乎更应该称其为扩展,但是习惯使然,以下称其为插件。vscode的插件市场的内容非常丰富。其语言包就是以插件形式存在的,在安装完成后编辑器就会提示用户前往插件市场下载对应的语言包插件并安装。另外,当打开特定类型的文件时,vscode也会提示用户下载对应的插件对其进行更好的支持。比如打开c文件时会提示下载C/C++插件,打开py文件时会提示下载python插件等。
此外,还有许多插件会提高用户的效率,比如一键即可生成注释、TODO、代码运行等。
以下推荐几个本人常用的插件:
- Code Runner:可以方便地运行多种语言的代码;
- Code Spell Checker:可以像在word中一样的提示拼写错误;
- GitLens:在当前行的后面可以显示git中的作者和提交信息,当然还有许多其他的功能;
- Todo Tree:会显示每个文件中的TODO信息;
- LeetCode:直接可以在vscode中刷leetcode,不需要再登录网页了;
- VSC Netease Music:在vscode中使用网易云音乐听歌
Git
在git出现以前,版本控制系统主要是cvs和svn。这两种都是中心版本控制系统,所有的版本控制信息都存储在服务器中,只要服务器出现问题,就无法获得版本信息。而新出现的git,作为分布式版本控制系统,每台计算机都可作为服务器,在本地存储了版本信息。即使服务器出现问题,任何一个个体都可以替代服务器继续完成信息同步。显然安全性更高了。
首先推荐廖雪峰的git教程,学习完后基本对git入门了:https://www.liaoxuefeng.com/wiki/896043488029600
git的功能很多,命令也很多,但是比较基础和常用的不多,比较高阶的用法可以在需要的时候从网上查询,而且现在也有很多提供图形界面的git客户端,只要了解一些相关概念即可简单上手。下面整理几个比较常用的命令:
- 本地操作
- git config --global user.name XXX:设置用户名
- git config --global user.email XXX:设置邮箱
- git init :初始化⼀个本地版本库
- git status :查看当前workspace的状态
- git add [FILES] :把⽂件添加到index
- git commit -m "log infro" :把⽂件提交到仓库
- git log:查看提交的记录
- 远程操作
- git clone url:克隆服务器上的版本库
- git pull :将远程repo更新到本地
- git push:将本地commit更新到远程repo
- 分支管理
- git branch A:创建分支A
- git checkout A:切换到分支A
- git checkout -b B:创建并切换到分支B,其实是上面两条命令的合并
- git merge A:将分支A与主分支合并
- git push:将本地commit更新到远程repo
Vim
vim想必不用过多介绍,作为一个码农即使没用过肯定也听过它的大名。vim有三种模式,分别是:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
- 命令模式:用户刚刚启动 vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。另外,在输入模式下按下esc也会进入命令模式。
- 输入模式:在命令模式下按下i就进入了输入模式,此模式可以正常进行文本编辑。
- 底线命令模式:在命令模式下按下:(英文冒号)就进入了底线命令模式。此模式下可以输入单个或多个字符的命令。最常用的就是:wq命令来保存并关闭当前文件。
vim的命令也非常多,如果不是经常使用的话,全部记住命令不太现实,下面的网站上列举了大部分常用的命令,需要的时候可以直接打开查看:https://www.runoob.com/linux/linux-vim.html
另外,附上一张vim键位图,应付大部分的情况足够了。
正则表达式
正则表达式是对字符串操作的⼀种逻辑公式,通常被用来检索、替换那些符合某个模式(规则)的文本。教程推荐:https://www.runoob.com/regexp/regexp-tutorial.html,该网站同时也提供了在线练习的工具,很好用。
在vim中使用正则表达式进行搜索匹配非常方便,下面整理几个常用的语法:
搜索 | |
/word | 向光标之下寻找⼀个名称为 word 的字符串 |
?word | 向光标之上寻找⼀个名称为 word 的字符串 |
按键n | 重复前⼀个搜寻的动作 |
按键N | 反向重复前⼀个搜寻动作 |
限定符,用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配 | |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo" |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z" |
? | 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" |
字符集[],指定⼀组要匹配的字符,将其放在方括号中 | |
[aiu] | /b[aiu]g/会匹配bag,big,bug,其他的如bbg等不会匹配到 |
- | 定义匹配的字符范围,如[a-z]匹配所有的小写字母 |
^ | 排除指定的单个字符,如在文本"big,bug"中,/b[^i]g/会匹配bug而排除big |
匹配非打印字符 | |
\cx | 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
\f | 匹配一个换页符。等价于 \x0c 和 \cL。 |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ。 |
\r | 匹配一个回车符。等价于 \x0d 和 \cM。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。 |
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 |
\t | 匹配一个制表符。等价于 \x09 和 \cI。 |
\v | 匹配一个垂直制表符。等价于 \x0b 和 \cK。 |