linux/WSL2初始开发环境配置(Ubuntu)

一:切换软件库为中科大源,避免国内下载速度过慢的问题(此指令可自动识别版本,选择正确的版本源)

sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update

二:修改host文件避免DNS污染,防止无法访问github,避免curl,git clone的时候443。

(wsl2并不能和windows共用一个代理,wsl2网络相当于直接访问上级路由器而非你的电脑,所以即使你的电脑开了代理,对wsl2也不产生影响)
感谢GitHub520项目提供的实时更新的host表,并提供了简易配置脚本

sudo chmod 666 /etc/hosts
sudo sed -i "/# GitHub520 Host Start/Q" /etc/hosts && curl https://raw.hellogithub.com/hosts >> /etc/hosts

tips:每次开机wsl2里的host文件都会被清空,所以每次开机都需要输入这个指令。

三:安装常用软件

sudo apt install gcc make cmake autoconf automake  pkg-config  neovim net-tools

四:在目录 ~/ 下创建分类目录(可以按照自己的喜好来分类管理,不一定按照我的)

  • opensrc
  • download
  • projects
  • application
  • tmp
  • sh
  • cc
  • media
  • document
  • collection
  • .hide

五:配置git

git config --global user.name [github name]
git config --global user.email [github email]

六:配置文本编辑器neo-vim(vim以后你别在联系我了,我怕neo-vim误会)

第三步咱们已经安装了neo-vim,为了让其更加强大,我们需要为其安装插件,没有缤纷的插件就像vscode没装插件没有灵魂一样。
但是插件数量极多,为了方便管理插件,我们需要先安装插件管理器,可以方便的安装卸载其他插件。

  • 插件名字叫做 vim-plug,输入以下指令即可安装
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

注意:这里下载的vim-plug是适配neo-vim的,使用vim的同学不要搞错了哟!

有了插件管理器,安装插件就容易一些了,我们配置一下~/.config/nvim/init.vim这个文件 (vim的配置文件是 ~/.vimrc 这个文件)

nvim ~/.config/nvim/init.vim   //开始编辑vim-plug插件管理指令

内容如下,这是我的习惯,并没有什么非常个性化的选项,我觉得刚使用的新手也能适应。并且我没有使用那些过于复杂的插件

call plug#begin()
        Plug 'preservim/nerdtree'
        Plug 'yegappan/taglist'
        Plug 'vim-airline/vim-airline'
        Plug 'vim-airline/vim-airline-themes'
        Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
        Plug 'skywind3000/vim-dict'
        Plug 'skywind3000/vim-auto-popmenu'
        Plug 'ayuanx/vim-mark-standalone'
call plug#end()


"---------------------------nerd tree设置--------------------------"
" Start NERDTree and put the cursor back in the other window.
autocmd VimEnter * NERDTree | wincmd p
" Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
    \ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
" Open the existing NERDTree on each new tab.
autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif

nnoremap nd :NERDTree<CR>"按下nd即可打开目录"
"---------------------------nerdtree 设置---------------------------"


"---------------------------taglist设置--------------------------"
let Tlist_Auto_Open = 0  "默认一开始不打开"
let Tlist_Exit_OnlyWindow = 1  "只剩taglist一个窗口的时候,自动退出"
let Tlist_Use_Right_Window = 1 "显示在左边"
let Tlist_File_Fold_Auto_Close = 1 "多文件的话自动折叠"
nnoremap <silent> <F8> :TlistToggle<CR>
"---------------------------taglist设置---------------------------"


"---------------------------airline设置---------------------------"
"let laststatus = 2
"let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1 "打开arline"
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
nmap <tab> :bn<cr> "设置tab键映射为切换窗口"
"---------------------------airline设置---------------------------"

"---------------------------fzf设置---------------------------"
nnoremap fzf :FZF<CR> "按下fzf打开文件搜索窗口"
"---------------------------fzf设置---------------------------"


"---------------------------dic补全设置---------------------------"
" enable this plugin for filetypes, '*' for all files.
let g:apc_enable_ft = {'*':1,'text':1, 'markdown':1, 'php':1}
" source for dictionary, current or other loaded buffers, see ':help cpt'
set cpt=.,k,w,b
" don't select the first item.
set completeopt=menu,menuone,noselect
" suppress annoy messages.
set shortmess+=c
"---------------------------dic补全设置---------------------------"


