Linux开发工具vim篇

28 篇文章 2 订阅

在这里插入图片描述

👇0. 前言

我们在不管在电脑上还是手机上,按照我们的需求都会安装一些软件,例如在Windows上下载软件,我们可以选择去这个软件的官网进行下载,或者在我们本机的软件商店去下载。

在这里插入图片描述

这些软件都是人家写好的,我们需要使用,直接搜索安装就好了。但是为什么这些软件是公开免费呢?

比如说我们国内的xx音乐、网x云两大巨头音乐播放器软件,都是免费下载安装的,这么大的平台,不盈利就难以维持这个软件,所以就有冲会员、接广告等等方式来盈利。

当然了,也有一些是直接付费安装的,比如现在的很多游戏,都是需要购买才给提供安装(破解版另说)。

image-20230529111749976

免费的安装,可以收纳大量的用户,用户使用习惯了就会产生依赖,一旦拥有了庞大的用户群体,那么用户不希望这个软件倒闭、公司也不希望这个软件倒闭,那么就会有一些的措施,来维护这个软件,以至于整个生态。

还有一个疑问就是,为什么软件商店为什么可以直接安装呢?软件商店怎么知道这个软件在哪儿?

以华为为例,很多软件写好之后,会将自己的软件交给华为上线,所谓的上线,就是将这些软件托管到华为自己的服务器上面。然后我们应用商店收到我们下载需求的时候,就会向服务器发送安装请求,服务器会验证用户的请求,并检查用户是否有权限安装该软件,以及软件是否可用。如果验证通过,服务器会将软件安装包发送给客户端。接到安装包之后,软件商店就可按照我们的需求安装到指定位置。

image-20230529125745010

对于Linux也是如此,大量的使用者,这个系统开源,技术人员提供便捷的软件,各界提供支持,形成了强大的Linux生态。

👉1.yum软件包管理器

在Linux中安装软件,大概可分为三种方式:

  1. 源代码安装

    下载软件的源代码,手动编译安装。编译安装软件可能需要满足一些依赖关系,我们得先安装一些开发工具和库文件。

    那么这种方式就不是很友好,兼容性并不高。

  2. RPM安装
    RPM是Red Hat公司开发的一种包管理系统,用于安装、管理和卸载软件包的格式和工具。

    但是RPM安装需要依赖系统中的其他软件包,就类似捆绑安装。

  3. yum安装

    yum 是基于 RPM 包管理系统的包管理器,用于管理和安装软件包。

    yum安装自动解决了软件包的依赖关系,自行匹配所需的版本,所以yum安装比较常用。

这里的yum可以理解为我们Windows或者手机里面的软件商店。

👏1.1 yum三板斧

👌查看

rzsz指令用于接收Windows文件和向Windows传文件,使用需要安装lrzsz软件包。

我们可通过指令yum list查看全部的软件包,由于软件包非常多,我们可采用grep指令来筛选我们要寻找的软件包

yum list | grep lrzsz

image-20230529131648753

👌安装

当我们找到这个软件之后,我们就可以使用指令

yum install lrzsz.x86_64

进行安装(需要root用户权限)

image-20230529132334251

安装完毕之后,我们就可以使用该指令,向电脑输出文件或者接收文件

image-20230529135801689

👌卸载

如果想要卸载改软件,我们可采用指令

yum remove lrzsz.x86_64

进行卸载

在这里插入图片描述

Tips:

这里可能会有疑问,我们怎么知道哪些软件是我们需要的呢?

这个是需要我们在今后的使用中,慢慢摸索,用的多了,自然就知道需要哪些软件了。

就好比我们刚买来的电脑,我们就知道我们需要和别人通讯,就下载一个微信;需要听音乐,就下载QQ音乐/网易云。

这些都是我们慢慢习惯的,我们可能从小就接触了互联网,然后慢慢熟悉,一买来就安装这些软件,是因为我们已经熟悉了。

👏1.2 拓展yum源

我们在手机上下载一些软件的时候,有些软件官方的应用市场里面并没有,那就需要我们自己去该软件的官网去下载。

在Linux中,有自己的官方yum源,这里面的软件可以通过yum直接安装。对于官方没有的,那我们就得下载拓展yum源。

