第三课.Linux代码编辑器

vi/vim

vi/vim简介

fig1

vim:the ubiquitous text editor
vim是Unix类的必装工具,主要优势在于适用于嵌入式设备,用命令行方式编辑文本,而vi作为vim的简化版本,严格来说,vi才是更单纯的文本编辑器,vim已经拓展成为一种开发工具

vi的模式

vi/vim的模式有三种:命令模式,输入模式,底线命令模式;
1.命令模式:Command mode,刚启动vi/vim时,就进入了命令模式,此时vi只能对输入的命令做出反应;
2.输入模式:Insert mode,在命令模式下,输入i,a,o(不分大小写)均可以进入输入模式,此时才可以进行编辑,如果输入<Esc>,则退出回到命令模式;
3.底线命令模式:Last line mode,在命令模式下,输入冒号字符":"进入底线命令模式,此时,vi可以对一些特殊命令做出反应,如果输入<Esc>,将会退出回到命令模式;


底线命令模式的常用指令:

q!       强制退出,不保存
wq       保存后退出
set nu   显示行号
q        正常退出
w        保存文件  

vi在命令模式下的操作

移动光标:

h 向左 , j 向下 , k 向上 , l 向右
+ 移到下一行 , - 移到上一行
0 移到所在行的开头
$ 移到所在行的末尾
G 移到文件最后一行
gg 移到文件第一行
n<Enter> n为数字,向下移动n行

翻页:

Ctrl+f 向下移动一页
Ctrl+d 向下移动半页
Ctrl+b 向上移动一页
Ctrl+u 向上移动半页

删除:

x 向后删除一个字符
X 向前删除一个字符
dd 删除光标所在行
ndd 删除光标所在行向下n行

复制:

yy 复制光标所在行
nyy 复制光标所在行的向下n行

粘贴:

p 将已复制的数据粘贴到光标下一行
P 将已复制的数据粘贴到光标上一行

其他:

u 复原上一个动作(撤销)
Ctrl+r 重做一遍上一次的动作

vi在底线命令模式下的操作

搜索:

/word

向光标之下寻找word,按n光标移动到下一个word,N则向上搜索;

搜索并替换:

n1,n2s/word1/word2/g

n1,n2为数字,在n1行到n2行之间寻找word1,替换为word2,如果将g写成gc,每次替换时都会询问确认
其他:

w [filename] 保存,另存为,filename是可选参数
r [filename] 将filename的内容追加到当前光标的下一行

Visual Studio Code

Visual Studio Code支持Windows,OSX,Linux,内置JavaSkript,TypeSkript和Node.js支持,插件丰富,可以通过插件支持C++,C#,Python,php;
对于ubuntu,可以先下载"*.deb"文件,再通过apt安装:

sudo apt install "*.deb"

ubuntu上安装Visual Studio Code的界面如下:
fig2
Visual Studio Code有四个主要菜单:文件夹,搜索,git(版本控制),调试,插件生态系统

Git

git简介

git是目前世界上最先进的分布式版本控制系统,在git之前,主流的版本控制使用Subversion和Concurrent Version System,但它们是集中式的,即本地从服务器获取到文件,更改后必须提交到同一个服务器

关于git的故事

在2002年以前,Linux内核源码文件是通过diff(对比前后两次代码)的方式发给Linus,再通过Linus本人手动整合代码,Linus本人是Subversion和Concurrent Version System的反对者,因为集中式的版本控制系统访问速度慢,效率低,当时市场上也存在分布式版本控制系统,但都是商用版,与Linux开源精神背道而驰;
一个偶然的机会,商业版本控制系统BitKeeper的初始公司BitMover授权Linux社区免费使用该版本控制系统,但仅仅到2005年,BitMover就要收回使用权,Linus紧急情况下,基于C语言自己写了一个分布式版本控制系统,这个系统就是Git,不到一个月,Linux的源码就迁移到了Git;
2008年,Github网站上线,github为开源项目免费提供git管理和存储,开源逐渐成为大势所趋,2016年BitKeeper也转型开源,至今,众所周知,github已经成为全球最大的男性社交网站

git的使用

1.git初识
首先在机器上安装git:

sudo apt install git

fig3

新建一个项目,并用git初始化项目,使项目具有版本控制属性:

mkdir project
cd project
git init

在project下新建文件,可以用add的方式添加到版本库里:

vi main.c
#使用vi对main.c进行编辑
git add main.c

通过git status可以查看版本库的状态,注意main.c只是添加到库中,还未提交,状态如下:
fig4
如果再新建一个文件hello.c,但不添加到版本库,查看状态会出现以下结果:
fig5
2.结合github
上面所说的版本库属于本地的版本控制系统,github则是远端的版本库,一般个人用户在github上创建项目,再git clone到本地的版本库,修改完成后再提交到远端服务器上;
首先,在github上新建库:new repository,其中,在初始化选项中,readme.md文件用于说明项目,gitignore指明哪些文件不会纳入到版本控制中(比如只让源码进入版本控制,源码生成的结果文件不纳入版本控制,即不开源),license则是该版本库选择的协议(有GPL等);
新建好项目后,会得到一个URL,用户在本地借助:

git clone URL

将项目克隆到本地

fig6
下面是用于后续提交等操作的常用命令:

git add [files] 将文件添加到版本库,若用 git add . 代表将当前目录下所有文件纳入
git commit -m "the log" 将文件提交到仓库
git log 查看提交记录,即版本库的修改记录
git status 查看提交状态

git diff [files] 查找前后文件的差异
git reset --hard HEAD^ 回滚到上一版本

git pull 将最新版本拉回到本地
git push 推送最新版本到github

在commit前需要指明本地的身份:

git config --global user.email "xxxxx.com"

git push前需要提供github账号,用以明确身份

fig7
push完成后,远端版本库将会新增文件,并有修改记录:
fig8
3.commit和push
commit和push体现了git的分布式管理,git可以管理本地仓库,和远程仓库:
commit用于将本地修改的文件提交到本地库;
push将本地仓库的最新信息推送到远程库;
commit与push分开的好处是,避免由于网络原因导致提交到服务器的文件丢失,是否push到服务器完全由用户选择

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值