我们在不管在电脑上还是手机上,按照我们的需求都会安装一些软件,例如在Windows上下载软件,我们可以选择去这个软件的官网进行下载,或者在我们本机的软件商店去下载。
这些软件都是人家写好的,我们需要使用,直接搜索安装就好了。但是为什么这些软件是公开免费呢?
比如说我们国内的xx音乐、网x云两大巨头音乐播放器软件,都是免费下载安装的,这么大的平台,不盈利就难以维持这个软件,所以就有冲会员、接广告等等方式来盈利。
当然了,也有一些是直接付费安装的,比如现在的很多游戏,都是需要购买才给提供安装(破解版另说)。
免费的安装,可以收纳大量的用户,用户使用习惯了就会产生依赖,一旦拥有了庞大的用户群体,那么用户不希望这个软件倒闭、公司也不希望这个软件倒闭,那么就会有一些的措施,来维护这个软件,以至于整个生态。
还有一个疑问就是,为什么软件商店为什么可以直接安装呢?软件商店怎么知道这个软件在哪儿?
以华为为例,很多软件写好之后,会将自己的软件交给华为上线,所谓的上线,就是将这些软件托管到华为自己的服务器上面。然后我们应用商店收到我们下载需求的时候,就会向服务器发送安装请求,服务器会验证用户的请求,并检查用户是否有权限安装该软件,以及软件是否可用。如果验证通过,服务器会将软件安装包发送给客户端。接到安装包之后,软件商店就可按照我们的需求安装到指定位置。
对于Linux也是如此,大量的使用者,这个系统开源,技术人员提供便捷的软件,各界提供支持,形成了强大的Linux生态。
在Linux中安装软件,大概可分为三种方式:
源代码安装
下载软件的源代码,手动编译安装。编译安装软件可能需要满足一些依赖关系,我们得先安装一些开发工具和库文件。
那么这种方式就不是很友好,兼容性并不高。
RPM安装
RPM是Red Hat公司开发的一种包管理系统,用于安装、管理和卸载软件包的格式和工具。
但是RPM安装需要依赖系统中的其他软件包,就类似捆绑安装。
yum安装
yum 是基于 RPM 包管理系统的包管理器,用于管理和安装软件包。
yum安装自动解决了软件包的依赖关系,自行匹配所需的版本,所以yum安装比较常用。
这里的yum可以理解为我们Windows或者手机里面的软件商店。
rz
和sz
指令用于接收Windows文件和向Windows传文件,使用需要安装lrzsz
软件包。
我们可通过指令yum list
查看全部的软件包,由于软件包非常多,我们可采用grep
指令来筛选我们要寻找的软件包
yum list | grep lrzsz
当我们找到这个软件之后,我们就可以使用指令
yum install lrzsz.x86_64
进行安装(需要root用户权限)
安装完毕之后,我们就可以使用该指令,向电脑输出文件或者接收文件
如果想要卸载改软件,我们可采用指令
yum remove lrzsz.x86_64
进行卸载
Tips:
这里可能会有疑问,我们怎么知道哪些软件是我们需要的呢?
这个是需要我们在今后的使用中,慢慢摸索,用的多了,自然就知道需要哪些软件了。
就好比我们刚买来的电脑,我们就知道我们需要和别人通讯,就下载一个微信;需要听音乐,就下载QQ音乐/网易云。
这些都是我们慢慢习惯的,我们可能从小就接触了互联网,然后慢慢熟悉,一买来就安装这些软件,是因为我们已经熟悉了。
我们在手机上下载一些软件的时候,有些软件官方的应用市场里面并没有,那就需要我们自己去该软件的官网去下载。
在Linux中,有自己的官方yum源,这里面的软件可以通过yum直接安装。对于官方没有的,那我们就得下载拓展yum源。
我们可以使用指令
yum install epel-release
安装我们的拓展源,安装完毕之后,我们就可以下一些稀奇古怪的软件了
我们对于Linux指令有一些了解后,要准备往老本行去走了,那就是写代码。
在这里我们先介绍的是vim编辑器,我们Windows环境下,写代码通常都是用的集成开发环境(编写、调试、部署软件),而vim只是一款写代码的工具。
vim是一个多模式的编辑器,分为12种模式,对于初学者首先要了解这三个模式:
命令模式
Vim的默认模式,用于导航、编辑和执行各种命令
插入模式
输入和编辑文本
底行模式
用于执行各种命令,如保存文件,退出编辑器等
我们输入指令vim test.c
,进入编辑器
进去之后就是命令(默认)模式,如果要写代码我们按键盘的i
键,即可进入编辑模式
编辑完毕之后,要将其保存退出,但我们不能直接从编辑模式进入底行模式,还是要先回退到默认模式,键盘右上角Esc
,退出编辑模式
回到默认模式之后,我们需要保存退出,shift + ;
=:
,进入底行模式,然后输入wq
,就是保存并退出了。
w
:保存当前文件
q!
:强制退出
wq
:保存并退出
set nu
:显示行号
set nonu
:去掉行号
通过这三个操作,我们就能完整的编辑并保持我们的代码了。
在Windows中,有许多的快捷键,当我们不想点击鼠标,就可以用快捷键进行操作,而在命令模式,没有配置的情况下,是无法进行鼠标操作的,使用只能先使用快捷键。
gg
:定义到光标最开始行,常用于编辑大型文件。
shift + g(G)
:定位到光标最末尾行。
n + shift + g(nG)
:定位到指定行,先按要去的行号,再按shift+g
gg
- >G
->2G
:
yy
:复制光标行
p
:粘贴到光标下一行
nyy
:复制n行
np
:粘贴n行到光标所下一行
u
:撤销
ctrl + r
:取消撤销
dd
:剪切、行删除
dd
->gg
->p
->dd
…
shift + $
:定位到当前光标行的末尾
shift + ^
:定位到当前光标行的开头
w
:向后跳过当前单词
b
:向前跳过当前单纯
k j h l
:上下左右移动
这个上下左右移动,按照我们的习惯,要么是方向键,要么是W S A D,这里是因为vim问世的时候,并没有出现上下左右键的键盘。
shift + ~
:大小写转换
(n)r
:对光标及之后的字符批量化转换
shift + R
:替换模式,对内容进行整体替换
shift + R
(n)x
:对光标之后的字符进行删除
在C语言中,我们经常会涉及多文件操作,当然vim编辑器也是支持多文件操作的。
ctrl + w + w
:切换窗口具体演示:多文件生成 -> 切换窗口 -> 复制文件内容 -> 保存退出
虽然了解了一些vim的快捷操作,但和Windows环境下相比,还是相差甚远,没有代码补全、代码对齐等功能。
这是因为vim没有配置,相当于是一个裸vim,没有装备加成,我们可以通过让它穿上一些装备,让它变得强大。
vim的配置原理很简单,就是在我们当前用户的家目录下,增添一个vim的配置文件.vimrc
:
然后我们将配置项写入.vimrc
文件即可。
找到一个无需插件就能配的不错的
来源:vim配置无插件
全部的配置信息如下:
" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by " the call to :runtime you can find below. If you wish to change any of those " settings, you should do it in this file (/etc/vim/vimrc), since debian.vim " will be overwritten everytime an upgrade of the vim packages is performed. " It is recommended to make changes after sourcing debian.vim since it alters " the value of the 'compatible' option. " This line should not be removed as it ensures that various options are " properly set to work with the Vim-related packages available in Debian. runtime! debian.vim " Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc. " This happens after /etc/vim/vimrc(.local) are loaded, so it will override " any settings in these files. " If you don't want that to happen, uncomment the below line to prevent " defaults.vim from being loaded. " let g:skip_defaults_vim = 1 " Uncomment the next line to make Vim more Vi-compatible " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous " options, so any other options should be set AFTER setting 'compatible'. "set compatible " Vim5 and later versions support syntax highlighting. Uncommenting the next " line enables syntax highlighting by default. if has("syntax") syntax on endif " If using a dark background within the editing area and syntax highlighting " turn on this option as well "set background=dark " Uncomment the following to have Vim jump to the last position when " reopening a file "if has("autocmd") " au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif "endif " Uncomment the following to have Vim load indentation rules and plugins " according to the detected filetype. if has("autocmd") filetype plugin indent on endif " The following are commented out as they cause vim to behave a lot " differently from regular Vi. They are highly recommended though. "set showcmd " Show (partial) command in status line. "set showmatch " Show matching brackets. "set ignorecase " Do case insensitive matching "set smartcase " Do smart case matching "set incsearch " Incremental search "set autowrite " Automatically save before commands like :next and :make "set hidden " Hide buffers when they are abandoned "set mouse=a " Enable mouse usage (all modes) " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif let mapleader=" " " 设置leader键为空格键 set nocompatible " 不以兼容模式运行 set encoding=utf-8 " utf-8编码 set helplang=cn " 中文帮助文档 set number " 显示行号 set wrap " 自动换行 set showcmd " 显示输入信息 set cursorline " 显示光标所在行 set wildmenu " 显示补全提示 set hlsearch " 高亮搜索结果 "set foldenable " 允许折叠 "set foldmethod=manual " 手动折叠 "打开vim运行nohlsearch,取消高亮 exec "nohlsearch" set ts=4 " 设置tab键长度为四个空格 set expandtab " 设置tab键替换为四个空格键 " 将文件中的tab键替换成空格 map
:retab! set incsearch " 一边输入一边高亮 set ignorecase " 忽略大小写 set smartcase " 智能大小写 set laststatus=2 " 设置状态栏在倒数第2行 " 设置状态栏格式 "set statusline=%<%F%=%y%m%r%h%w%{&ff}\[%{&fenc}]0x%02B@%040h#%n\(%3l/%3L,%3c\|%3v\)%3p%% set statusline=%1*\%<%.50F\ "显示文件名和文件路径 set statusline+=%=%2*\%y%m%r%h%w\ %* "显示文件类型及文件状态 set statusline+=%3*\%{&ff}\[%{&fenc}]\ %* "显示文件编码类型 set statusline+=%4*\ row:%l/%L,col:%c\ %* "显示光标所在行和列 set statusline+=%5*\%3p%%\%* "显示光标前文本所占总文本的比例 hi User1 cterm=none ctermfg=25 ctermbg=0 hi User2 cterm=none ctermfg=208 ctermbg=0 hi User3 cterm=none ctermfg=169 ctermbg=0 hi User4 cterm=none ctermfg=100 ctermbg=0 hi User5 cterm=none ctermfg=green ctermbg=0 set mouse=a " 启用鼠标 set backspace=indent,eol,start " 退格键可以退到上一行 set scrolloff=5 " 光标行上下移动范围各缩小5行 "set ruler "set transparency=11 " 设置背景透明 hi Normal ctermfg=252 ctermbg=none "寻找下一搜索结果,并将其置于屏幕中心 noremap = nzz "寻找上一搜索结果,并将其置于屏幕中心 noremap - Nzz "取消高亮 noremap :nohlsearch map s "保存 map S :w "退出 map Q :q "右分屏,聚焦右窗口 map sl :set splitright :vsplit "左分屏,聚焦左窗口 map sh :set nosplitright :vsplit "上分屏,聚焦上窗口 map sk :set nosplitbelow :split "下分屏,聚焦下窗口 map sj :set splitbelow :split "光标移至右窗口 map l l "光标移至上窗口 map k k "光标移至下窗口 map j j "光标移至左窗口 map h h "窗口上移 map :res +5 "窗口下移 map :res -5 "窗口左移 map :vertical resize-5 "窗口右移 map :vertical resize+5 "新建标签页 map :tabe "前一标签页 map t- :-tabnext "后一标签页 map t= :+tabnext "重新加载vim配置文件 map rc :source $MYVIMRC "寻找两个相等的单词 map fd /\(\<\w\+\>\)\_s*\1 "替换占空符<++> map /<++> :nohlsearch c4l "全选 map ggVG "打开我的vimrc map rc :e ~/.vimrc "复制到系统剪切板 map +y "+y "从系统剪切板粘贴 map +p "+p set list set listchars=tab:>-,trail:- "自动匹配括号 :inoremap ( () i :inoremap ) =ClosePair(')') :inoremap { {} i :inoremap } =ClosePair('}') :inoremap [ [] i :inoremap ] =ClosePair(']') :inoremap < <> i :inoremap > =ClosePair('>') function! ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\ " else return a:char endif endfunction " let &t_SI = "\ ]50;CursorShape=1\x7" " let &t_SR = "\ ]50;CursorShape=2\x7" " let &t_EI = "\ ]50;CursorShape=0\x7" "打开文件,光标回到上次编辑的位置 au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif "创建文件头 autocmd BufNewFile *.py,*.tex exec ":call SetTitle()" func! SetTitle() if &filetype == 'python' call setline(1,"#!/usr/bin/env python3") call append(line("."),"# -*- coding:UTF-8 -*-") call append(line(".")+1,"##########################################################################") call append(line(".")+2, "# File Name: ".expand("%")) call append(line(".")+3, "# Author: stubborn vegeta") call append(line(".")+4, "# Created Time: ".strftime("%c")) call append(line(".")+5, "##########################################################################") endif if &filetype == 'plaintex' call setline(1,"% -*- coding:UTF-8 -*-") call append(line("."),"%#########################################################################") call append(line(".")+1, "% File Name: ".expand("%")) call append(line(".")+2, "% Author: stubborn vegeta") call append(line(".")+3, "% Created Time: ".strftime("%c")) call append(line(".")+4, "%#########################################################################") endif "autocmd BufNewFile * normal G normal G endfunc " 设置注释快捷键 map r :call Note() func! Note() if &filetype == 'python' normal 0i# endif if &filetype == 'vim' normal 0i" endif if &filetype == 'plaintex' normal 0i% endif endfunc " 设置取消注释 map t 0df j "编译运行 map :call RunPython() func! RunPython() exec "W" if &filetype == 'python' " exec "!time python3.6 %" "exec ":set splitbelow :split " exec "!time python3.6 %" endif if &filetype == 'dot' exec "!dot % -T png -o %.png" exec "!feh %.png" endif endfunc "colorscheme molokai set t_Co=256 "开启256色支持 "set background=dark
Tips:
一个用户一个vim配置文件,不会影响其他用户
不建议给root用户配置
那么本次的Linux工具分享1就到这里结束啦,如果感觉有帮助的话,希望支持支持,我们下期再见,如果还有下期的话。
(PS:这个符号,欧巴应该看不见吧,可不敢冒犯,哈哈哈哈)