zl程序教程

您现在的位置是:首页 >  后端

当前栏目

TaoBeier 的 Vim 配置,支持 Python、Javascript、Golang 等

2023-09-11 14:16:11 时间

这是 TaoBeier 精心打造的 Vim 环境配置,支持 Python、Javascript、Vue.js、Golang 和 Markdown。

你需要一个有 Python 支持的 Vim 版本。请使用 vim --version | grep +python 来检查确认。

Debian/Ubuntu 平台


sudo apt-get install python vim exuberant-ctags git sudo pip install dbgp pep8 flake8 pyflakes isort

RedHat/CentOS 平台

CentOS 6.7 的 yum 源自带的 Python 版本较旧,推荐自行安装 Python2.7。


sudo yum install python vim ctags git sudo pip install dbgp pep8 flake8 pyflakes isort

Mac OS 平台


brew install python vim git wget http://tenet.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz tar -zxvf ctags-5.8.tar.gz cd ctags-5.8 ./configure make sudo make install sudo pip install dbgp pep8 flake8 pyflakes isort 下载 vimrc 文件到用户主目录

wget https://raw.githubusercontent.com/tao12345666333/vim/master/vimrc -O $HOME/.vimrc

打开 Vim,它将会自动安装插件。请耐心等待它完成。或者你可以使用下面的命令来自行安装。


vim -E -u $HOME/.vimrc +qall

享受你的 Vim 并个性化它吧!

插件管理(Vundle)

在这份配置中,使用了 Vundle 作为插件管理器。Vundle 会自动接管 .vim 文件夹,所有配置好的插件将默认下载至~/.vim/bundle/, 在使用之前请确保.vim文件夹干净。 Vundle 的插件安装需要触发 git clone 操作,搜索需要 curl 支持。

配置(截取了部分)


" let Vundle manage Vundle Plugin gmarik/vundle " ============================================================================ " Active plugins " You can disable or add new ones here: " Plugins from github repos: " Better file browser Plugin scrooloose/nerdtree " Code commenter Plugin scrooloose/nerdcommenter " Class/module browser Plugin majutsushi/tagbar " Code and files fuzzy finder Plugin kien/ctrlp.vim " Extension to ctrlp, for fuzzy command finder Plugin fisadev/vim-ctrlp-cmdpalette " Zen coding Plugin mattn/emmet-vim " Git integration Plugin motemen/git-vim " Tab list panel Plugin kien/tabman.vim

支持操作


工程文件浏览(NERDTree)

在这份配置中, 使用了 NERDTree 查看文件列表。你可以在 NERDTree 中浏览和打开你文件系统中的目录或文件。还可以进行文件隐藏和过滤,设置添加书签等。在 NERDTree 窗口输入?可获得操作指南。这份配置中默认过滤掉了 .pyc、.git、.hg、 .svn等文件或文件夹的显示。

配置


" auto open or close NERDTree autocmd vimenter * if !argc() | NERDTree | endif autocmd bufenter * if (winnr("$") == 1 exists("b:NERDTreeType") b:NERDTreeType == "primary") | q | endif " NERDTree ----------------------------- " toggle nerdtree display map F3 :NERDTreeToggle CR " open nerdtree with the current file selected nmap ,t :NERDTreeFind CR " don;t show these file types let NERDTreeIgnore = [\.pyc$, \.pyo$]

支持操作


语法检查(Syntastic)

在这份配置中,使用 Syntastic 插件进行语法静态检查. 包括但不限于C/C++/Go/Python/Haskell/Ruby/JavaScript等 。在本配置中对 JavaScript 的静态检查使用eslint,可以支持 ES6 及 JSX 等,细节可以参考 JSLint, JSHint 和 ESLint 的对比及 Vim 配置,想要切换检查工具只要修改对应位置即可。

配置


" Syntastic ------------------------------ " show list of errors and warnings on the current file nmap leader e :Errors CR " turn to next or previous errors, after open errors list nmap leader n :lnext CR nmap leader p :lprevious CR " check also when just opened the file let g:syntastic_check_on_open = 1 " syntastic checker for javascript. " eslint is the only tool support JSX. " If you dont need write JSX, you can use jshint. " And eslint is slow, but not a hindrance " let g:syntastic_javascript_checkers = [jshint] let g:syntastic_javascript_checkers = [eslint] " dont put icons on the sign column (it hides the vcs status icons of signify) let g:syntastic_enable_signs = 0 " custom icons (enable them if you use a patched font, and enable the previous " setting) let g:syntastic_error_symbol = let g:syntastic_warning_symbol = let g:syntastic_style_error_symbol = let g:syntastic_style_warning_symbol =

特性

保存时自动进行语法静态检查,方便的错误提示及灵活的可扩展性。

支持操作


Git 支持(vim-fugitive 和 vim-signify)

在这份配置中,使用 vim-fugitive 和 vim-signify 做 Git 方面的支持。可以进行常用的 Git 操作及优雅的状态提示等(目前支持git和hg)。

配置


" Signify ------------------------------ " this first setting decides in which order try to guess your current vcs " UPDATE it to reflect your preferences, it will speed up opening files let g:signify_vcs_list = [ git, hg ] " mappings to jump to changed blocks nmap leader sn plug (signify-next-hunk) nmap leader sp plug (signify-prev-hunk) " nicer colors highlight DiffAdd cterm=bold ctermbg=none ctermfg=119 highlight DiffDelete cterm=bold ctermbg=none ctermfg=167 highlight DiffChange cterm=bold ctermbg=none ctermfg=227 highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119 highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167 highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227

支持操作


超全自动补全(Neocomplcache)

在这份配置中, 使用了 Neocomplcache 作为主要的自动补全插件。

配置