"---------------------------光标下划线设置---------------------------"
set cursorline
:hi CursorLine term=bold cterm=bold ctermbg=237
"---------------------------光标下划线设置---------------------------"


"---------------------------打开文件返回上次浏览的位置---------------------------"
if has("autocmd")
            au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
"---------------------------打开文件返回上次浏览的位置---------------------------"

关闭文件,使用nvim打开任意文件输入

nvim [随便一个文件]
:PlugInstall

这里就会把所有插件自动安装好
需要注意的是:即使修改了host国内访问Github也很不稳定,因为运营商一旦检测到请求量过高,就会给你拒绝掉一些
所以这个步骤可能要进行很多次,直到将所有插件安装完成。我反正是花了一个小时,试了好多好多次,
我下载的时候注释掉部分,每次只下载一个插件,尝试好多次终于下载完了。

插件依赖 :上面的taglist插件依赖于ctags,airline插件会出现乱码,需要安装字体。

所以我们还需要安装下面两个东西
安装ctags

    cd download
    git clone https://github.com/universal-ctags/ctags.git
    cd ctags
    ./autogen.sh
    ./configure --prefix=/where/you/want # defaults to /usr/local
    make
    sudo make install # may require extra privileges depending on where to install

安装字体,不然ariline会有一些乱码。(对于linux是确实能起作用的)

sudo apt-get install fonts-powerline

测试后发现,wsl安装字体不起作用,因为wsl窗口显示的字体是windows的字体
所以应该是windows安装powerline字体,而不是wsl安装字体。
(如果懒得安装字体,右键顶部窗口,选择属性,字体栏选择Consolas,可修复部分乱码)

走到这一步,我们终于是完成了基本的配置。。在后续开发中应该会,方便不少。
真的太难了!😭
配置好的样子大概是如图所示

搜索插件长如下这个样子

七:尾声

到这里,就算是终于配置好了,这里简单介绍一下每个插件是干嘛的。

  • NERDTree//目录树,有了目录查看文件方便很多,必备的插件
  • FZF//快速查找文件,支持模糊查找
  • taglist//显示函数列表,可快速跳转到函数或者变量
  • vim-airline//非常优雅美观的标签,状态栏(安装这个时候我真的被这个颜值惊到了)
  • vim-auto-popmenu//轻量级补全,性能和安装难度都介于vim原生补全和youcompleteme之间
  • marks-standalone//高亮插件,mark插件原作者推荐下载这个,这个版本不用下载依赖

被安装难度劝退的插件,这两个都是很牛的补全软件,我觉得太不轻量了,一个依赖于nodejs,一个依赖于python,不好意思我玩不起。

  • youcompleteme,coc(尝试了一下我装nm呢😥,我tm直接用vscdoe不行?)

到现在终于可以安装完了,但是不要觉得安装完了就能起飞了!

首先你需要学会vim的基本使用!(本人用了半年,还算比较熟练基本操作,高级操作我也不会,学到后面我发现vim居然是vimscript😭)
以及各个插件的使用!每个插件都有自己的快捷键,我们需要将其记住,所以罗列一下这些插件的快捷键!
vim基本操作技巧,及扩展插件操作技巧


使用vim也有个半年了,期间用公司的云服务器无法访问github,使用vim的体验可想而知,一度想砸电脑。。
vim的特性就是开放包容,高度自定义,你给我把网断了,还给我说只能用vim,我开发nm呢😅
并且我现在完全反对,高手程序员就要vim这个说弱智说法,我觉得编程发展到现在,这么多日新月异的新技术,不看文档编程几乎是痴人说梦。
你说vim可以不摸鼠标手不离键盘,高效的思考,我问你你是linus吗?你能不看任何文档,不参考任何人的代码,就完全自己写代码吗,啊?
习惯用vim的多半是编程高手这句话没毛病,我觉得这是因为几十年前,大家只有vim可用,并且那时候的程序员做的工作都是非常底层的工作,
开发的都是高难度的玩意儿,这群程序员活到那不就成了我们眼里大神了吗?而这些大神vim用了几十年,早就用vim如同手脚了,不用其他图形编辑器那不是很正常嘛!
所以,你用vim!=你是编程高手🙂

posted on 2022-05-22 15:02  EasternCabbage  阅读(351)  评论(0编辑  收藏  举报

导航