【VIM】VIM菜鸟的晋级之路

【VIM】VIM菜鸟的晋级之路

先看使用教程:

大神出品: Git时代的VIM不完全使用教程(这位博主的文章质量都很高啊!!推荐该博主的博客!!我现在最讨厌挂着技术的牌子盛的却是鸡汤的文。。。)

【VIM】对于我这样的菜鸟来说,一篇靠谱的教程比什么都重要

再上配置方法:

国际惯例先说遇到的问题:

  1、根据xk同学的建议,在.vimrc中加入“set number”,以测试,重启vim之后,是否会读取该文件配置。果然,vim重启后没有读取.vimrc文件。于是按照xk的建议,将.vimrc从~/.vim 移动到 ~/下面。重启vim,正常读取配置文件。

  2、重启之后还没进入vi就发现确实正常读取了,为啥呢?报错了,原来是注释有问题。xk说,这里行注释应该是 “,我一看,博主都用的 #。于是乖乖修改,不再报错。vim中出现了行号,泪奔。

  3、神级的 ZenCoding.vim 已经改名emmet-vim(戳我去github)

  (诸位大神别笑话说,我一直很怕命令行,这个月一次性攻克所有心理障碍。加上昨天才把系统设置为英文,唉,结果导入的邮件收取的文件,中文全部乱码,还没解决这个问题,留到明天再说。话说,我这是有多喜欢找虐啊。)

然后上大神的教程:

  只上插件管理部分哦。(戳我看原文戳我看配置

——————————————————————————————————

插件管理

Vundle

终于到这篇Blog我最想讨论的部分了。VIM的强大不仅仅体现在操作的高效率,更有强大而充沛的插件做支援,插件丰富了之后,就面临查找和管理的问题。

在遇见Vundle之前,我用Pathogen管理插件。Pathogen还算方便,只需要把相应插件,放在bundle目录下即可,不需要再像以前那样逐个放置单独的文件到相应目录,大大节省了劳动力,管理起来也一目了然,觉得还不错,至少比vimball那种需要执行命令安装的方式好一些。

我真希望我早些遇见Vundle。Vundle受到Pathogen和Vimball的启发,于是有了现在的模样。Vundle的逻辑是这样的:

  • Vim Script选好你想要的插件;

  • 在VIM的配置文件中写一句 Bundle plugin_name;

  • 执行一下Vundle的初始化命令,插件就装好了;

  • 升级和卸载也是同样的简单;

完美的世界!

Vundle的配置

Vundle的安装很简单:

git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

然后写配置文件.vimrc:

set nocompatible    " be iMproved
filetype off        " required!

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'

" vim-scripts repos
Bundle 'vim-plugin-foo'
Bundle 'vim-plugin-bar'

filetype plugin indent on    " required!

其中Bundle后面的内容,就是插件的名字,插件维护在Vim-Script.org

然后,打开VIM之后,可以输入以下命令:

"安装插件:
:BundleInstall

"更新插件:
:BundleInstall!

"卸载不在列表中的插件:
:BundleClean

现在大部分的插件都已经从Vim.org迁移到了Vim-Script.org,而且很多作者也认领了自己的插件,直接在这个Github的项目下更新,一个比Vim.org更科学更有效的生态环境,就这样完美的形成了。

在此非常严重的感谢vim-scripts.org的创建者Scott Bronson,和Vundle的作者gmarik。他们的创新和分享精神,让这个世界又美好了一些。

也感谢业界良心Github。Vim-Scripts.org整站就是用Github Pages建立维护的,对于个人来说,这是很好的选择,有兴趣的同学可以参看我之前的博客:使用Github Pages建独立博客

插件介绍

有了Vundle,再装插件就是件享受的事情了。我常用的插件有:

#相较于Command-T等查找文件的插件,ctrlp.vim最大的好处在于没有依赖,干净利落
Bundle 'ctrlp.vim'

#在输入(),""等需要配对的符号时,自动帮你补全剩余半个
Bundle 'AutoClose'

#神级插件,ZenCoding可以让你以一种神奇而无比爽快的感觉写HTML、CSS
Bundle 'ZenCoding.vim'

#在()、""、甚至HTML标签之间快速跳转;
Bundle 'matchit.zip'

#显示行末的空格;
Bundle 'ShowTrailingWhitespace'

#JS代码格式化插件;
Bundle '_jsbeautify'

#用全新的方式在文档中高效的移动光标,革命性的突破
Bundle 'EasyMotion'

#自动识别文件编码;
Bundle 'FencView.vim'

#必不可少,在VIM的编辑窗口树状显示文件目录
Bundle 'The-NERD-tree'

#NERD出品的快速给代码加注释插件,选中,`ctrl+h`即可注释多种语言代码;
Bundle 'The-NERD-Commenter'

#解放生产力的神器,简单配置,就可以按照自己的风格快速输入大段代码。
Bundle 'UltiSnips'

#让代码更加易于纵向排版,以=或,符号对齐
Bundle 'Tabular'

#迄今位置最好的自动VIM自动补全插件了吧
#Vundle的这个写法,是直接取该插件在Github上的repo
Bundle 'Valloric/YouCompleteMe'

以上插件可以在vim-script.org找到源码和文档,ZenCodingEasyMotion演示点链接,你会心动的。

.vimrc配置

因为配置不断在更新,所以放上我的配置的链接:.vimrc配置

更多

VIM在一开始会觉得非常不习惯,一定要坚持下去,收获的会更多,不仅仅是在装大侠方面的哦~

关于VIM的使用,这篇博客仅仅介绍了很小的一部分,网络上还有大量朋友总结的心得,常学常有收获:


——————————————————————————————————

网友推荐配置:戳我看原文

注册 |登录
构建全球华人科学博客圈返回首页微博RSS订阅帮助
luoxgg的个人博客分享
http://blog.sciencenet.cn/u/luoxgg
博客首页动态微博博文相册主题分享好友留言板学术名片
博文
[转载]vim 配置文件 ,高亮+自动缩进+行号+折叠+优化
已有 5607 次阅读 2013-3-5 14:05 |个人分类:linux|系统分类:科研笔记|关键词:优化 操作系统 百度空间 配置文件 detail

vim设置/取消行号
http://www.verydemo.com/demo_c167_i2627.html
************************************************************
将一下代码copy到 用户目录下 新建文件为  .vimrc
保存即可生效; 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)
"=========================================================================
" DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console
"
" Last Change: 2010年08月02日 15时13分 
"
" Version: 1.80
"
"=========================================================================

