将vim打造成IDE编译环境——自己用的vim(gvim)插件

在win10中 用vim 打造 PYTHON IDE win下安装vim并不困难,只需要下载 gvim81.exe就可以了,gvim81目前官网没有64bit版本,得自己build或网上找一个。 vim 的个性化配置最好使用bundle来管理各种插件,win中推荐vundle管理器 那么如何中安装vundle呢, https://github.com/VundleVim/Vundle.vim/wiki/Vundle-for-Windows 参... 阅读详情
网上经过多方搜索,在前大神们的指导下,终于让自己的vim有了一点雏形。但是网上的一些教程难免有笔误,或者是与自己不符的地方,特此立文,防止重装环境后不好找这些插件。
8  #=============================================================================
9  1. 查看 key 相关信息说明的命令  :help keycodes
 10 
 11  #=============================================================================
 12  2. ctags
 13  (1) . 帮助手册查看
 14      :help usr_29
 15 
 16  (2) . 功能
 17      ctags的功能, 只要在unix/linux环境编程过的人都知道它的历害! 我在这也作个小
 18      小介绍吧ndow=0: 对浏览代码非常的方便, 可以在函数, 变量之间跳来跳去等等. (注
 19              意: 我这里说到的仅是小小的一部分!) .
 20 
 21  (3) . 安装
 22      首先, 下载ctags安装包, 然后解压并安装, 命令如下:
 23      $ tar -xzvf ctags-5.6.tar.gz
 24      $ cd ctags-5.6
 25      $ make
 26      # make install   // 需要root权限
 27          或:
 28          $ tar -xzvf ctags-5.7.tar.gz
 29          $ cd ctags-5.7
 30          $ ./configure
 31          # make
 32          # make install
 33 
 35  (4) . 使用方法
 36      然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下
 37      运行命令: ctags -R
 38      我现在以 vim71 的源码目录做演示
    ( 此处可以用脚本,把ctags跟cscope要生成的东东一起生成 ) 
 39      $ cd /home/nuoerll/vim71
 40      $ ctags -R
 41 
 42      此时在/home/nuoerll/vim71目录下会生成一个 tags 文件, 现在用vim打开
 43      /home/nuoerll/vim71/src/main.c
 44      $ vim /home/nuoerll/vim71/src/main.c
 45      
 46      再在vim中运行命令:
 47      :set tags=/home/nuoerll/vim71/tags
 48      该命令将tags文件加入到vim中来, 你也可以将这句话放到~/.vimrc中去, 如果你经
 49      常在这个工程编程的话.
 50      对于经常在不同工程间编程, 可以在.vimrc中设置:
 51          set tags=tags
 52          set autochdir  "这句即使不用ctags也要加。跳转到当前目录
 53 
 54  (5) . 使用例子
 55      把光标定位到某一函数名上, 按下 Ctar + ], vim就可以自动切换到该函数定义处!
 56      要返回只需要按下Ctrl + t .
 57      更多用法, 在vim命令模式输入 :help usr_29 查看即可.
 58 
 59 
 60  #=============================================================================
 61  3. TagList 插件
 62  (1) . 帮助手册查看
 63      :help taglist.txt
 64 
 65  (2) . 功能
 66      高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏,
 67      全局变量, 函数名等.
 68 
 69  (3) . 安装
 70      下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到
 71      $HOME/.vim/plugin 和 $HOME/.vim/doc 目录中.
 72 
 73  (4) . 使用方法
 74      首先请先在你的~/.vimrc文件中添加下面语句:
 75          let Tlist_Ctags_Cmd=' /usr/bin/ctags ' "此处是ctags的安装目录
 76           let Tlist_Show_One_File=1
 78          let Tlist_OnlyWindow=1
 79          let Tlist_Use_Right_Window=0
 80          let Tlist_Sort_Type=' name '
 81          let Tlist_Exit_OnlyWindow=1
 82          let Tlist_Show_Menu=1
 83          let Tlist_Max_Submenu_Items=10
 84          let Tlist_Max_Tag_length=20
 85          let Tlist_Use_SingleClick=0
 86          let Tlist_Auto_Open=0
 87          let Tlist_Close_On_Select=0
 88          let Tlist_File_Fold_Auto_Close=1
 89          let Tlist_GainFocus_On_ToggleOpen=0
 90          let Tlist_Process_File_Always=1
 91          let Tlist_WinHeight=10
 92          let Tlist_WinWidth=18
 93          let Tlist_Use_Horiz_Window=0
 94 
 95      
 96      此时用vim打开一个c源文件试试:
 97      $ vim ~/vim/src/main.c
 98      
 99      进入vim后用下面的命令打开taglist窗口.
