Ubuntu从python3安装到vim安装配置

2023-05-16

文章目录

  • python3编译安装
    • 安装python3相关依赖库
    • 下载python3软件包
    • 编译python3源码
    • 安装完成建立python3与pip3软链接
    • 将python3加入环境变量
    • 检查python3与pip3是否安装正常
  • vim编译安装及添加python支持
    • 卸载删除旧版vim
    • 安装vim依赖库
    • 下载vim8源码
    • 编译安装vim8
    • vim安装完成添加环境变量
    • 查看vim是否支持python等
  • 配置vim及安装相关插件
    • VIM插件管理器Vundle安装及“YouCompleteMe”等其他插件安装
    • 为YCM补全插件编写配置文件”.ycm_extra_conf.py”
    • 相关错误提示解决方法

python3编译安装

此文章为自我总结整理备忘,文中内容非完全原创。
版本信息:Lubuntu18.04
Python3.8.1
Vim8

安装python3相关依赖库

# sudo apt-get install build-essential \ 
					   checkinstall
# sudo apt-get install libreadline-gplv2-dev \ 
					   libncursesw5-dev \ 
					   libssl-dev \ 
					   libsqlite3-dev \ 
					   tk-dev \ 
					   libgdbm-dev \ 
					   libc6-dev \ 
					   libbz2-dev \ 
					   libffi-dev

下载python3软件包

方法①手动下载压缩包解压安装

下载地址:https://www.python.org/ftp/python
python源码下载地址
下载相关版本 Python-3.8.1.tgz 压缩包(可放置任何自建文件夹)

方法②wgit下载

# wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz

解压

# tar -zxvf Python-3.6.1.tgz

编译python3源码

建立安装目录

# sudo mkdir /usr/local/python3.8

编译源码并安装

# cd Python-3.8.1
# sudo ./configure –prefix=/usr/local/python3.8
# sudo make
# sudo make install

安装完成建立python3与pip3软链接

# ln -s /usr/local/python3.8/bin/python3.8 /usr/bin/python3.8
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

将python3加入环境变量

# vim ~/.profile

粘贴以下内容

# vim ~/.profile
# .profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/python3.8/bin
export PATH

保存退出

# source ~/.profile

检查python3与pip3是否安装正常

# python3 -V
# pip3 –V

vim编译安装及添加python支持

卸载删除旧版vim

# sudo apt-get remove vim 
# sudo apt-get remove vim-runtime
# sudo apt-get remove vim -tiny
# sudo apt-get remove vim-common

安装vim依赖库

# sudo apt-get install libncurses5-dev \
				   libgnome2-dev \
				   libgnomeui-dev \
				   libgtk2.0-dev \
				   libatk1.0-dev \
				   libbonoboui2-dev \
				   libcairo2-dev \
				   libx11-dev \
				   libxpm-dev \
				   libxt-dev \
				   python-dev \
				   python3-dev \
				   ruby-dev \
				   lua5.1 \
				   liblua5.1-dev \
				   libperl-dev \
				   git

下载vim8源码

(可下载到任意自建文件夹)

# git clone https://github.com/vim/vim.git

编译安装vim8

①创建安装目录

# sudo mkdir /usr/local/vim8

②配置

# cd vim/src
# ./configure --with-features=huge \
            --enable-multibyte \
            --enable-rubyinterp=yes \
            --enable-pythoninterp=yes \
            --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
            --enable-python3interp=yes \
            --with-python3-config-dir=/usr/local/python3.8/lib/python3.8/config-3.8m-x86_64-linux-gnu \
            --enable-perlinterp=yes \
            --enable-luainterp=yes \
            --enable-gui=gtk2 \
			--enable-cscope \ 
            --prefix=/usr/local/vim8  

参数说明如下:

--with-features=huge:支持最大特性
--enable-multibyte:打开多字节支持,可以在Vim中输入中文
--enable-rubyinterp:打开对ruby编写的插件的支持
--enable-pythoninterp:打开对python编写的插件的支持
--with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu/ 指定python 路径
--enable-python3interp:打开对python3编写的插件的支持
--with-python-config-dir=/usr/local/python3.8/lib/python3.8/config-3.8m-x86_64-linux-gnu 指定python3路径
--enable-perlinterp:打开对perl编写的插件的支持
--enable-luainterp:打开对lua编写的插件的支持
--enable-gui=gtk2:vim gui设置
--enable-cscope:打开对cscope的支持
--prefix=/usr/local/vim8:指定将要安装到的路径(自行创建)