set nocompatible " 关闭 vi 兼容模式
syntax on " 自动语法高亮
colorscheme molokai " 设定配色方案
set number " 显示行号
set cursorline " 突出显示当前行
set ruler " 打开状态栏标尺
set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 " 设定 tab 长度为 4
set nobackup " 覆盖文件时不备份
set autochdir " 自动切换当前目录为当前文件所在的目录
filetype plugin indent on " 开启插件
set backupcopy=yes " 设置备份时的行为为覆盖
set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan " 禁止在搜索到文件两端时重新搜索
set incsearch " 输入搜索内容时就显示搜索结果
set hlsearch " 搜索时高亮显示被找到的文本
set noerrorbells " 关闭错误信息响铃
set novisualbell " 关闭使用可视响铃代替呼叫
set t_vb= " 置空错误铃声的终端代码
" set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
" set matchtime=2 " 短暂跳转到匹配括号的时间
set magic " 设置魔术
set hidden " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set guioptions-=T " 隐藏工具栏
set guioptions-=m " 隐藏菜单栏
set smartindent " 开启新行时使用智能自动缩进
set backspace=indent,eol,start
" 不设定在插入状态无法用退格键和 Delete 键删除回车符
set cmdheight=1 " 设定命令行的行数为 1
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ 
" 设置在状态行显示的信息
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
" set foldclose=all " 设置为自动关闭折叠 
" nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
" 用空格键来开关折叠


" return OS type, eg: windows, or linux, mac, et.st..
function! MySys()
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction

" 用户目录变量VIMFILESifMySys()=="windows"letVIMFILES = VIM.′/vimfiles′elseifMySys()=="linux"letVIMFILES = HOME.′/.vim′endif"设定doc文档目录lethelptags=VIMFILES.'/doc'

" 设置字体 以及中文支持
if has("win32")
set guifont=Inconsolata:h12:cANSI
endif

" 配置多语言环境
if has("multi_byte")
" UTF-8 编码
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk

if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif

if has("win32")
source VIMRUNTIME/delmenu.vimsourceVIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif

" Buffers操作快捷方式!
nnoremap <C-RETURN> :bnext<CR>
nnoremap <C-S-RETURN> :bprevious<CR>

" Tab操作快捷方式!
nnoremap <C-TAB> :tabnext<CR>
nnoremap <C-S-TAB> :tabprev<CR>