100      :Tlist
101 
102      为了更方便地使用, 可以在.vimrc文件中加入:
103          map < silent > < leader >tl :TlistToggle< CR >
104      这样就可以用 " ,tl " 命令进行taglist窗口的打开和关闭之间方便切换了. // 这里
105      的" , "是我.vimrc设置的leader, 你也可以设置成别的, 在.vimrc中修改即可, 如我
106      的: let mapleader=" , " 
107          
108      
109  #=============================================================================
110  4. WinManager 插件
111  (1) . 帮助手册查看
112      :help winmanager
113 
114  (2) . 功能
115      管理各个窗口, 或者说整合各个窗口.
116 
117  (3) . 安装
118      下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin 目录中,
119      把*.txt文件放到 $HOME/.vim/doc 目录中.
120 
121  (4) . 使用方法
122      在.vimrc中加入如下设置:
123      let g:winManagerWindowLayout=' FileExplorer '  // 这里可以设置/
124      为多个窗口, 如' FileExplorer|BufExplorer|TagList '
125      let g:persistentBehaviour=0             // 只剩一个窗口时, 退出vim.
126      let g:winManagerWidth=20
127      let g:defaultExplorer=1
128      nmap < silent > < leader >fir :FirstExplorerWindow< cr >
129      nmap < silent > < leader >bot :BottomExplorerWindow< cr >
130      nmap < silent > < leader >wm :WMToggle< cr >
131 
132  (5) . 使用例子
133      在终端输入vim启动vim:
134      $vim
135      在正常模式下, 敲入 " ,wm " 即可看到, vim的左侧新建了两个窗口:FileExplorer和
136      BufExplorer, 这样我们即可在FileExplorer窗口很方便地对目录进行查看, 编辑等
137      操作; 在BufExplorer窗口中查看当前vim已经打开那些文件.
138 
139 
140  #=============================================================================
141  5. cscope
142  (1) . 帮助手册查看
143      :help if_cscop.txt
144 
145  (2) . 功能
146      用Cscope自己的话说 - " 你可以把它当做是超过频的ctags ", 其功能和强大程度可见
147      一斑吧, 关于它的介绍我就不详细说了, 如果你安装好了前文介绍的帮助手册.
148 
149  (3) . 安装
150      如果是在linux环境中, cscope一般都会随系统一起安装了; 在windows环境中, 则需
151      要下载windows版本的 (cscope.exe) , 然后把它放到path环境变量所设
152      置的目录中 (如: C:/Program Files/Vim/vim72) .
153 
154  (4) . 使用方法
155      在.vimrc中增加如下设置, 就可以利用相应的快捷键进行不同的查找了.
156          if has ("cscope")
157              set cscopetag   "  使支持用 Ctrl+]  和 Ctrl+t 快捷键在代码间跳来跳去
158               "  check cscope for definition of a symbol before checking ctags:
159               " set to 1 if you want the reverse search order.
160              set csto=1
161 
162              "  add any cscope database in current directory
163              if filereadable( "cscope.out")
164                  cs add cscope.out
165              "  else add the database pointed to by environment variable
166              elseif $CSCOPE_DB != ""
167                  cs add $CSCOPE_DB
168              endif
169 
170              " show msg when any other cscope db added
171              set cscopeverbose
172 
173              nmap < C-/ >s :cs find s < C-R >=expand ("<cword>") < CR >< CR >
174              nmap < C-/ >g :cs find g < C-R >=expand ("<cword>") < CR >< CR >
175              nmap < C-/ >c :cs find c < C-R >=expand ("<cword>") < CR >< CR >
176              nmap < C-/ >t :cs find t < C-R >=expand ("<cword>") < CR >< CR >
177              nmap < C-/ >e :cs find e < C-R >=expand ("<cword>") < CR >< CR >
178              nmap < C-/ >f :cs find f < C-R >=expand ("<cfile>") < CR >< CR >
179              nmap < C-/ >i :cs find i ^< C-R >=expand ("<cfile>") < CR >$< CR >
180              nmap < C-/ >d :cs find d < C-R >=expand ("<cword>") < CR >< CR >
181          endif
182 
183  (5) . 使用例子
184      首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
185          $ find ~/work/..Project/ -name " *.h " -o -name " *.cpp " > cscope.files
186          $ cscope -bkq -i cscope.files
         ( 此处可以用脚本,把ctags跟cscope要生成的东东一起生成,脚本如下 )