image-20230529142146018

我们可以使用指令

yum install epel-release

安装我们的拓展源,安装完毕之后,我们就可以下一些稀奇古怪的软件了

image-20230529142950563

👍2. vim编辑器

🤏2.1 vim基本概念

我们对于Linux指令有一些了解后,要准备往老本行去走了,那就是写代码。

在这里我们先介绍的是vim编辑器,我们Windows环境下,写代码通常都是用的集成开发环境(编写、调试、部署软件),而vim只是一款写代码的工具。

vim是一个多模式的编辑器,分为12种模式,对于初学者首先要了解这三个模式:

  • 命令模式

    Vim的默认模式,用于导航、编辑和执行各种命令

  • 插入模式

    输入和编辑文本

  • 底行模式

    用于执行各种命令,如保存文件,退出编辑器等

🤏2.2 vim基本操作

我们输入指令vim test.c,进入编辑器

在这里插入图片描述

进去之后就是命令(默认)模式,如果要写代码我们按键盘的i键,即可进入编辑模式

image-20230529192146424

编辑完毕之后,要将其保存退出,但我们不能直接从编辑模式进入底行模式,还是要先回退到默认模式,键盘右上角Esc,退出编辑模式

image-20230529192349840

回到默认模式之后,我们需要保存退出,shift + ;=:,进入底行模式,然后输入wq,就是保存并退出了。

w:保存当前文件

q!:强制退出

wq:保存并退出

set nu:显示行号

set nonu:去掉行号

image-20230529192839217

通过这三个操作,我们就能完整的编辑并保持我们的代码了。

在这里插入图片描述

🤏2.3 命令模式快捷操作

在Windows中,有许多的快捷键,当我们不想点击鼠标,就可以用快捷键进行操作,而在命令模式,没有配置的情况下,是无法进行鼠标操作的,使用只能先使用快捷键。

  • gg:定义到光标最开始行,常用于编辑大型文件。

    shift + g(G):定位到光标最末尾行。

    n + shift + g(nG):定位到指定行,先按要去的行号,再按shift+g

    gg - >G -> 2G

    GIF 2023-5-29 19-57-16

  • yy:复制光标行

    p:粘贴到光标下一行

    nyy:复制n行

    np:粘贴n行到光标所下一行

    u:撤销

    ctrl + r:取消撤销

    yy -> p -> 2yy -> 5p -> u
    在这里插入图片描述

  • dd:剪切、行删除

    dd -> gg -> p -> dd

    2

  • shift + $:定位到当前光标行的末尾

    shift + ^:定位到当前光标行的开头

    w:向后跳过当前单词

    b:向前跳过当前单纯

    k j h l:上下左右移动

    这个上下左右移动,按照我们的习惯,要么是方向键,要么是W S A D,这里是因为vim问世的时候,并没有出现上下左右键的键盘。

    image-20230529203408816

  • shift + ~:大小写转换

  • (n)r:对光标及之后的字符批量化转换

  • shift + R替换模式,对内容进行整体替换

    shift + R

    4

  • (n)x:对光标之后的字符进行删除

🤏2.4 多文件操作

在C语言中,我们经常会涉及多文件操作,当然vim编辑器也是支持多文件操作的。

image-20230529205412805

  1. 默认模式切换到底行模式
  2. vs [查看的文件]
  3. ctrl + w + w:切换窗口

具体演示:多文件生成 -> 切换窗口 -> 复制文件内容 -> 保存退出

11

🤏2.5 vim配置

虽然了解了一些vim的快捷操作,但和Windows环境下相比,还是相差甚远,没有代码补全、代码对齐等功能。

这是因为vim没有配置,相当于是一个裸vim,没有装备加成,我们可以通过让它穿上一些装备,让它变得强大。

vim的配置原理很简单,就是在我们当前用户的家目录下,增添一个vim的配置文件.vimrc

image-20230529212144352

然后我们将配置项写入.vimrc文件即可。

找到一个无需插件就能配的不错的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BwDpehDP-1685377302888)(https://gitee.com/PYH_2001/typora-test/raw/master/202305300006392.gif)]

来源: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:🤏这个符号,欧巴应该看不见吧,可不敢冒犯,哈哈哈哈)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加法器+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值