" NeoComplCache ------------------------------ " most of them not documented because Im not sure how they work " (docs arent good, had to do a lot of trial and error to make " it play nice) " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 let g:neocomplcache_enable_ignore_case = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 let g:neocomplcache_enable_auto_select = 1 let g:neocomplcache_enable_fuzzy_completion = 1 let g:neocomplcache_enable_camel_case_completion = 1 let g:neocomplcache_enable_underbar_completion = 1 let g:neocomplcache_fuzzy_completion_start_length = 1 let g:neocomplcache_auto_completion_start_length = 1 let g:neocomplcache_manual_completion_start_length = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_keyword_length = 1 let g:neocomplcache_min_syntax_length = 1 let g:neocomplcache_lock_buffer_name_pattern = \*ku\* " complete with workds from any opened file let g:neocomplcache_same_filetype_lists = {} let g:neocomplcache_same_filetype_lists._ = _ " TAB : completion. inoremap expr TAB pumvisible() ? "\ C-n " : "\ TAB " " Define keyword. if !exists(g:neocomplcache_keyword_patterns) let g:neocomplcache_keyword_patterns = {} endif let g:neocomplcache_keyword_patterns[default] = \h\w* " Plugin key-mappings. inoremap expr C-g neocomplcache#undo_completion() inoremap expr C-l neocomplcache#complete_common_string() " C-h , BS : close popup and delete backword char. inoremap expr C-h neocomplcache#smart_close_popup()."\ C-h " inoremap expr BS neocomplcache#smart_close_popup()."\ C-h " inoremap expr C-y neocomplcache#close_popup() inoremap expr C-e neocomplcache#cancel_popup()

支持操作


类 Tmux 的窗口选择(vim-choosewin)

在这份配置中,使用了 vim-choosewin 进行窗口管理器。支持类 Tmux 的操作。

配置


" Window Chooser ------------------------------ " mapping nmap - Plug (choosewin) " show big letters let g:choosewin_overlay_enable = 1

支持操作


更多操作可以使用 :help choosewin。

灵活的 Tab 管理(TabMan)

在这份配置中使用了 TabMan 进行 Tab 管理,可以进行灵活切换与管理。

配置


" TabMan ------------------------------ " mappings to toggle display, and to focus on it let g:tabman_toggle = tl let g:tabman_focus = tf

支持操作


优雅的状态栏(Airline)

在这份配置中,使用了 Airline 提供更多状态栏支持。

配置


" Airline ------------------------------ let g:airline_powerline_fonts = 1 let g:airline_theme = bubblegum "let g:airline#extensions#tabline#enabled = 1 "let g:airline#extensions#tabline#left_sep = "let g:airline#extensions#tabline#left_alt_sep = | let g:airline#extensions#whitespace#enabled = 1 " to use fancy symbols for airline, uncomment the following lines and use a " patched font (more info on the README.rst) if !exists(g:airline_symbols) let g:airline_symbols = {} endif let g:airline_left_sep =  let g:airline_left_alt_sep =  let g:airline_right_sep =  let g:airline_right_alt_sep =  let g:airline_symbols.branch =  let g:airline_symbols.readonly =  let g:airline_symbols.linenr = 

支持特性

可以显示分支,语法静态检查结果等。

自动插入头部

在这份配置中写了个小函数根据新建的不同类型的文件,自动插入头部,支持python、ruby、 bash等。

Markdown 实时预览(vim-instant-markdown 和 vim-markdown)

在这份配置中,使用了 vim-instant-markdown 和 vim-markdown 做 Markdown 格式的支持,可以支持实时预览等特性。

此功能需要有 node 环境支持,可以执行 npm -g install instant-markdown-d 进行安装。

配置


" Vim-markdown ------------------------------ " Disabled automatically folding let g:vim_markdown_folding_disabled=1 " LeTeX math let g:vim_markdown_math=1 " Highlight YAML frontmatter let g:vim_markdown_frontmatter=1 " Vim-instant-markdown ----------------- " If it takes your system too much, you can specify " let g:instant_markdown_slow = 1 " if you dont want to manually control it " you can open this setting " and when you open this, you can manually trigger preview " via the command :InstantMarkdownPreview let g:instant_markdown_autostart = 0

支持操作


多游标选择、编辑等

在这份配置中,可以在高亮某单词时,通过使用 Ctrl-n 或者 Ctrl-p 进行多游标选择,然后进行编辑或修改等操作。

快速文件查找

在这份配置中,可以通过使用,R进行全文查找或者,r进行快速查找,或者在当前字符串上使用,wR以及,wr来进行全文查找或者快速查找。

使用 NERDCommenter 插件完成快速注释,可以通过\ci进行快速注释。

Python 支持

完备的 Python 支持,可以自动识别当前是系统环境或虚拟环境,使用:Isort可智能对导入包进行排序,使用:PymodeLintAuto可自动格式化。

原文发布时间为:2017-01-08

本文来自云栖社区合作伙伴“Linux中国”


MoE 系列(二)|Golang 扩展从 Envoy 接收配置 上一篇我们用一个简单的示例,体验了用 Golang 扩展 Envoy 的极速上手。这次我们再通过一个示例,来体验 Golang 扩展的一个强大的特性:从 Envoy 接收配置。
知识分享之Golang——Gin学习之404、500常用错误配置 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
VSCode配置Golang单元测试实例 说到代码的健壮性,单元测试是少不了的,基本上所有语言都有自己的单元测试方案。工作这么多年,单元测试也没少写,像 Java、C++、Golang 都有过恶补单元测试的经历,为的就是应付各种 KPI,但是也不能说单元测试没有用,只是原始动力不是为了单元测试而单元测试,而是为了应付检查而单元测试。今天呢,就来说一说 Golang 语言的单元测试(这次真的是我自己主动要加的^_^)。