如何成为一个合格的码农是很多人都想知道的问题,本文从 基础的Typing、常用编辑器VSCode、代码管理工具Git 以及 常用的正则表达式 五个方面做些简单的记录。
一、Typing
要想成为一名合格的码农,最最基础的就是要熟悉键盘的键位分布,能够快速而准确的盲打出自己需要的内容。特别是码农对于中英文,符号,特殊字符的切换要非常流畅。typing的高效性和准确性,是一个优秀码农最最基础的要求。
通常的键盘分为基本键区、功能键区、光标区、副键盘区。其中基本键区包含26个字母、10个数字以及若干的功能键,通常的操作基本可以在基本键区完成。这里不再赘述,但是需要再次强调的是,高效准确的typing是一切的基础。
二、VScode的使用
VScode 全称 Visual Studio Code, 是微软开发的一款轻量且强大的编辑器,支持windows、macOS、Linux平台,内置JavaScript、TypeScript、node.js。并且拥有丰富的插件系统,可以通过安装各种插件来搭建不同的开发环境.,相比于纯文本的编辑器,VScode拥有更强大的补全及编译等功能,得益于丰富的插件系统,是它相比于传统的ide也依旧不逊色,但是相对于笨重的ide,vscode又轻量了很多。因此vscode是一种介于文本编辑器与笨重ide之间的一种开发工具。拥有以下优点:
- 丰富的插件系统
- 更轻量的代码编辑
- 支持多平台、多语言开发
2.1 界面认识
不多赘述,首先来认识下vscode的基本界面
vscode默认以文件夹的形式打开对应的工程,左侧侧边栏可显示工程的目录结构,同时列举最近打开的文件和工程,方便用户打开最近的文件进行编辑和修改。
左侧五个按钮依次为文档、搜索、分支管理、编译执行、插件管理。其中插件管理会经常的使用到,可以在李曼搜索各种语言或功能的插件。
2.2 快捷操作
vscode 提供了多种快捷键操作,同时也支持用户自定义keymap来执行对应的快捷操作。
基础编辑
快捷键 | 作用 |
---|---|
Ctrl+X |
剪切 |
Ctrl+C |
复制 |
Ctrl+Shift+K |
删除当前行 |
Ctrl+Enter |
在当前行之后插入一行 |
Ctrl+Shift+Enter |
在当前行之前插入一行 |
Alt+Up/Down |
移动当前行上下 |
Shift+Alt+Up/Down |
在当前行上下复制当前行 |
Ctrl+Up/Down |
行视图上下偏移 |
Alt+PageUp/PageDown |
屏视图上下偏移 |
Ctrl+Shift+[ |
折叠区域代码 |
Ctrl+Shift+] |
展开区域代码 |
Ctrl+K Ctrl+[ |
折叠区域内所有代码(包括子域和父域) |
Ctrl+K Ctrl+] |
展开区域内所有代码(包括子域和父域) |
Ctrl+K Ctrl+0 |
折叠所有区域内的代码 |
Ctrl+K Ctrl+J |
展开所有区域内的代码 |
Ctrl+K Ctrl+C |
添加行注释 |
Ctrl+K Ctrl+U |
删除行注释 |
Ctrl+/ |
添加关闭行注释 |
Shift+Alt+A |
添加关闭区域注释 |
Alt+Z |
添加关闭自动换行 |
导航操作
快捷键 | 作用 |
---|---|
Ctrl+T |
启动符号搜索框 |
Ctrl+G |
跳转行 |
Ctrl+P |
启动文件搜索框,方便快速打开文件 |
Ctrl+Shift+O |
跳转至符号处 |
Ctrl+Shift+M |
显示问题面板 |
F8 |
跳转到下一个错误或者警告 |
Shift+F8 |
跳转到上一个错误或者警告 |
Ctrl+Shift+Tab |
切换到最近打开的文件 |
Alt+Left/Right |
向前/向后 |
光标操作
快捷键 | 作用 |
---|---|
Home/End |
光标跳转到行首/尾 |
Ctrl+Home/End |
光标跳转到页首/尾 |
Alt+Click |
插入光标(支持多个) |
Ctrl+Alt+Up/Down |
上下插入光标(支持多个) |
Ctrl+U |
撤销最后一次光标操作 |
Shift+Alt+I |
插入光标到选中范围内所有行行尾 |
Ctrl+I |
选中当前行 |
Shift+Alt+(drag mouse) |
在鼠标拖动区域的每行行尾插入光标 |
Ctrl+F2 |
选择当前字符的所有出现,然后进行操作 |
Ctrl+Shift+\ |
跳转到与当前括号匹配的括号 |
更多的操作可以通过点击左下角设置键查看和自定义
vscode 还有更多高级的用法,详情可以查看官方文档: https://code.visualstudio.com/docs
三、版本控制系统
3.1 版本控制历史
写完了代码以后,通常会将代码放在代码仓库中,方便版本控制及协同操作。git便是当前最流行的版本管理工具。版本控制系统一共经历了三个阶段。
- 本地版本控制系统
- 集中版本控制系统
- 分布式版本控制系统
本地版本控制系统
本地版本控制系统通常采用某种简单的数据库来纪录文件的历次更新差异
最流行的是res:
其工作原理基本上是保存并管理文件补丁(patch)。patch是一种特定格式的文本文件,纪录这对饮文件修改前后的内容变化。
集中版本控制系统
集中版本控制(Centralized Version Control System CVCS)是为了解能够让在不同系统上的开发者协同工作。
这类系统如:CVS(协同版本控制),Subversion(SVN) 以及perforce等,都有一个单一的集中管理服务器,保存所有文件的修订版 . 本,协同工作的人们通过客户端连到这台电脑,取出最新的文件或者提交更新。
这样设计的好处是,每个人都可以在一定程度上看到项目中的其他人正在做什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个CVCS要远比在各个客户端上维护本地数据库要容易的多。
当然这样设计也有坏处:当中央节点宕机时,任何人都无法提交更新,也无法协同工作。当中心数据库所在的磁盘发生损坏,又没有恰当备份,那么将丢失所有的数据
分布式版本管理
这类系统如 git 都可以指定和若干不同的远端代码仓库进行交互。
借此就可以在同一个项目中分别和不同工作小组的人相互协作。也可以根据需要设定不同的协作流程,比如层次模型式的工作流。
3.2 Git 重要概念
Git的设计目标
- 速度
- 简单的设计
- 对非线性开发模式的强力支持
- 完全分布式
- 有能力高效管理类似linux内核一样的超大规模项目
Git的三种状态
Git有三种状态,用户的文件可能处于其中之一:
- 已提交 commited :表示数据已经安全的保存于本地数据库
- 已修改 modified:表示文件已修改,但是还为保存到数据库
- 已暂存 staged:表示对已修改文件的当前版本做了标记,使之包含在下次提交的快照中
Git的四个工作区
Git仓库:是Git用来保存项目的元数据和对象数据库的地方,是Git中最重要的部分,从其他计算机克隆仓库是,拷贝的就是这里的数据。
工作目录:是对项目某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改
暂存区域:是一个文件,保存了下次将要提交的文件列表信息,一般在Git仓库目录中。有时候也被称为‘索引’
远程仓库:不是在本地仓库中,项目代码在远程git服务器上,比如项目放在github上,就是一个远程仓库,通常使用clone命令将远程仓库拷贝到本地仓库中,开发后推送到远程仓库中即可;
更详细的内容见: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
3.3 Git基本操作
- 管理配置命令
- 工作区与暂存区交互命令
- 暂存区与本地仓库交互命令
- 本地仓库与远程仓库交互命令
管理配置命令
- 列出当前配置:
git config --list
; - 列出repository配置:
git config --local --list
; - 列出全局配置:
git config --global --list
; - 列出系统配置:
git config --system --list
; - 配置用户名:
git config --global user.name "your name"
- 配置用户邮箱:git config --global user.email "[email protected]"
工作区操作命令
- 将工作区中的项目文件使用git进行管理,即创建一个新的本地仓库:
git init
; - 从远程git仓库复制项目:
git clone
- 提交工作区所有文件到暂存区:
git add .
- 提交工作区中指定文件到暂存区:
git add
;... - 提交工作区中某个文件夹中所有文件到暂存区:
git add [dir]
- 删除工作区文件,并且也从暂存区删除对应文件的记录:
git rm
; - 从暂存区中删除文件,但是工作区依然还有该文件:
git rm --cached
; - 取消暂存区已经暂存的文件:
git reset HEAD
;... - 撤销上一次对文件的操作:
git checkout --
- 隐藏当前变更,以便能够切换分支:
git stash
; - 查看当前所有的储藏:
git stash list
;
暂存区操作命令
- 将暂存区中的文件提交到本地仓库中,即打上新版本:
git commit -m "commit_info"
; - 将所有已经使用git管理过的文件暂存后一并提交,跳过add到暂存区的过程:
git commit -a -m "commit_info"
; - 提交文件时,发现漏掉几个文件,或者注释写错了,可以撤销上一次提交:
git commit --amend
; - 创建分支:
git branch
,如git branch testing
; - 从当前所处的分支切换到其他分支:
git checkout
,如git checkout testing
; - 新建并切换到新建分支上:
git checkout -b
; - 删除分支:
git branch -d
; - 将当前分支与指定分支进行合并:
git merge
; - 显示本地仓库的所有分支:
git branch
; - 查看各个分支最后一个提交对象的信息:
git branch -v
; - 查看哪些分支已经合并到当前分支:
git branch --merged
; - 查看当前哪些分支还没有合并到当前分支:
git branch --no-merged
; - 把远程分支合并到当前分支:
git merge
/
本地仓库操作命令
- 添加远程仓库,一般会取一个简短的别名:
git remote add [remote-name] [url]
, - 从远程仓库中抓取本地仓库中没有的更新:
git fetch [remote-name]
, - 将本地仓库某分支推送到远程仓库上:
git push [remote-name] [branch-name]
, - 查看远程仓库的详细信息:
git remote show origin
; - 修改某个远程仓库在本地的简称:
git remote rename [old-name] [new-name]
, - 移除远程仓库:
git remote rm [remote-name]
- 查看本地仓库关联的远程仓库:
git remote
;
3.4 Git 操作示例
下面演示git的实际操作
1)初始化本地本版库 git init
2) 添加配置及远程仓库 git remote add && git config --global
3)新增或修改一个文件
4) 查看工作区状态 git status
5) 添加追踪 git add .
6) 提交到本地仓库 git commit
7) 提交到远程仓库 git push
四、Vim 编辑器
vim/vi 编辑器是当前linux下最流行的编辑器,拥有强大的功能,并且支持超多的自定义选项。熟练的使用vi 编辑器,能够让代码开发效率极大的提升。
4.1 Vim三种工作模式
4.2 vim快捷命令
vim 拥有强大的命令集合,可以很方便的仅通过键盘进行复杂的指令操作,常用的操作有如下:
- 编辑: vim filename
- 插入: i
- 保存: w
- 退出: q
- 替换: %s
- 删除 : dd
- 删除多行: m,nd
- 分tab: tabn filename
- 复制:v 选中 p
- 粘贴:y
- 设置编码: set fileencoding
- 多行添加: ctrl + v 选中 shift+i 添加 esc
- 显示行号: set nu
- 粘贴: set paste
更多的命令见: https://www.runoob.com/linux/linux-vim.html
五、正则表达式
在进行数据清洗及匹配指定数据时经常会使用到正则表达式来进行模式匹配。
字符 | 描述 |
---|---|
\ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。 |
^ | 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n ”或“\r ”之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n ”或“\r ”之前的位置。 |
* | 匹配前面的子表达式零次或多次。例如,zo*能匹配“z ”以及“zoo ”。*等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,“zo+ ”能匹配“zo ”以及“zoo ”,但不能匹配“z ”。+等价于{1,}。 |
? | 匹配前面的子表达式零次或一次。例如,“do(es)? ”可以匹配“does ”或“does ”中的“do ”。?等价于{0,1}。 |
{n} | n是一个非负整数。匹配确定的n次。例如,“o{2} ”不能匹配“Bob ”中的“o ”,但是能匹配“food ”中的两个o。 |
{n,} | n是一个非负整数。至少匹配n次。例如,“o{2,} ”不能匹配“Bob ”中的“o ”,但能匹配“foooood ”中的所有o。“o{1,} ”等价于“o+ ”。“o{0,} ”则等价于“o* ”。 |
{n,m} | m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3} ”将匹配“fooooood ”中的前三个o。“o{0,1} ”等价于“o? ”。请注意在逗号和两个数之间不能有空格。 |
? | 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。 |
. | 匹配除“\ n ”之外的任何单个字符。要匹配包括“\ n ”在内的任何字符,请使用像“(.|\n) ”的模式。 |