③编译安装

# make
# make install

vim安装完成添加环境变量

此处可以建软连接 ln –s
也可添加 /etc/profile source /etc/profile
还可以以下操作,类似于软链

# sudo update-alternatives --install /usr/bin/vim vim /usr/local/vim8/bin/vim 1
# sudo update-alternatives --set vim /usr/local/vim8/bin/vim

说明:
update-alternatives 命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives。

alternatives 管理方式

$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 24 1120  2017 /usr/bin/python -> /etc/alternatives/python

$ ls -l /etc/alternatives/python
lrwxrwxrwx 1 root root 18 1121  2017 /etc/alternatives/python -> /usr/bin/python2.7

python 这个可执行命令实际是一个链接,指向了 /etc/alternatives/python 。而这个也是一个链接,指向了 /usr/bin/python2.7 ,这才是最终的可执行文件。alternatives 实际上是通过软链接的方式对版本进行管理。

语法

$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>

命令:
  --install <链接> <名称> <路径> <优先级>
    [--slave <链接> <名称> <路径>] ...
                           在系统中加入一组候选项。
  --remove <名称> <路径><名称> 替换组中去除 <路径> 项。
  --remove-all <名称>      从替换系统中删除 <名称> 替换组。
  --auto <名称><名称> 的主链接切换到自动模式。
  --display <名称>         显示关于 <名称> 替换组的信息。
  --query <名称>           机器可读版的 --display <名称>.
  --list <名称>            列出 <名称> 替换组中所有的可用候选项。
  --get-selections         列出主要候选项名称以及它们的状态。
  --set-selections         从标准输入中读入候选项的状态。
  --config <名称>          列出 <名称> 替换组中的可选项,并就使用其中哪一个,征询用户的意见。
  --set <名称> <路径><路径> 设置为 <名称> 的候选项。
  --all                    对所有可选项一一调用 --config 命令。

