文章目录
- 👇0. 前言
- 👉1.yum软件包管理器
- 👏1.1 yum三板斧
- 👌查看
- 👌安装
- 👌卸载
- 👏1.2 拓展yum源
- 👍2. vim编辑器
- 🤏2.1 vim基本概念
- 🤏2.2 vim基本操作
- 🤏2.3 命令模式快捷操作
- 🤏2.4 多文件操作
- 🤏2.5 vim配置
👇0. 前言
我们在不管在电脑上还是手机上,按照我们的需求都会安装一些软件,例如在Windows上下载软件,我们可以选择去这个软件的官网进行下载,或者在我们本机的软件商店去下载。
这些软件都是人家写好的,我们需要使用,直接搜索安装就好了。但是为什么这些软件是公开免费呢?
比如说我们国内的xx音乐、网x云两大巨头音乐播放器软件,都是免费下载安装的,这么大的平台,不盈利就难以维持这个软件,所以就有冲会员、接广告等等方式来盈利。
当然了,也有一些是直接付费安装的,比如现在的很多游戏,都是需要购买才给提供安装(破解版另说)。
免费的安装,可以收纳大量的用户,用户使用习惯了就会产生依赖,一旦拥有了庞大的用户群体,那么用户不希望这个软件倒闭、公司也不希望这个软件倒闭,那么就会有一些的措施,来维护这个软件,以至于整个生态。
还有一个疑问就是,为什么软件商店为什么可以直接安装呢?软件商店怎么知道这个软件在哪儿?
以华为为例,很多软件写好之后,会将自己的软件交给华为上线,所谓的上线,就是将这些软件托管到华为自己的服务器上面。然后我们应用商店收到我们下载需求的时候,就会向服务器发送安装请求,服务器会验证用户的请求,并检查用户是否有权限安装该软件,以及软件是否可用。如果验证通过,服务器会将软件安装包发送给客户端。接到安装包之后,软件商店就可按照我们的需求安装到指定位置。
对于Linux也是如此,大量的使用者,这个系统开源,技术人员提供便捷的软件,各界提供支持,形成了强大的Linux生态。
👉1.yum软件包管理器
在Linux中安装软件,大概可分为三种方式:
-
源代码安装
下载软件的源代码,手动编译安装。编译安装软件可能需要满足一些依赖关系,我们得先安装一些开发工具和库文件。
那么这种方式就不是很友好,兼容性并不高。
-
RPM安装
RPM是Red Hat公司开发的一种包管理系统,用于安装、管理和卸载软件包的格式和工具。但是RPM安装需要依赖系统中的其他软件包,就类似捆绑安装。
-
yum安装
yum 是基于 RPM 包管理系统的包管理器,用于管理和安装软件包。
yum安装自动解决了软件包的依赖关系,自行匹配所需的版本,所以yum安装比较常用。
这里的yum可以理解为我们Windows或者手机里面的软件商店。
👏1.1 yum三板斧
👌查看
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音乐/网易云。
这些都是我们慢慢习惯的,我们可能从小就接触了互联网,然后慢慢熟悉,一买来就安装这些软件,是因为我们已经熟悉了。
👏1.2 拓展yum源
我们在手机上下载一些软件的时候,有些软件官方的应用市场里面并没有,那就需要我们自己去该软件的官网去下载。
在Linux中,有自己的官方yum源,这里面的软件可以通过yum直接安装。对于官方没有的,那我们就得下载拓展yum源。
我们可以使用指令
yum install epel-release
安装我们的拓展源,安装完毕之后,我们就可以下一些稀奇古怪的软件了
👍2. vim编辑器
🤏2.1 vim基本概念
我们对于Linux指令有一些了解后,要准备往老本行去走了,那就是写代码。
在这里我们先介绍的是vim编辑器,我们Windows环境下,写代码通常都是用的集成开发环境(编写、调试、部署软件),而vim只是一款写代码的工具。
vim是一个多模式的编辑器,分为12种模式,对于初学者首先要了解这三个模式:
-
命令模式
Vim的默认模式,用于导航、编辑和执行各种命令
-
插入模式
输入和编辑文本
-
底行模式
用于执行各种命令,如保存文件,退出编辑器等
🤏2.2 vim基本操作
我们输入指令vim test.c
,进入编辑器
进去之后就是命令(默认)模式,如果要写代码我们按键盘的i
键,即可进入编辑模式
编辑完毕之后,要将其保存退出,但我们不能直接从编辑模式进入底行模式,还是要先回退到默认模式,键盘右上角Esc
,退出编辑模式
回到默认模式之后,我们需要保存退出,shift + ;
=:
,进入底行模式,然后输入wq
,就是保存并退出了。
w
:保存当前文件
q!
:强制退出
wq
:保存并退出
set nu
:显示行号
set nonu
:去掉行号
通过这三个操作,我们就能完整的编辑并保持我们的代码了。
🤏2.3 命令模式快捷操作
在Windows中,有许多的快捷键,当我们不想点击鼠标,就可以用快捷键进行操作,而在命令模式,没有配置的情况下,是无法进行鼠标操作的,使用只能先使用快捷键。
-
gg
:定义到光标最开始行,常用于编辑大型文件。shift + g(G)
:定位到光标最末尾行。n + shift + g(nG)
:定位到指定行,先按要去的行号,再按shift+g
gg
- >G
->2G
: -
yy
:复制光标行p
:粘贴到光标下一行nyy
:复制n行np
:粘贴n行到光标所下一行u
:撤销ctrl + r
:取消撤销yy
->p
->2yy
->5p
->u
:
-
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
:对光标之后的字符进行删除
🤏2.4 多文件操作
在C语言中,我们经常会涉及多文件操作,当然vim编辑器也是支持多文件操作的。
- 默认模式切换到底行模式
- vs [查看的文件]
ctrl + w + w
:切换窗口
具体演示:多文件生成 -> 切换窗口 -> 复制文件内容 -> 保存退出
🤏2.5 vim配置
虽然了解了一些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 <LEADER> :retab!<CR> 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 <LEADER><CR> :nohlsearch<CR> map s <nop> "保存 map S :w<CR> "退出 map Q :q<CR> "右分屏,聚焦右窗口 map sl :set splitright<CR>:vsplit<CR> "左分屏,聚焦左窗口 map sh :set nosplitright<CR>:vsplit<CR> "上分屏,聚焦上窗口 map sk :set nosplitbelow<CR>:split<CR> "下分屏,聚焦下窗口 map sj :set splitbelow<CR>:split<CR> "光标移至右窗口 map <LEADER>l <C-w>l "光标移至上窗口 map <LEADER>k <C-w>k "光标移至下窗口 map <LEADER>j <C-w>j "光标移至左窗口 map <LEADER>h <C-w>h "窗口上移 map <up> :res +5<CR> "窗口下移 map <down> :res -5<CR> "窗口左移 map <left> :vertical resize-5<CR> "窗口右移 map <right> :vertical resize+5<CR> "新建标签页 map <C-n> :tabe<CR> "前一标签页 map t- :-tabnext<CR> "后一标签页 map t= :+tabnext<CR> "重新加载vim配置文件 map rc :source $MYVIMRC<CR> "寻找两个相等的单词 map <LEADER>fd /\(\<\w\+\>\)\_s*\1 "替换占空符<++> map <LEADER><LEADER> <ESC>/<++><CR>:nohlsearch<CR>c4l "全选 map <C-a> ggVG "打开我的vimrc map <LEADER>rc :e ~/.vimrc<CR> "复制到系统剪切板 map +y "+y "从系统剪切板粘贴 map +p "+p set list set listchars=tab:>-,trail:- "自动匹配括号 :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(')')<CR> :inoremap { {}<ESC>i :inoremap } <c-r>=ClosePair('}')<CR> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(']')<CR> :inoremap < <><ESC>i :inoremap > <c-r>=ClosePair('>')<CR> function! ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endfunction " let &t_SI = "\<Esc>]50;CursorShape=1\x7" " let &t_SR = "\<Esc>]50;CursorShape=2\x7" " let &t_EI = "\<Esc>]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 <LEADER>r :call Note()<CR> func! Note() if &filetype == 'python' normal 0i# endif if &filetype == 'vim' normal 0i" endif if &filetype == 'plaintex' normal 0i% endif endfunc " 设置取消注释 map <LEADER>t 0df j "编译运行 map <F5> :call RunPython()<CR> func! RunPython() exec "W" if &filetype == 'python' " exec "!time python3.6 %" "exec ":set splitbelow<CR>:split<CR>" 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:🤏这个符号,欧巴应该看不见吧,可不敢冒犯,哈哈哈哈)