"关于tab的快捷键
" map tn :tabnext<cr>
" map tp :tabprevious<cr>
" map td :tabnew .<cr>
" map te :tabedit
" map tc :tabclose<cr>

"窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动
"光标到上方窗口,需要<c-w><c-w>k,非常麻烦,现在重映射为<c-k>,切换的
"时候会变得非常方便.
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

"一些不错的映射转换语法(如果在一个文件中混合了不同语言时有用)
nnoremap <leader>1 :set filetype=xhtml<CR>
nnoremap <leader>2 :set filetype=css<CR>
nnoremap <leader>3 :set filetype=javascript<CR>
nnoremap <leader>4 :set filetype=php<CR>

" set fileformats=unix,dos,mac
" nmap <leader>fd :se fileformat=dos<CR>
" nmap <leader>fu :se fileformat=unix<CR>

" use Ctrl+[l|n|p|cc] to list|next|previous|jump to count the result
" map <C-x>l <ESC>:cl<CR>
" map <C-x>n <ESC>:cn<CR>
" map <C-x>p <ESC>:cp<CR>
" map <C-x>c <ESC>:cc<CR>


" 让 Tohtml 产生有 CSS 语法的 html
" syntax/2html.vim,可以用:runtime! syntax/2html.vim
let html_use_css=1

" Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map <F12> :!python %<CR>

" 选中状态下 Ctrl+c 复制
vmap <C-c> "+y

" 打开javascript折叠
let b:javascript_fold=1
" 打开javascript对dom、html和css的支持
let javascript_enable_domhtmlcss=1
" 设置字典 ~/.vim/dict/文件的路径
autocmd filetype javascript set dictionary=VIMFILES/dict/javascript.dictautocmdfiletypecsssetdictionary=VIMFILES/dict/css.dict
autocmd filetype php set dictionary=VIMFILES/dict/php.dict"−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"plugin−bufexplorer.vimBuffers切换"\be全屏方式查看全部打开的文件列表"\bv左右方式查看\bs上下方式查看"−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"plugin−taglist.vim查看函数列表,需要ctags程序"F4打开隐藏taglist窗口"−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−ifMySys()=="windows""设定windows系统中ctags程序的位置letTlistCtagsCmd=′"′.VIMRUNTIME.'/ctags.exe"'
elseif MySys() == "linux" " 设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = '/usr/bin/ctags'
endif
nnoremap <silent><F4> :TlistToggle<CR>
let Tlist_Show_One_File = 1 " 不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 " 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 " 在右侧窗口中显示taglist窗口
let Tlist_File_Fold_Auto_Close=1 " 自动折叠当前非编辑文件的方法列表
let Tlist_Auto_Open = 0
let Tlist_Auto_Update = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Process_File_Always = 1
let Tlist_Display_Prototype = 0
let Tlist_Compact_Format = 1


"-----------------------------------------------------------------
" plugin - mark.vim 给各种tags标记不同的颜色,便于观看调式的插件。
" \m mark or unmark the word under (or before) the cursor
" \r manually input a regular expression. 用于搜索.
" \n clear this mark (i.e. the mark under the cursor), or clear all highlighted marks .
" \* 当前MarkWord的下一个 \# 当前MarkWord的上一个
" \/ 所有MarkWords的下一个 \? 所有MarkWords的上一个
"-----------------------------------------------------------------


"-----------------------------------------------------------------
" plugin - NERD_tree.vim 以树状方式浏览系统中的文件和目录
" :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree
" o 打开关闭文件或者目录 t 在标签页中打开
" T 在后台标签页中打开 ! 执行此文件
" p 到上层目录 P 到根目录
" K 到第一个节点 J 到最后一个节点
" u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作)
" r 递归刷新当前目录 R 递归刷新当前根目录
"-----------------------------------------------------------------
" F3 NERDTree 切换
map <F3> :NERDTreeToggle<CR>
imap <F3> <ESC>:NERDTreeToggle<CR>


"-----------------------------------------------------------------
" plugin - NERD_commenter.vim 注释代码用的,
" [count],cc 光标以下count行逐行添加注释(7,cc)
" [count],cu 光标以下count行逐行取消注释(7,cu)
" [count],cm 光标以下count行尝试添加块注释(7,cm)
" ,cA 在行尾插入 /* */,并且进入插入模式。 这个命令方便写注释。
" 注:count参数可选,无则默认为选中行或当前行
"-----------------------------------------------------------------
let NERDSpaceDelims=1 " 让注释符与语句之间留一个空格
let NERDCompact***yComs=1 " 多行注释时样子更好看


