WSL2使用入门和C++刷题环境配置(Ubuntu)

1,234 阅读3分钟

WSL2使用(Ubuntu)

相关视频bilibili

使用windows代理

运行cat /etc/resolv.conf

根据dns的ip来配置export ALL_PROXY="http://ip:7890"

配置脚本vpn.sh

#!/bin/bash
host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export ALL_PROXY="http://$host_ip:7890"

source 运行该脚本即可

安装zsh美化

安装zshsudo apt install zsh

  1. 将zsh的代码clon下来:git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
  2. 复制.zshrc:cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
  3. 更改默认shell:chsh -s /bin/zsh

打开~/.zshrc,找到ZSH_THEME="",将引号中的改成想要的主题,推荐jonathan

然后source .zshrc即可

安装python和nodejs

更新nodejs

sudo npm install n -g
sudo n stable

vim的基本配置

创建文件夹vimflies:mkdir .vimflies

进入vimfiles,创建文件夹undofile和backupfile

用vim打开.vimrc

基本配置

" -------设置

" 行号显示与相对行号
set nu
set relativenumber
" tab缩进大小为4格
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set smartindent
set termguicolors
" 光标设置
set guicursor=i:hor100-iCursor
" 高亮本行
set cursorline
" 撤销文件和备份文件的保存位置
set undodir=~/.vimfiles/undofile
set backupdir=~/.vimfiles/backupfile
" 粘贴模式的开关快捷键
map <M-p> :set paste<CR>
map <M-S-p> :set nopaste<CR>
" 设置换行的宽度
set nowrap
map <M-w> :set wrap<CR>
map <M-S-w> :set nowrap<CR>

" 菜单乱码问题
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

安装插件

打开github.com/junegunn/vi…

运行

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

打开.vimrc

将这些粘贴到最后

call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'mhinz/vim-startify'
Plug 'Yggdroot/indentLine'
Plug 'preservim/nerdtree'
Plug 'crusoexia/vim-monokai'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

保存过后运行PlugInstall

coc.nvim配置c++补全

依次运行

sudo npm install -g yarn
cd ~/.vim/plugged/coc.nvim/	
yarn install
yarn build

安装clangd

sudo dnf install snapd
sudo ln -s /var/lib/snapd/snap /snap
sudo snap install clangd --classic

打开vim,运行:

:CocInstall coc-clangd

我的配置文件

"====================================
"===  Basic setting for vim use   ===
"====================================

" 行号显示与相对行号
set nu
set relativenumber
" tab缩进大小为4格
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoindent
set smartindent
set termguicolors
" 高亮本行
set cursorline
" 粘贴模式的开关快捷键
map <M-p> :set paste<CR>
map <M-S-p> :set nopaste<CR>
" 设置换行的宽度
set nowrap
map <M-w> :set wrap<CR>
map <M-S-w> :set nowrap<CR>
" 撤销文件和备份文件的保存位置
set undodir=~/.vimfiles/undofile
set backupdir=~/.vimfiles/backupfile
" 光标设置
let &t_SI.="\e[5 q"
let &t_SR.="\e[3 q"
let &t_EI.="\e[1 q"
autocmd VimEnter * silent !echo -ne "\e[1 q"
autocmd VimLeave * silent !echo -ne "\e[5 q"
" 输入命令时Tab显示
set wildmenu
" insert模式下的移动
imap <C-l> <Right>
" leader
let mapleader = "\<space>"
" acm
source ~/.vimfiles/vimrcs/acm.vim
" 一键编译c++
map  <F5>  :w<CR>:call Run()<CR>
imap <F5>  <ESC>:w<CR>:call Run()<CR>
func! Run()
        if expand("%:e") == "c" || expand("%:e") == "cc" || expand("%:e") == "cxx" || expand("%:e") == "cpp"
        echo " compiling..."
        :! g++ "%" -o "%<" -Wall -std=c++20 && "./%<"
        redraw!
        echohl WarningMsg | echo " Running finish! :-)"
        endif
endfunction
" 配色
colo desert
hi Normal guibg=NONE ctermbg=NONE
hi EndOfBuffer guibg=NONE ctermbg=NONE

"====================================
"=== Plug config ====================
"====================================
" ---------mhinz/vim-startify--------
let g:startify_custom_header = [
                        \ ' █████╗  ██████╗███╗   ███╗███████╗██████╗ ',
                        \ '██╔══██╗██╔════╝████╗ ████║██╔════╝██╔══██╗',
                        \ '███████║██║     ██╔████╔██║█████╗  ██████╔╝',
                        \ '██╔══██║██║     ██║╚██╔╝██║██╔══╝  ██╔══██╗',
                        \ '██║  ██║╚██████╗██║ ╚═╝ ██║███████╗██║  ██║',
                        \ '╚═╝  ╚═╝ ╚═════╝╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝',
            \]
let g:startify_custom_footer = [
            \ '+------------------------------+',
            \ '|     Keep an open mind!       |',
            \ '+----------------+-------------+',
            \]
let g:startify_files_number = 5
let g:startify_custom_indices = map(range(1,100), 'string(v:val)')

" ---------vim-airline/vim-airline-themes--------
"set ambiwidth=double                    " 设置为双字宽显示,否则无法完整显示如:☆
let g:airline_theme='bubblegum'         "Airline主题
let g:airline_powerline_fonts = 1
" 开启tabline
let g:airline#extensions#tabline#enabled = 1      "tabline中当前buffer两端的分隔字符
let g:airline#extensions#tabline#left_sep = ' '   "tabline中未激活buffer两端的分隔字符
let g:airline#extensions#tabline#left_alt_sep = '|'      "tabline中buffer显示编号
let g:airline#extensions#tabline#buffer_nr_show = 1
" 映射切换buffer的键位
nnoremap [b :bp<CR>
nnoremap ]b :bn<CR>

" ---------octol/vim-cpp-enhanced-highlight--------
let g:cpp_class_scope_highlight = 1
let g:cpp_member_variable_highlight = 1
let g:cpp_class_decl_highlight = 1
let g:cpp_experimental_simple_template_highlight = 1
let g:cpp_experimental_template_highlight = 1
let g:cpp_concepts_highlight = 1

" ---------neoclide/coc.nvim--------
set pumheight=10
set updatetime=100
set signcolumn=no
inoremap <silent><expr> <TAB>
      \ coc#pum#visible() ? coc#pum#next(1) :
      \ CheckBackspace() ? "\<Tab>" :
      \ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"

inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
                              \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

function! CheckBackspace() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
autocmd CursorHold * silent call CocActionAsync('highlight')

call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'mhinz/vim-startify'
Plug 'Yggdroot/indentLine'
Plug 'preservim/nerdtree'
Plug 'crusoexia/vim-monokai'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'Raimondi/delimitMate'
call plug#end()