######################脚本 start##################################    
               #!/bin/sh
               find . -name "*.h" -o -name "*.c"-o -name "*.cc" > cscope.files
               cscope -bkq -i cscope.files
               ctags -R
########################脚本 end###################################
191      然后, 用vim打开一个源文件 (如: vim main.cpp) ,
192      打开后, 第一件事就是导入cscope数据库了:
193          :cs add /home/yourname/workpace/cscope.out /home/yourname/workpace
194 
195      cscope数据库导入成功后, 就可以利用" 步骤(4) "中定义的快捷键进行相关的查找,
196      浏览等操作了 (当然也可以直接利用相关命令, 嘿嘿) .
197 
198  =============================================================================

6. MiniBufExplorer
下载地址http://www.vim.org/scripts/script.php?script_id=159
版本6.3.2
安装将下载的 minibufexpl.vim文件丢到 ~/.vim/plugin 文件夹中即可
手册
在minibufexpl.vim 文件的头部

在编程的时候不可能永远只编辑一个文件, 你肯定会打开很多源文件进行编辑, 如果每个文件都打开一个vim进行编辑的话那操作起来将是多麻烦啊, 所以vim有buffer(缓冲区)的概念, 可以看vim的帮助:
:help buffer
vim自带的buffer管理工具只有:ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观. 现在隆重向你推荐一款vim插件(plugin): MiniBufExplorer

使用方法:
重新启动vim, 当你只编辑一个buffer的时候
MiniBufExplorer派不上用场, 当你打开第二个buffer的时候, MiniBufExplorer窗口就自动弹出来了, 见下图:

(--- 图13 ---)
上面那个狭长的窗口就是MiniBufExplorer窗口, 其中列出了当前所有已经打开的buffer, 当你把光标置于这个窗口时, 有下面几个快捷键可以用:
<Tab>向前循环切换到每个buffer名上
<S-Tab>向后循环切换到每个buffer名上
<Enter>在打开光标所在的buffer
d删除光标所在的buffer

以下的两个功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1

<C-Tab>向前循环切换到每个buffer上,并在但前窗口打开
<C-S-Tab>向后循环切换到每个buffer上,并在但前窗口打开

如果在~/.vimrc中设置了下面这句:
let g:miniBufExplMapWindowNavVim = 1
则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:
C-w,h j k l    向"左,下,上,右"切换窗口.
在~/.vimrc中设置:
let g:miniBufExplMapWindowNavArrows = 1
是用<C-箭头键>切换到上下左右窗口中去
加上插件 minibufexplorer.vim 之后,总会有这种情况,多个窗口,其他插件总是不能和minibufexplorer.vim好好相处,
总会有多个窗口的错 误,尤其是切换buffer时,这时 在~/.vimrc中 可以加上下面这句:
let g:miniBufExplorerMoreThanOne=0

7. taglist与minibufexpl冲突解决

这两个plugin在 www.vim.org 是排名前两位的(by rating),但是所谓鱼与熊掌不可兼得,minibufexpl与taglist合用时还是存在一点小问题。

在切换buffer时,如果之前焦点定位于taglist的窗口中,minibufexpl会毫不客气地在taglist的窗口中载入文件。为了解决这一点瑕疵,我对minibufexpl做了一点小修正。

请用以下代码替换原函数MBESelectBuffer()

"  MBENeedNextWindow - From the MBE window, test window under the cursor {{{
"
 
"
 If we are in our explorer, then we attempt to open the buffer under the
"
 cursor in the previous window.
"
function !   < SID > MBENeedNextWindow()
  