"-----------------------------------------------------------------
" plugin - DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释
"-----------------------------------------------------------------
let g:DoxygenToolkit_authorName="Asins - asinsimple AT gmail DOT com"
let g:DoxygenToolkit_briefTag_funcName="yes"
map <leader>da :DoxAuthor<CR>
map <leader>df :Dox<CR>
map <leader>db :DoxBlock<CR>
map <leader>dc a /* */<LEFT><LEFT><LEFT>


"-----------------------------------------------------------------
" plugin – ZenCoding.vim 很酷的插件,HTML代码生成
" 插件最新版:http://github.com/mattn/zencoding-vim
" 常用命令可看:http://nootn.com/blog/Tool/23/
"-----------------------------------------------------------------


"-----------------------------------------------------------------
" plugin – checksyntax.vim JavaScript常见语法错误检查
" 默认快捷方式为 F5
"-----------------------------------------------------------------
let g:checksyntax_auto = 0 " 不自动检查


"-----------------------------------------------------------------
" plugin - NeoComplCache.vim 自动补全插件
"-----------------------------------------------------------------
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = '0.5'
let g:NeoComplCache_SnippetsDir = $VIMFILES.'/snippets'
" <TAB> completion.
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" snippets expand key
imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)


"-----------------------------------------------------------------
" plugin - matchit.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
" % 正向匹配 g% 反向匹配
" [% 定位块首 ]% 定位块尾
"-----------------------------------------------------------------


"-----------------------------------------------------------------
" plugin - vcscommand.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
" SVN/git管理工具
"-----------------------------------------------------------------


"-----------------------------------------------------------------
" plugin – a.vim
"-----------------------------------------------------------------

——————————————————————————————————

VIM常用快捷键

一. 移动:
    h,j,k,l: 左,下,上,右。
    w: 下一个词的词首。W:下一个单词(不含标点)。
    e:下一个词的词尾。E:不含标点。
    b:上一个词的词首。B:不含标点。
    <>: v 模式选中后进行缩进。
二. 跳转:
    %: 可以匹配{},””,(),[]之间跳转。
    H、M、L:直接跳转到当前屏幕的顶部、中部、底部。
    #H:跳转到当前屏的第#行。
    #L:跳转到当前屏的倒数第#行。
    zt: 当前编辑行置为屏顶。
    zz: 当前编辑行置为屏中。
    zb: 当前编辑行置为屏底。
    G:直接跳转到文件的底部。
    gg: 跳转到文件首。
    gd: 跳转到光标所在函数和变量的定义。
    ():跳转到当前的行首、行尾。
    {}:向上、向下跳转到最近的空行。
    [{:跳转到目前区块开头。
    ]}:跳转到目前区块结尾。
    0: 跳转到行首。
    $: 跳转到行尾。
    2$: 跳转到下一行的行尾。
    #:跳转到该行的第#个位置。
    #G: 15G,跳转到15行。
    :#:跳转到#行。
三. 选择:
    1.v: 开启可视模式。 V: 开启逐行可视模式。
    2.^V: 矩形选择。
    3.v3w: 选择三个字符。  
    4.ab:包括括号和()内的区域。
    5.aB:包括括号和{}内的区域。
    6.ib:括号()内的区域。
    7.iB:括号{}内的区域。
    8.aw:标记一个单词。
