./install.sh

  • 带 C# 语义支持的版本

cd ~/.vim/bundle/YouCompleteMe

./install.sh --omnisharp-completer

  • 带 Go 语言语义支持的版本

cd ~/.vim/bundle/YouCompleteMe

./install.sh --gocode-completer

配置 YCM


在.vimrc中添加配置

" 自动补全配置

set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)

autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口

inoremap pumvisible() ? “<C-y>” : “<CR>” "回车即选中当前项

"上下左右键的行为 会显示其他信息

inoremap pumvisible() ? “<C-n>” : “<Down>”

inoremap pumvisible() ? “<C-p>” : “<Up>”

inoremap pumvisible() ? “<PageDown><C-p><C-n>” : “<PageDown>”

inoremap pumvisible() ? “<PageUp><C-p><C-n>” : “<PageUp>”

"youcompleteme 默认tab s-tab 和自动补全冲突

"let g:ycm_key_list_select_completion=[‘’]

let g:ycm_key_list_select_completion = [‘’]

"let g:ycm_key_list_previous_completion=[‘’]

let g:ycm_key_list_previous_completion = [‘’]

let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示

let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎

let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项

let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项

let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全

nnoremap :YcmForceCompileAndDiagnostics "force recomile with syntastic

"nnoremap lo :lopen "open locationlist

"nnoremap lc :lclose "close locationlist

inoremap

"在注释输入中也能补全

let g:ycm_complete_in_comments = 1

"在字符串输入中也能补全

let g:ycm_complete_in_strings = 1

"注释和字符串中的文字也会被收入补全

let g:ycm_collect_identifiers_from_comments_and_strings = 0

nnoremap jd :YcmCompleter GoToDefinitionElseDeclaration " 跳转到定义处

ctags

=====

用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等

Install Ctags


brew update

brew install ctags-exuberant

Config ctags


vi ~/.profile

add

export PATH=“/usr/local/bin:/usr/local/sbin:$PATH”

source ~/.profile

Use ctags


ctags --help

ctags --version

ctags –R *

  • -R表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录

  • *表示所有文件

  • 这条命令会在当前目录下产生一个tags文件,当用户在当前目录中运行vi/vim时,会自动载入此tags文件

taglist

=======

taglist是一个用于显示定位程序中各种符号的插件,例如宏定义、变量名、结构名、函数名这些东西 我们将其称之为符号(symbols),而在taglist中将其称之为tag。显然,要想将程序文件中的tag显示出来,需要事先了解全部tag的信 息,并将其保存在一个文件中,然后去解析对应的tag文件。taglist做的仅仅是将tag文件中的内容解析完后显示在Vim上而已。tag扫描以及数 据文件的生成则是由ctags(Exuberant Ctags)这一工具完成的,所以在使用taglist之前,你的电脑需要装有ctags。

Bundle ‘taglist.vim’

let Tlist_Ctags_Cmd=‘ctags’

let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的

let Tlist_WinWidt =28 "设置taglist的宽度

let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim

"let Tlist_Use_Right_Window=1 "在右侧窗口中显示taglist窗口

let Tlist_Use_Left_Windo =1 "在左侧窗口中显示taglist窗口

快捷键

跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样

o 在一个新打开的窗口中显示光标下tag

显示光标下tag的原型定义

u 更新taglist窗口中的tag

s 更改排序方式,在按名字排序和按出现顺序排序间切换

x taglist窗口放大和缩小,方便查看较长的tag

打开一个折叠,同zo

将tag折叠起来,同zc

打开所有的折叠,同zR

= 将所有tag折叠起来,同zM

[[ 跳到前一个文件

]] 跳到后一个文件

q 关闭taglist窗口

NERDTree

========

NERDTree是一个用于浏览文件系统的树形资源管理

它可以让你像使用finder一样在VIM中浏览文件系统并且打开文件或目录

" NERDTree

Bundle ‘scrooloose/nerdtree’

配置

let NERDTreeWinPos=‘right’

let NERDTreeWinSize=30

map :NERDTreeToggle

额外插件推荐

======

" original repos on github

Bundle ‘kien/ctrlp.vim’

Bundle ‘sukima/xmledit’

Bundle ‘sjl/gundo.vim’

Bundle ‘jiangmiao/auto-pairs’

Bundle ‘klen/python-mode’

Bundle ‘Valloric/ListToggle’

Bundle ‘SirVer/ultisnips’

Bundle ‘Valloric/YouCompleteMe’

Bundle ‘scrooloose/syntastic’

Bundle ‘t9md/vim-quickhl’

" Bundle ‘Lokaltog/vim-powerline’

Bundle ‘scrooloose/nerdcommenter’

"…

" vim-scripts repos

Bundle ‘YankRing.vim’

Bundle ‘vcscommand.vim’

Bundle ‘ShowPairs’

Bundle ‘SudoEdit.vim’

Bundle ‘EasyGrep’

Bundle ‘VOoM’

Bundle ‘VimIM’

作者:泛原罪

链接:http://www.jianshu.com/p/58e2d78744a2

來源:简书

[

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

总结

三套“算法宝典”

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

28天读完349页,这份阿里面试通关手册,助我闯进字节跳动

算法刷题LeetCode中文版(为例)

人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。

最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

由于篇幅有限,下篇的面试技术攻克篇只能够展示出部分的面试题,详细完整版以及答案解析,有需要的可以关注

总结

三套“算法宝典”

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

28天读完349页,这份阿里面试通关手册,助我闯进字节跳动

算法刷题LeetCode中文版(为例)

人与人存在很大的不同,我们都拥有各自的目标,在一线城市漂泊的我偶尔也会羡慕在老家踏踏实实开开心心养老的人,但是我深刻知道自己想要的是一年比一年有进步。

最后,我想说的是,无论你现在什么年龄,位于什么城市,拥有什么背景或学历,跟你比较的人永远都是你自己,所以明年的你看看与今年的你是否有差距,不想做咸鱼的人,只能用尽全力去跳跃。祝愿,明年的你会更好!

由于篇幅有限,下篇的面试技术攻克篇只能够展示出部分的面试题,详细完整版以及答案解析,有需要的可以关注

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