if  bufname( ' % ' )  ==   ' -MiniBufExplorer- '   || bufname( ' % ' )  ==   ' __Tag_List__ '   ||  (g:miniBufExplModSelTarget  ==   1   &&  getbufvar(bufnr( ' % ' ),  ' &modifiable ' )  ==   0 )
    
return   1
  
else
    
return   0
  endif
endfunction

"  }}}
"
 MBESelectBuffer - From the MBE window, open buffer under the cursor {{{
"
 
"
 If we are in our explorer, then we attempt to open the buffer under the
"
 cursor in the previous window.
"
function !   < SID > MBESelectBuffer()
  call 
< SID > DEBUG( ' =========================== ' , 10 )
  call 
< SID > DEBUG( ' Entering MBESelectBuffer() '  , 10 )
  call 
< SID > DEBUG( ' =========================== ' , 10 )

  
"  Make sure we are in our window
   if  bufname( ' % ' )  !=   ' -MiniBufExplorer- '
    call 
< SID > DEBUG( ' MBESelectBuffer called in invalid window ' , 1 )
    
return  
  endif

  let l:save_rep 
=   & report
  let l:save_sc  
=   & showcmd
  let 
& report     =   10000
  
set  noshowcmd 
  
  let l:bufnr  
=   < SID > GetSelectedBuffer()
  let l:resize 
=   0

  
if (l:bufnr  !=   - 1 )              "  If the buffer exists.

    let l:saveAutoUpdate 
=  g:miniBufExplorerAutoUpdate
    let g:miniBufExplorerAutoUpdate 
=   0
    
"  Switch to the previous window
    wincmd p
    
    let curbufname 
=  bufname( ' % ' )
    
"  If we are in the buffer explorer or in a nonmodifiable buffer with
     "  g:miniBufExplModSelTarget set then try another window (a few times)

    
while   < SID > MBENeedNextWindow()
        wincmd w
        
if  bufname( ' % ' )  ==  curbufname
            
break
        endif
    endwhile
    
"  The following handles the case where -MiniBufExplorer-
     "  is the only window left. We need to resize so we don't
     "  end up with a 1 or two line buffer. 
     if  bufname( ' % ' )  ==   ' -MiniBufExplorer- '
        let l:resize 
=   1
    endif

    exec(
' b!  ' .l:bufnr)
    
if  (l:resize)
      resize
    endif
    let g:miniBufExplorerAutoUpdate 
=  l:saveAutoUpdate
    call 
< SID > AutoUpdate( - 1 )

  endif

  let 
& report   =  l:save_rep
  let 
& showcmd  =  l:save_sc

  call 
< SID > DEBUG( ' =========================== ' , 10 )
  call 
< SID > DEBUG( ' Completed MBESelectBuffer() ' , 10 )
  call 
< SID > DEBUG( ' =========================== ' , 10 )

endfunction


=====================================有用的vimrc设置 START====================================================
set nu  "显示行号
set background=light "
设定字体顔色模式 , light使字体以较暗的顔色显示出来,适用于亮色系的背景;dark使字体以较亮的顔色显示出来,适用于暗色系的背景
set cindent  "编程时c语言自动缩进
set cino=j1 "
设定c / c + + 自动缩进的风格
set fileencodings = utf8 , gb18030 , big5 , gb2312  "支持的字符编码
set formatoptions=rotcql "
设置Vim中文本和注释的换行方式
set incsearch "
输入查找内容的同时 , vim就开始对输入的内容进行匹配,并显示匹配的位置
set hlsearch  "对匹配的所有项目进行高亮显示
set ignorecase "
在查找时忽略大小写
set nocompatible  "去掉有关vi一致性模式,避免以前版本的一些bug和局限
set shiftwidth=4 "
反向制表符中的空格数目
set t ab stop = 4  "指定tab缩进的字符数目
set smarttab "
解决shiftwidth和tabstop不等时的麻烦
set w ildmenu  "自动补全命令时候使用菜单式匹配列表
set mouse=a "
使用鼠标

syntax on  "开启语法高亮
filetype plugin indent on "
打开文件类型检测功能

let mapleader  = ","
let g : mapleader  = ","

"tags setup
if has("
ctags ")
    if filereadable("
tags ")
        set tags=tags
    endif
endif

"
Tlist setup
let Tlist_Ctags_Cmd  = '/usr/bin/ctags' "设定linux系统中ctags程序的位置
let Tlist_Sort_Type = "
name " " 使taglist以tag名字进行排序
let Tlist_Show_One_File  =  1  "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "
如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window  =  1  "在右侧窗口中显示taglist窗口 
let Tlist_Use_SingleClick = 1 "
单击tag就跳转
let Tlist_WinWidth  =  15  "taglist窗口的宽度
map <silent> <leader>tl :TlistToogle<cr>

"
LookupFile setup
let g : LookupFile_MinPatLength  =  2  "最少输入2个字符才开始查找
let g:LookupFile_PreserveLastPattern = 0 "
不保存上次查找的字符串
let g : LookupFile_PreservePatternHistory  =  1  "保存查找历史
let g:LookupFile_AlwaysAcceptFirst = 1 "
回车打开第一个匹配项目
let g : LookupFile_AllowNewFiles  =  0  "不允许创建不存在的文件

"
cscope setup
if  has ( "cscope" )
    set csprg = / usr / bin / cscope
    set csto = 1
    set cst
    set nocsverb
     if  filereadable ( "cscope.out" )
        cs add cscope . out
    endif
    set csverb
endif
======================================== 有用的vimrc设置 END =================================================
(未完待续)

Verilog开发者的福音:Gvim高效配置全攻略(含插件推荐) 本文为Verilog开发者提供了一套完整的Gvim高效配置指南,涵盖从基础环境搭建、界面优化到插件生态武装的全过程。通过模块化配置、精选插件(如NERDTree、ALE、verilog_systemverilog.vim)以及定制化快捷键,帮助开发者将Gvim打造成专为Verilog开发量身定制的高效IDE,显著提升编码效率与舒适度。 阅读详情

相关推荐

GVIM 手把手教你把Vim改装成一个IDE编程环境 图文

GVIM 手把手教你把Vim改装成一个IDE编程环境 图文

ytffhew的博客 951

ubuntu14.04下把gvim打造成IDE过程记录

这类的帖子网上很多,我照着实践了一番,把过程记录下来,留作以后查看,如果对您有一点帮助,倍感欣慰。 0.安装gvim apt-get install gvim即可。安装完后,在/usr/share/vim目录如下: gvimrc指向/etc/gvimrc,vimrc指向/etc/vimrc,这两个文件是gvim和vim的全局配置文件,修改这些文件,可以对所有用户生效。 进入vim7

steven_yan_2014的专栏 4865

GVIM:图形界面Vim编辑器的全面体验

本文还有配套的精品资源,点击获取 简介:GVIM是Vim编辑器的图形界面版本,提供传统的Vim功能,并增加图形用户界面(GUI)特性,如窗口管理与鼠标支持。Vim自1991年开发以来,因其高度可配置性、丰富的插件系统、宏录制回放、语法高亮和自动补全等功能,成为程序员和系统管理员的最爱。GVIM的绿色版或便携版,无需安装,简化了配置环境的过程。GVim7.3版本新增了多语言界...

weixin_31800911的博客 3342

手把手教你把Vim改装成一个IDE编程环境(图文)

手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5

吴垠的专栏 70万+

DDS信号发生器设计避坑指南:从AD9834配置到巴特沃斯滤波实战

本文详细解析了基于AD9834芯片的DDS信号发生器设计中的关键技术要点与常见陷阱,涵盖时钟源选择、寄存器配置时序、巴特沃斯滤波器设计等核心内容。针对中高频段信号质量优化,提供了实用的解决方案和代码示例,帮助工程师规避设计误区,提升信号发生器的性能和稳定性。

2y3u4i5o6p的博客 782

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 153

GVIM使用教程

写在前面: 我的微信公众号: xiaoshi_IC,小石谈IC,近期已完成了PCB系列,后续后续会逐步完成 IC版图,FPGA设计,信号完整性,IC设计,通信原理系列,做开源的微电子,电子公众分享,坚持做有价值的分享,欢迎持久关注。该公众号内容同步分享 csdn,B站,知乎,youtube等,用户搜索相关的文章标题,即可很方便找到,同步更新。 三种使用模式: 有关GVIM模式的说明:这篇讲的比...

集成电路设计那些事儿 6964

Solidworks二次开发(C# .NET API):从零构建装配体与虚拟零件

本文详细介绍了使用C#进行Solidworks二次开发,从零构建装配体与虚拟零件的完整流程。通过.NET API实现设计自动化,涵盖环境搭建、核心对象模型、虚拟零件创建与外部化保存等关键技术,帮助工程师将重复性建模工作程序化,大幅提升设计效率与标准化水平。

alice7model的博客 607

Gvim使用心得--设置篇

来兄弟连一个多星期了,学习气氛真是非常的好。 今天布置了div+css的布局作业,花了2个多小时才做好,做的真是头大,看来前台技术还是需要继续加强, 还好做到了99%相似,写完竟然不需要调整兼容性,相当惊讶,于是发篇战地日记休息下大脑,庆祝一下。 “被强迫”使用了gvim,从了解皮毛到现在逐渐的熟悉了,越发的感觉gvim的自由和强大。 如果不是没有找到gvim的ftp浏览器的插件,或许我就...

网站开发初中级代码参考-转载 252

DESeq2实战:利用LRT检验解析时间序列基因表达动态变化

本文详细介绍了如何使用DESeq2中的LRT检验分析时间序列基因表达数据,揭示基因表达动态变化模式。通过构建完整模型与简化模型比较,LRT检验能有效识别处理效应随时间变化的基因,适用于发育过程、疾病进展等研究。文章提供了从数据准备、模型构建到结果可视化的完整实战指南,并分享了高级技巧与常见问题排查方法。

weixin_29062671的博客 442

基于PLC的茶叶揉捻机自动控制系统设计【附代码】

茶叶揉捻是初茶加工过程中的一道关键工序,通过揉捻可以使鲜茶叶成条、碎茶及叶组织细胞破损等。影响茶叶成条率、碎茶率和叶组织细胞破损的主要因素包括揉捻时间、压力和揉捻桶转速。为了提高茶叶品质的稳定性和减轻工人的劳动强度,本文提出了一种基于PLC自动控制技术的茶叶揉捻机控制系统设计。📊 PLC自动化设计 | 毕业设计指导 | 工业自动化解决方案。✅ 具体问题可以私信或查看文章底部二维码。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1344

告别Unity AudioSource:用OpenAL在C++游戏项目中实现3D音效(附完整代码)

本文详细介绍了如何在C++游戏项目中利用OpenAL替代Unity AudioSource实现高级3D音效,包括物理精确的多普勒效应、动态声音遮挡系统和HRTF个性化配置。通过完整的代码示例和性能优化技巧,帮助开发者提升游戏音频体验,特别适合需要精细音频控制的独立游戏和VR项目。

weixin_33682790的博客 425

lammps教程:非晶sio2建模方法

大家好,我是小马老师。 本文介绍非晶sio2的建模方法。 sio2的建模方法有很多,可以下载cif文件使用atomsk转为data文件,也可以直接在ms中导入sio2结构,这些方法建的sio2都是标准的sio2晶体。 如果要建立非晶状态的sio2,就是把排列规则的sio2变成无序排列的sio2。 非晶建模方法有很多,在lammps中,可以通过高温高压的方法打乱sio2的排列实现非晶建模。 代码中的温度和步数可根据需要自己调整。 下面给出in文件案例代码。 units metal atom

lammps_jiayou的博客 5269

全世界最好的编辑器VIM之Windows配置(gvim)

全世界最好的编辑器VIM之Windows配置(gvim),vundle插件管理,NERDTree插件,ctrlp插件,vim-nerdtree-tabs插件等 。vim本来就是很强大,很方便的编辑器,再加上这些杀手级的插件,那就真的无敌了官方网站:http://www.vim.org平时习惯在linux上面使用vim,但是在windows下面,总感觉没有找到比vim好用的编辑器,所以,决定在win...

zxy9602的博客 18万+

Camera HAL 多线程管理详解

本文摘要:Camera HAL 采用双线程管理体系(CAMX与CHI-CDK)实现高效并发处理。CAMX ThreadManager负责HAL内部及框架交互,采用线程池+任务调度机制,将节点处理、回调等封装为Job异步执行;CHI ThreadManager专注于OEM定制逻辑,支持异步/同步两种作业模式。两套系统通过函数指针解耦但共享地址空间,共同实现硬件流水线的强实时性。文章详细解析了两者的类层次架构、核心数据结构及典型应用场景,并提供了问题排查的代码切入点,为Camera HAL开发与性能优化提供指导

DU_YULIN的博客 57

# 【WorkBuddy专栏33】工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

工作空间,最大的WorkBuddy技巧——任务隔离、记忆分区与多项目管理实战

AI人人懂 2149

Gvim的安装及配置

同步发布在个人博客:https://www.zhyong.cn/posts/876e/ Gvim是vim下的Windows版本,是一个GUI程序。Vim是从vi发展出来的一个文本编辑器,具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。Vim的学习曲线陡峭,但是真正熟悉之后,会极大提高我们查看、编辑文本的效率。vim有丰富的插件,其自定义程度极高,可通过修改配置文件实现我们想...

星辰大海 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

保姆级教程!将 Vim 打造一个 IDE (Python 篇)

从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本的,有想看的可以本篇文章点个赞,我下篇就发 一说到 IDE,总有人会因 which one is 世界上最好的编辑工具 而吵得不可开交,但本文不会涉及、也不想误导大家,我相信不同的人、不同的使用场景都有着有不同的最优解,世界上没有一招通吃的编辑器。 如果是在桌面端,PyCharm 和 VS Code 已经做得

王炳明 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vim配置成IDE

手把手教你把Vim改装成一个IDE编程环境(图文) 转载自:http://blog.youkuaiyun.com/wooin/article/details/1858917 1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用

H_armony的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

vim配置及插件安装管理(超级详细)

转自:https://www.cnblogs.com/snowbook/p/5923770.html   1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事,...

浩海拾贝 9342

vim打造成PYTHON IDE

VIM基础设置 1 基础学习资料 2 验证vim的安装 插件管理 vim默认的插件安装方式 通过插件Vundle来管理插件 界面美化 文件系统与工程管理 代码阅读与分析 代码开发 其他辅助 参考资料 1. VIM基础设置 1.1 基础学习资料 vimtutor入门学习, vim用户手册与参考手册 在shell下直接运行 $ vimtutor就可以使用vimtutor

icycolawater的专栏 2451

Centos中将vim编辑器改装成IDE编程环境

VIM是一个非常优秀的文本编辑器但是对于用习惯windows IDE的用户来说非常的不方便,现在利用各种VIM插件将VIM改装成自己所习惯的IDE。1、加入行号 在root权限命令行中输入 vim /etc/vimrc 进入vim的插入模式,在该文件的最后加入set number 如下图, 然后保存退出,再打开的时候就会加入行号,如下图 2、安装gvim 由上面的图可

梦里水乡的专栏 2573

用Vim打造Perl的IDE

使用Eclipse EPIC插件写perl程序有一段时间了,觉得它的自动完成和跳转功能比较弱(可能是因为我不太会使用的原因),决定试试vim,先用Windows下的vim学起。 VIM配置文件 (Windows上配置文件一般是 _vimrc,linux/unix/Mac OS一般是 .vimrc)。 Windows上,VIM将按以下顺序在不同位置寻找配置文件     1)$HOME/_vim

fibonaccian的专栏 3010

Windows gvim安装插件

文章目录1 安装插件管理器Vundle1.1 提前安装两个软件1.2 编辑 _vimrc2 安装插件 本文介绍如何使用插件管理器安装插件 1 安装插件管理器Vundle Github:Vundle安装介绍 1.1 提前安装两个软件 Git curl 方式一: C:\> choco install -y git C:\> choco install -y curl 方式二: 下载curl压缩包,将其解压到任意要给目录,并在PATH添加环境变量 例如:解压到C:\Program File

记录学习点滴 8634

Windows 10使用gvim配置Python IDE(新手操作)

Windows 10使用gvim配置Python IDE1 安装Python注意事项2 安装gvim2.1 下载gvim2.2 查看gvim是否支持Python3 安装vim插件管理器vim-plug 1 安装Python注意事项 若gvim为64位,则python也必须为64位; 若gvim为32位,则python也必须为32位; 我选择了64位的Python 3.8.2版本。 2 安装gvim...

baidu_41764522的博客 3343
上一篇: Android实现全屏正确方法介绍
下一篇: C中的预编译宏定义
Aaron-Liu
博客等级 码龄16年 8粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值