四. 编辑:
    1. 新增:
        i: 光标前插入。
        I: 在当前行首插入。
        a: 光标后插入。
        A: 当前行尾插入。
        O: 在当前行之前插入新行。
        o: 在当前行之后插入新行。
    2. 修改 c(change) 为主:
        r: 替换光标所在处的字符。
        R:替换光标所到之处的字符。
        cw: 更改光标所在处的字到字尾处。
        c#w: c3w 修改3个字符。
        C:修改到行尾。
        ci’:修改配对标点符号中的文本内容。
        di’:删除配对标点符号中的文本内容。
        yi’:复制配对标点符号中的文本内容。
        vi’:选中配对标点符号中的文本内容。
        s:替换当前一个光标所处字符。
        #S:删除 # 行,并以新文本代替。
    3. 删除 d(delete) 为主:
        D:删除到行尾。
        X: 每按一次,删除光标所在位置的前面一个字符。
        x: 每按一次,删除光标所在位置的后面一个字符。
        #x: 删除光标所在位置后面6个字符。
        d^: 删至行首。
        d$: 删至行尾。
        dd:(剪切)删除光标所在行。        
        dw: 删除一个单词/光标之后的单词剩余部分。
        d4w: 删除4个word。
        #dd: 从光标所在行开始删除#行。
        daB: 删除{}及其内的内容。
        diB: 删除{}中的内容。
        n1,n2 d:将n1,n2行之间的内容删除。
    4. 查找:
        /: 输入关键字,发现不是要找的,直接在按n,向后查找直到找到为止。
        ?: 输入关键字,发现不是要找的,直接在按n,向前查找直到找到为止。
        *: 在当前页向后查找同一字。
        #: 在当前页向前查找同一字。
    5. 复制 y(yank)为主:
        yw: 将光标所在之处到字尾的字符复制到缓冲区中。
        #yw: 复制#个字到缓冲区。
        Y:相当于yy, 复制整行。
        #yy:表示复制从光标所在的该行往下数#行文字。
        p: 粘贴。所有与y相关的操作必用p来结合粘贴。
        ]p:粘贴到合适的缩进处。
        n1,n2 co n3:复制第n1行到第n2行之间的内容到第n3行后面。
    6. 大小写转换:
        gUU: 将当前行的字母改为大写。
        guu: 将当前行的字母改为小写。
        gUw: 将当前光标下的单词改为大写。
        guw: 将当前光标下的单词改为小写。
        a. 整篇大写:
        ggguG
        gg: 光标到文件第一个字符。
        gu: 把选择范围全部小写。
        G: 到文件结束。
        b. 整篇小写:gggUG
    7.  其它:
        J:当前行和下一行合并成一行。
    8.  移动:
        n1,n2 m n3:将n1行到n2行之间的内容移至n3行下。

转载于:https://my.oschina.net/maomi/blog/178420

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109970.html原文链接:https://javaforall.net

(0)
上一篇 2021年8月26日 下午10:00
下一篇 2021年8月26日 下午10:00


相关推荐

  • java连接数据库有几种方法_javaweb如何连接数据库

    java连接数据库有几种方法_javaweb如何连接数据库1.加载驱动Class.forname(数据库驱动名);2.建立数据库连接使用DriverManager类的getConnection()静态方法来获取数据库连接对象,其语法格式如下所示:Connectionconn=DriverManager.getConnection(Stringurl,Stringuser,Stringpass);其中url–数据库连接字符串….

    2025年6月11日
    4
  • OpenClaw Windows 一键安装工具(转载网络)

    OpenClaw Windows 一键安装工具(转载网络)

    2026年3月13日
    3
  • 什么是 反向代理

    什么是 反向代理什么是反向代理一 反向代理的定义理解思路 无代理 gt 正向代理 gt 反向代理 无代理 与有代理区别为 主要表现 过滤不同 映射不同 权限不同 过滤 使用代理 可以对外界或内部的 Internet 地址进行过滤 映射 使用代理 多个用户使用代理访问外界时 只映射为一个 IP 地址 权限 使用代理 外界不能直接访问到内部网 同时限制内部网对外部的访问权限 无代理 无以上特征 正向代理 内部网络用户向外网发送请求 正向代理即通常所说的代理 用于代表内部网络用户向 Intern

    2025年11月19日
    5
  • MidjourneyAPI使用教程与参数说明

    MidjourneyAPI使用教程与参数说明

    2026年3月15日
    2
  • java sortedset用法_SortedSet如何实现多维度排序

    java sortedset用法_SortedSet如何实现多维度排序说明 本次实践基于 Redis 版本 3 2 11 关于 SortedSet 首先 我们都知道 Redis 的 SortedSet 是可以根据 score 进行排序的 以手机应用商店的热门榜单排序为例 根据下载量倒序排列 其简单用法如下 对 SortedSet 做一下简单总结 默认升序排列 即通过命令 ZRANGE 实现 如果要按照降序排列 需要通过命令 ZREVRANGE 实现 当 score 即得分一样时 按照字典顺序对 membe

    2026年3月26日
    2
  • 古今计算机发展简史思维导图_计算机功能演变史

    古今计算机发展简史思维导图_计算机功能演变史小时候,见过电子计算器,能很快完成计算,当时心想,计算器真是厉害,能提前存下所有数字的加减乘除结果。现在想来,很傻很天真。后来,吵着闹着要买小霸王学习机,最后如愿变成游戏机,经典游戏“超级玛丽”和“坦克大战”至今历历在目。

    2022年10月18日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号