<链接> 是指向 /etc/alternatives/<名称> 的符号链接。(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。(如 pager)
<路径> 是候选项目标文件的位置。(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
..........

查看vim是否支持python等

# vim --version 

# vim --version | grep python

"+"为支持 "-"为不支持

配置vim及安装相关插件

VIM插件管理器Vundle安装及“YouCompleteMe”等其他插件安装

Vundle的安装分新旧版本,以下为新版本安装。
①获取安装

# git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim         

②更新.vimrc配置文件

用户目录新建即可,如 ~/ 或/root/ 。
在call vundle#begin()和call vundle#end()指令之间编写需要安装的插件。

配置文件如下:


" ***************** 全局设置 ************** "
 
" 开启文件类型侦测
filetype on
" 根据侦测到的不同类型加载对应的插件
filetype plugin on
 
" 自动缩进
filetype indent on
" 开启语法高亮功能
syntax enable
" 允许用指定语法高亮配色方案替换默认方案
syntax on
set nocompatible "关闭兼容模式
set incsearch "开启实时搜索功能
set ignorecase "搜索忽略大小写
set wildmenu "vim命令自动补全
set autoread "文件自动更新
set gcr=a:block-blinkon0 "禁止关闭闪烁
set laststatus=2 "总是显示状态栏
set ruler "显示光标位置
set number "显示行号
set cursorline "高亮显示当前行
"set cursorcolumn "高亮显示当前列
set hlsearch "高亮显示搜索结果
" set nowrap "禁止折行
set backspace=2 "回退键生效
"set backspace=indent,eol,start
set novisualbell
 
" 禁止显示滚动条
set guioptions-=l
set guioptions-=L
set guioptions-=r
set guioptions-=R
" 禁止显示菜单和工具条
set guioptions-=m
set guioptions-=T
 
" 将制表符扩展为空格
set expandtab
" 设置编辑时制表符占用空格数
set tabstop=4
" 设置格式化时制表符占用空格数
set shiftwidth=4
" 让 vim 把连续数量的空格视为一个制表符
set softtabstop=4
" 基于缩进或语法进行代码折叠
set foldmethod=syntax
" 启动 vim 时关闭折叠代码
set nofoldenable

" *************** 设置全局快捷键 *****************
 
" 定义快捷键的前缀,即<Leader>
"let mapleader="\<space>"
let mapleader="'"
 
" 设置快捷键将选中文本块复制至系统剪贴板
vnoremap <Leader>y "+y
 
" 设置快捷键将系统剪贴板内容粘贴至 vim
nmap <Leader>p "+p
 
" 定义快捷键关闭当前分割窗口
nmap <Leader>q :q<CR>
" 定义快捷键保存当前窗口内容
nmap <Leader>w :w<CR>
 
" 定义快捷键保存所有窗口内容并退出 vim
"nmap <Leader>WQ :wa<CR>:q<CR>
 
" 不做任何保存,直接退出 vim
"nmap <Leader>Q :qa!<CR>
 
" 依次遍历子窗口
nnoremap nw <C-W><C-W>
" 跳转至右方的窗口
nnoremap <Leader>l <C-W>l
 
" 跳转至左方的窗口
nnoremap <Leader>h <C-W>h
" 跳转至上方的子窗口
nnoremap <Leader>k <C-W>k
 
" 跳转至下方的子窗口
nnoremap <Leader>j <C-W>j
" 定义快捷键在结对符之间跳转
nmap <Leader>M %
 
nnoremap <Leader>g <C-]>
nnoremap <Leader>b <C-t>
 
 
" ************** 插件管理与设置 ************ "
 
" vundle 环境设置
"filetype off
set rtp+=~/.vim/bundle/Vundle.vim
" vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'Lokaltog/vim-powerline' "status 美化
Plugin 'octol/vim-cpp-enhanced-highlight' "对c++语法高亮增强
Plugin 'kshenoy/vim-signature' "书签可视化的插件
Plugin 'vim-scripts/BOOKMARKS--Mark-and-Highlight-Full-Lines' "书签行高亮
Plugin 'majutsushi/tagbar' "taglist的增强版,查看标签,依赖于ctags
Plugin 'scrooloose/nerdcommenter' "多行注释,leader键+cc生成, leader+cu删除注释
Plugin 'scrooloose/nerdtree' "文件浏览
Plugin 'Valloric/YouCompleteMe' "自动补全
Plugin 'kien/ctrlp.vim' "搜索历史打开文件,在命令行模式下按ctrl+p触发
Plugin 'vim-scripts/grep.vim' "在命令行模式使用grep命令,:Grep
Plugin 'Lokaltog/vim-easymotion' "快速跳转,按两下leader键和f组合
Plugin 'vim-scripts/ShowTrailingWhitespace.git' "高亮显示行尾的多余空白字符
Plugin 'vim-scripts/indentpython.vim.git'
Plugin 'vim-scripts/Solarized.git' "主题方案
Plugin 'nathanaelkane/vim-indent-guides.git' "缩进对齐显示
"Plugin 'vim-scripts/indexer.tar.gz' "自动生成标签
"Plugin 'vim-scripts/DfrankUtil' "indexer 依赖
"Plugin 'vim-scripts/vimprj' "indexer 依赖
Plugin 'davidhalter/jedi-vim' "python 补全,不依赖于tags,但比较慢,可以使用indexer替换,但不能跳转项目外
Plugin 'vim-scripts/Markdown'
Plugin 'tpope/vim-surround'
Plugin 'ekalinin/Dockerfile.vim'
" 插件列表结束
call vundle#end()
"filetype plugin on
 
" ***************** Powerline 设置 ************** "

" 设置状态栏主题风格
let g:Powerline_colorscheme='solarized256'
 
 
 " ***************** 设置tagbar ************** "

" "设置tagbar使用的ctags的插件,必须要设置对
let g:tagbar_ctags_bin='/usr/bin/ctags'
" "设置 tagbar 子窗口的位置出现在主编辑区的左边
let g:tagbar_left=1
" " 设置显示/隐藏标签列表子窗口的快捷键。速记:identifier list by tag
nnoremap <Leader>t :TagbarToggle<CR>
" " 设置标签子窗口的宽度
let g:tagbar_width=32
" " tagbar 子窗口中不显示冗余帮助信息
let g:tagbar_compact=1
" " 设置 ctags 对哪些代码标识符生成标签
" "打开文件自动 打开tagbar
autocmd BufReadPost *.cpp,*.c,*.h,*.hpp,*.cc,*.cxx call tagbar#autoopen()
 
" ***************** signature设置 ************** "

let g:SignatureMap = {
        \ 'Leader'             :  "m",
        \ 'PlaceNextMark'      :  "m,",
        \ 'ToggleMarkAtLine'   :  "m.",
        \ 'PurgeMarksAtLine'   :  "m-",
        \ 'DeleteMark'         :  "dm",
        \ 'PurgeMarks'         :  "mda",
        \ 'PurgeMarkers'       :  "m<BS>",
        \ 'GotoNextLineAlpha'  :  "']",
        \ 'GotoPrevLineAlpha'  :  "'[",
        \ 'GotoNextSpotAlpha'  :  "`]",
        \ 'GotoPrevSpotAlpha'  :  "`[",
        \ 'GotoNextLineByPos'  :  "]'",
        \ 'GotoPrevLineByPos'  :  "['",
        \ 'GotoNextSpotByPos'  :  "mn",
        \ 'GotoPrevSpotByPos'  :  "mp",
        \ 'GotoNextMarker'     :  "[+",
        \ 'GotoPrevMarker'     :  "[-",
        \ 'GotoNextMarkerAny'  :  "]=",
        \ 'GotoPrevMarkerAny'  :  "[=",
        \ 'ListLocalMarks'     :  "ms",
        \ 'ListLocalMarkers'   :  "m?"
        \ }
 

" ***************** NERDTree设置 ************** "

" 使用 NERDTree 插件查看工程文件。设置快捷键,速记:file list
nmap <Leader>f :NERDTreeToggle<CR>
" 设置NERDTree子窗口宽度
let g:NERDTreeWinSize=32
" 设置NERDTree子窗口位置
let g:NERDTreeWinPos="right"
" 显示隐藏文件
let g:NERDTreeShowHidden=1
" NERDTree 子窗口中不显示冗余帮助信息
let g:NERDTreeMinimalUI=1
" 删除文件时自动删除文件对应 buffer
let g:NERDTreeAutoDeleteBuffer=1


" ***************** YCM 设置 ************** " 

" YCM 补全菜单配色
" 菜单
"highlight Pmenu ctermfg=2 ctermbg=3 guifg=#005f87 guibg=#EEE8D5
" 选中项
"highlight PmenuSel ctermfg=2 ctermbg=3 guifg=#AFD700 guibg=#106900
" 补全功能在注释中同样有效
let g:ycm_complete_in_comments=1
" 在字符串输入中也能补全
let g:ycm_complete_in_strings = 1
" 注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1
" 允许 vim 加载 .ycm_extra_conf.py 文件,不再提示
let g:ycm_confirm_extra_conf=0
" 开启 YCM 标签补全引擎
let g:ycm_collect_identifiers_from_tags_files=1
" 引入 C++ 标准库tags
set tags+=/data/misc/software/misc./vim/stdcpp.tags
" YCM 集成 OmniCppComplete 补全引擎,设置其快捷键
"inoremap <leader>; <C-x><C-o>
" 补全内容不以分割子窗口形式出现,只显示补全列表
set completeopt-=preview
" 从第一个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=1
" 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_cache_omnifunc=0
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax=1
let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" Python Semantic Completion
let g:ycm_python_binary_path = 'python3'
"let g:ycm_server_python_interpreter = 'python3'
" 弹出列表时选择第1项的快捷键(默认为<TAB>和<Down>)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
" 弹出列表时选择前1项的快捷键(默认为<S-TAB>和<UP>)
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
" 主动补全, 默认为<C-Space>
"let g:ycm_key_invoke_completion = ['<C-Space>']
" 停止显示补全列表(防止列表影响视野), 可以按<C-Space>重新弹出
"let g:ycm_key_list_stop_completion = ['<C-y>']

" 对指定源文件,输入两个字母后即触发语义补全
let g:ycm_semantic_triggers =  {
           \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'],
           \ 'cs,lua,javascript': ['re!\w{2}'],
           \ }

let g:ycm_filetype_whitelist = {
            \ "c":1,
            \ "cpp":1,
            \ "go":1,
            \ "python":1,
            \ "sh":1,
            \ "zsh":1,
            \ }
" 黑名单,不启用
let g:ycm_filetype_blacklist = {
          \ 'tagbar' : 1,
          \ 'gitcommit' : 1,
          \ }


" ***************** 颜色主题 设置 ************** " 

""" color settings
set t_Co=256
if has("gui_running")
    set guioptions=gR
   set mousemodel=popup
    set background=light
    ""hi LineNr cterm=bold guibg=black guifg=white
    ""hi CursorLine cterm=none ctermbg=lightgray ctermfg=none
    ""hi CursorColumn cterm=none ctermbg=lightgray ctermfg=none
else
    set background=dark
    ""hi LineNr cterm=bold ctermbg=black ctermfg=white
    ""hi CursorLine cterm=none ctermbg=darkgray ctermfg=none
    ""hi CursorColumn cterm=none ctermbg=darkgray ctermfg=none
endif
colorscheme solarized
"colorscheme default
" indent guides
"let g:indent_guides_enable_on_vim_startup=1
" 从第二层开始可视化显示缩进
let g:indent_guides_start_level=2
"let g:indent_guides_auto_colors = 0
"hi IndentGuidesOdd  guibg=red   ctermbg=3
"hi IndentGuidesEven guibg=green ctermbg=4
" 色块宽度
let g:indent_guides_guide_size=1
" 快捷键 i 开/关缩进可视化
noremap <Leader>sj :IndentGuidesToggle<CR>

" ***************** C/C++运行与调试 ************** " 

"C、C++ 的运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
    exec "w"
    if &filetype == 'c'
        exec "!gcc % -o %<"
        exec "! ./%<"
    elseif &filetype == 'cpp'
        exec "!g++ % -o %<"
        exec "! ./%<"
    elseif &filetype == 'java' 
        exec "!javac %" 
        exec "!java %<"
    elseif &filetype == 'sh'
        :!./%
    endif
endfunc

" C、C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
    exec "w"
    exec "!g++ % -g -o %<"
    exec "!gdb ./%<" 
endfunc

" ***************** 新文件标题 ************** " 

 " 新建.c,.h,.sh,.java文件,自动插入文件头
 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
 "" 定义函数SetTitle,自动插入文件头
 func SetTitle()
     "如果文件类型为.sh文件
     if &filetype == 'sh'
     call setline(1,"\#########################################################################")
     call append(line("."), "\# @File Name:    ".expand("%"))
     call append(line(".")+1, "\# @Author:         Ricsy")
     call append(line(".")+2, "\# @Email:          Ricsy45@163.com")
     call append(line(".")+3, "\# @Created Time: ".strftime("%c"))
     call append(line(".")+4, "\#########################################################################")
     call append(line(".")+5, "\#!/bin/bash")
     call append(line(".")+6, "")
     else
     call setline(1, "/*************************************************************************")
     call append(line("."), "    > @File Name:    ".expand("%"))
     call append(line(".")+1, "    > @Author:       Ricsy")
     call append(line(".")+2, "    > @Email:        Ricsy45@163.com")
     call append(line(".")+3, "    > @Created Time: ".strftime("%c"))
     call append(line(".")+4, " ************************************************************************/")
     call append(line(".")+5, "")
     endif
     if &filetype == 'cpp'
     call append(line(".")+6, "#include <iostream>")
     call append(line(".")+7, "using namespace std;")
     call append(line(".")+8, "")
     call append(line(".")+9, "int main(void){")
   	 call append(line(".")+10, "")
	 call append(line(".")+11, "    return 0;")
	 call append(line(".")+12, "}")
     endif
     if &filetype == 'c'
     call append(line(".")+6, "#include <stdio.h>")
     call append(line(".")+7, "#include <stdlib.h>")
     call append(line(".")+8, "")
     call append(line(".")+9, "int main(void){")
	 call append(line(".")+10, "")
	 call append(line(".")+11,"     return 0;")
	 call append(line(".")+12, "}")
     endif
     "    if &filetype == 'java'
     "        call append(line(".")+6,"public class ".expand("%"))
     "        call append(line(".")+7,"")
     "    endif
     "新建文件后,自动定位到文件末尾
     autocmd BufNewFile * normal G
 endfunc 

③安装插件

打开vim

# vim 

进入命令模式输入

:PluginInstall

等待插件安装,插件逐一安装,安装完毕插件名称前为”+” ,“YouCompleteMe”插件安装时间较长。

Vundle常用命令

功能命令
安装插件PluginInstall
清除插件PluginClean
查看帮助h Vundle
更新插件PluginUpdate
列出插件Plugi

为YCM补全插件编写配置文件”.ycm_extra_conf.py”

前面配置文件”.vimrc“中

let g:ycm_global_ycm_extra_conf ='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

为”.ycm_extra_conf.py”读取地址
在安装配置过程中发现我安装版本”.ycm_extra_conf.py”文件地址为:

'~/.vim/bundle/YouCompleteMe/third_party/ycmd /.ycm_extra_conf.py'

出现此种情况可以将文件利用“cp”命令拷贝至“.vimrc”配置地址,也可将”.vimrc”配置地址改为文件所在地址。

YCM自带搜索的库数目有限。如果想要补充更多的库,可以将库的路径添加到”.ycm_extra_conf.py”中的 flag 数组里,自行添加的库需要用 ‘-isystem’ 标识。
如下所示(注意后面 有逗号):

'-isystem',
'/usr/include/c++/7',
'-isystem',
'/usr/include',
'-isystem',
'/usr/lib/gcc/x86_64-linux-gnu/7/include',
'-isystem',
'/usr/include/x86_64-linux-gnu',
'-isystem',
'/usr/include/c++/7/bits',

相关错误提示解决方法

①打开vim后提示”The ycmd server SHUT DOWN (restart with :YcmRestartServer)”

# cd ~/.vim/bundle/YouCompleteMe
# ./install.py

②运行上述命令后如出现” ERROR: Unable to find executable ‘cmake’. CMake is required to build ycmd”
安装cmack

# sudo apt-get install cmake

③运行vim出现:Indexer error: Exuberant Ctags not found in PATH.……等错误
需要安装ctags,tagbar需要ctags支持

# sudo apt-get install exuberant-ctags

至此完成安装配置工作,以上集百家之长总结整理,以此备忘。

后附vim常用插件介绍的好文章
linux基础-vim插件使用
Vim常用插件说明【没有酷炫,只有接地气】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu从python3安装到vim安装配置 的相关文章

  • VMware安装虚拟机Mac版

    VMware xff1a 1 不需要分区或重开机就能再同一台PC上使用多种操作系统 2 完全隔离并且保护不同操作系统的环境以及所有软件 资料 3 不同的操作系统之间还能互动操作 4 有复原功能 5 能够设置并且随时修改操作系统的操作环境 下
  • JSON转换工具

    JSON的处理 xff1a JSON JavaScript Object Notation xff1a 是一种轻量级的数据交换格式 它是基于 ECMAScript 规范的一个子集 xff0c 采用完全独立于编程语言的文本格式来存储和表示数据
  • MacOS Apple M1 安装ARM架构的JDK及动态切换版本

    JDK下载安装 xff1a 咱就是说 xff0c ARM版本的JDK就是一个字 xff0c 真特么快 xff0c 想变快吗 xff0c 赶紧下载叭 xff01 xff01 1 下载地址 xff1a https www azul com do
  • Go_详解TCP协议三次握手四次挥手

    三次握手 xff1a 三次握手表示建立通信阶段 xff0c 在TCP协议中 xff0c 在发送数据的准备阶段 xff0c 客户端与服务器之间的三次交互 xff0c 以保证连接的可靠 xff0c 由于这种面向连接的特性 xff0c TCP协议
  • Go_常量、iota(枚举)的使用

    常量 常量是在程序运行过程中 xff0c 其值不可以发生改变的数据 xff0c 常量无法被获取地址 常量中的数据类型能是布尔型 数字型 xff08 整型 浮点型和复数型 xff09 字符串 常量的定义是通过const关键字完成的 xff0c
  • Go_反射的使用

    反射可以在运行时动态地检查变量和类型 xff0c 并且可以调用变量和类型的方法 获取和修改变量的值和类型等 使用反射可以使程序更加灵活 xff0c 但也需要谨慎使用 基于反射的代码是极其脆弱的 xff0c 反射中的类型错误会在真正运行的时候
  • 登录注册页怎么做

    app常见页面 xff1a 引导页 xff1a 概念 xff1a 第一次安装App或者更新App后第一次打开App时所展示的可以滑动的页面 作用 xff1a 主要是用于展示产品本身的一些核心功能点或者特色 启动页 xff1a 概念 xff1
  • win10安装appx工具_如何在Windows 10上安装.Appx或.AppxBundle软件

    win10安装appx工具 Microsoft s new Universal Windows Platform applications use the Appx or AppxBundle file format They re nor
  • 本地mysql数据库开启远程访问

    本地mysql数据库开启远程访问 1 开启远程访问端口 3306端口 依次点击控制面板 系统和安全 windows防火墙 高级设置 入站规则 xff1b 设置端口为3306 一直点下一步 xff1b PS xff1a 入站 xff1a 别人
  • Go_String常用操作

    字符串操作 xff1a len xff1a 统计字符串的长度 span class token keyword func span span class token function main span span class token p
  • Arrarys常用的方法

    int newArrary 61 Arrays copyOf int original int newarrary length 拷贝数组 xff0c 可定义要拷贝的长度 Array copyOf 有进行复制的功能 xff0c 而且底层是调
  • Unity2019 打包Android报错 Android NDK not found

    打包报错 xff1a UnityException Android NDK not found Android NDK not found or invalid NDK配置报错 xff1a Edit gt Preferences gt Ex
  • 安装zabbix proxy

    Centos7搭建zabbix proxy5 0 概述安装创建数据库导入数据下载包安装 编译过程中的报错 概述 Zabbix 代理可以代表 Zabbix 服务器收集性能和可用性数据 这样 xff0c 代理可以自己承担一些收集数据的负载并卸载
  • Mac localhost无法访问

    Mac localhost无法访问 localhost 8080和127 0 0 1 8080可以访问nginx的文件 xff0c 但输入localhost和127 0 0 1都打不开了
  • 生产者与消费者问题(线程同步经典案例)

    生产者 xff08 producer xff09 和消费者 xff08 consumer xff09 问题是并发处理中最常见的一类问题 xff0c 是一个多线程同步问题的经典案例 可以这样描述这个问题 xff0c 有一个或者多个生产者产生某
  • Git忽略提交规则 & .gitignore配置总结

    Git忽略提交规则 xff06 gitignore配置总结 在使用Git的过程中 xff0c 我们喜欢有的文件比如日志 xff0c 临时文件 xff0c 编译的中间文件等不要提交到代码仓库 xff0c 这时就要设置相应的忽略规则 xff0c
  • Spring之配置文件

    Spring简介 Spring是什么 Spring 自带 IoC xff08 Inverse of Control 控制反转 xff09 和 AOP Aspect Oriented Programming 面向切面编程 可以很方便地对数据库
  • Ubuntu开启SSH服务远程登录

    Ubuntu开启SSH服务远程登录 Ubuntu下开启ssh服务并能通过MobaXterm或者 Xshell进行远程登录 本人使用的是window10系统安装的MobaXterm window10系统安装MobaXterm可以参考 http
  • MongoDB

    一 MongoDB简介 1 集成简介 spring data mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb xff0c MongoRepository操作简单 xff0c Mong
  • 更改桌面壁纸_使用DeskSlide轻松更改桌面墙纸

    更改桌面壁纸 Looking to add some variety to your desktop instead of looking at the same wallpaper day in and day out Have fun

随机推荐

  • 科学素养题(2022年2月-2022年10月)

    二月科学素养 在我国山东省和山西省中间的 山 34 是 C A泰山 B吕梁山 C太行山 D沂蒙山 在一些寻宝游戏中 每个线索都会指向下一个线索的位置 玩家可以顺着这些线索一个一个找到所有的元素 这样的寻宝游戏的设计与 数据结构有着异曲同工之
  • Servlet综合练习:个人博客系统

    功能简介 1 注册新用户 2 xff09 登录已有用户 3 xff09 展示博客列表 xff08 包含文章标题以及作者信息 xff09 xff0c 点击标题就会跳转到文章详情页 4 xff09 文章详情页中 xff0c 显示文章标题 xff
  • Linux 环境搭建(如何获得一个免费云服务器)以及Linux基本指令

    搭建 Linux 环境 Linux 环境的搭建方式 主要有三种 直接安装在物理机上 但是由于 Linux 桌面使用起来非常不友好 不推荐 使用虚拟机软件 将 Linux 搭建在虚拟机上 但是由于当前的虚拟机软件 如 VMWare 之类的 存
  • 深入理解HTTP协议

    目标 xff1a 掌握 http 原理 xff0c 重点掌握 http Request amp Response 格式掌握 http 中相关重点知识 xff0c 如请求方法 xff0c 属性 xff0c 状态码等使用 java socket
  • 异常声音检测MFCC/HMM...相关

    有无研究这个方向的同学 xff0c 自己准备做这个方向 xff0c 可以相互讨论讨论 xff0c 留言我加你 xff0c 一起啊 x1f60f xff01
  • C语言goto语句简单使用

    简单介绍 C语言中提供了可以随意滥用的 goto语句和标记跳转的标号 从理论上 goto语句是没有必要的 xff0c 实践中没有goto语句也可以很容易的写出代码 但是某些场合下goto语句还是用得着的 xff0c 最常见的用法就是终止程序
  • 【网络原理】一个数据包从发送到接收在网络中经历了那些过程(详细分析)

    一个数据包从发送到接收在网络中经历了那些过程 假设学生给老师发送电子邮件 xff0c 内容为 xff1a 老师您好 xff01 从计算机A向另一台计算机B发送电子邮件 xff0c 站在网络原理的角度来分析整个过程 启动应用程序新建邮件 xf
  • 【贪心算法】leetcode402.移掉K位数字

    题目描述 xff08 传送门 xff09 给定一个以字符串表示的非负整数 num xff0c 移除这个数中的 k 位数字 xff0c 使得剩下的数字最小 注意 num 的长度小于 10002 且 k num 不会包含任何前导零 示例 1 输
  • 【Java项目实战】在线音乐播放器(从需求到产品完整解析)

    准备工作必看 xff1a Java项目实战 在线音乐播放器 xff08 前期准备 xff09 核心功能 登录 注册上传音乐删除某一个音乐信息删除选中的音乐信息查询音乐 包含查找指定 模糊匹配的音乐 添加音乐到 喜欢列表 查询喜欢的音乐 包含
  • MATLAB柱状图(数据可视化)

    示例 A 61 60 689 87 714 143 1 267 9515 C 61 127 5 160 4 231 9 400 2 B 61 C A D 61 A B C bar1 61 bar 2 5 17 A 39 BarWidth 3
  • ubuntu安装lxde_如何在Ubuntu上安装轻量级LXDE桌面

    ubuntu安装lxde LXDE is a lightweight desktop alternative to Unity GNOME and KDE It s ideal for old computers or anyone loo
  • 【leecode每日一题】636. 函数的独占时间

    题目描述 xff08 链接 xff09 有一个 单线程 CPU 正在运行一个含有 n 道函数的程序 每道函数都有一个位于 0 和 n 1 之间的唯一标识符 函数调用 存储在一个 调用栈 上 xff1a 当一个函数调用开始时 xff0c 它的
  • 【正则表达式】一、常见符号含义

    正则表达式入门 常见字符含义 常见字符含义 ABC 匹配目标字符串中 内的字符 span class token keyword import span re span class token keyword if span name sp
  • Java中文件相对路径和绝对路径的用法(IO同样适用),系统找不到指定文件的解决办法讲解

    引入场景 xff1a 在我们日常开发中 xff0c 经常需要去读取文件的内容 xff0c 但经常出现文件未发现的问题 xff0c 如下图 xff1a 出现这个问题的原因就有二个 xff0c 第一是文件真的不存在 xff0c 第二就是文件明明
  • Java中的Collections类[80]

    Java中的Collections类 80 文章目录 Java中的Collections类 80 前言一 Collections基础使用二 查找与替换三 同步控制 线程安全 四 设置不可变集合五 其他方法六 小结 前言 本章将继续使用代码加
  • Ubuntu20.04修复Chrome提示缺少依赖项问题

    这两天正好需要用服务器跑一个脚本需要用到chrome xff0c 本打算在服务器上安装chrome xff0c 从官方那边下载完deb包 xff0c 安装的时候报了这个错 xff1a dpkg error processing packag
  • 【MySQL】MySQL进阶之路(六)MySQL三大日志(binlog、redo log和undo log)详解

    写在前面的话 脑子是个好东西 xff0c 可惜的是一直没有搞懂脑子的内存删除机制是什么 xff0c 所以啊 xff0c 入行多年 xff0c 零零散散的文章看了无数 xff0c 却总是学习了很多也忘了很多 痛定思痛的我决定从今天开始系统的梳
  • 《Spring》——Spring配置

    5 Spring配置 5 1 别名 xff1a span class token operator lt span span class token operator span span class token operator span
  • 解决VNC鼠标点击不反应问题

    1 xff09 查看连接的VNC进程 xff1b 2 xff09 杀掉VNC进程 3 xff09 重启VNC进程 上文4461是 xff1a 1的进程的编号 xff0c 这里要注意一下 xff1b 然后重启 xff1a 1进程就能解决问题
  • Ubuntu从python3安装到vim安装配置

    文章目录 python3编译安装安装python3相关依赖库下载python3软件包编译python3源码安装完成建立python3与pip3软链接将python3加入环境变量检查python3与pip3是否安装正常 vim编译安装及添加p