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) 编辑 收藏 举报