`
oldrev
  • 浏览: 230707 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

VIM D语言编辑环境

阅读更多
在正文之前,先佩服一下伟大的GFW——又把 blogspot.com 的二级域名给封了。

如果你和我一样经常为了测试D语言的某个特性而写一些小程序来验证想法,而且恰好也使用 VIM 的话,那么本文就是为你准备的
首先,VIM7 中自带的D语言语法文件版本很老,请替换为 http://www.vim.org/scripts/script.php?script_id=379 这个支持0.178的。
下面的代码是 VIM 的DMD编译器支持,将其放入 ~/.vim/complier/dmd.vim (for unix-like, Windows 为 $VIMRUNTIME\vim70\compiler\dmd.vim),GDC 用户请将18行的 dmd 替换为 gdmd。
dmd.vim 代码
 
  1. " Vim compiler file 
  2. " Compiler: DMD Runner  
  3. " Maintainer:   oldrev 
  4. " Last Change:  2007/03/28  
  5.   
  6. if exists("current_compiler")  
  7.   finish  
  8. endif  
  9. let current_compiler = "dmd"  
  10.   
  11. if exists(":CompilerSet") != 2      " older Vim always used :setlocal 
  12.   command -nargs=* CompilerSet setlocal <args></args> 
  13. endif 
  14.  
  15. let s:cpo_save = &cpo 
  16. set cpo-=C 
  17.  
  18. CompilerSet makeprg=dmd\ -run\ % 
  19.  
  20. CompilerSet errorformat=%f:%l:%m 
  21.  
  22. let &cpo = s:cpo_save 
  23. unlet s:cpo_save 
  24.  
  25. " vim: nowrap sw=2 sts=2 ts=8 ff=unix:  

最后,在 ~/.vimrc(Windows 是 $VIMRUNTIME\_vimrc)文件中加入如下两行:
.vimrc 代码
  1. :autocmd BufRead,BufNewFile *.d  compiler dmd  
  2. :autocmd BufRead,BufNewFile *.d  map <f5> :w<cr>:make<cr>  </cr></cr></f5>

大功告成,现在只需要任意打开一个D文件,在普通模式下按下 F5就可以运行程序,假如文件中存在编译错误的话,VIM会将其加入错误列表,并自动跳到第一个错误所在的行,同时也支持像 clist 列出错误清单这类的 Quickfix 命令。

下面是我的VIM效果:


Happy Vimming!
  • 大小: 28 KB
分享到:
评论
11 楼 sofire 2007-08-06  
我把配置文件改成了。
引用

CompilerSet makeprg=dmd\ -run\ %\ 1>&2
CompilerSet errorformat=%f(%l)%m

我用的是linux下的dmd 1.015,错误提示用的是冒号,例如:
array.d(96): Error: cannot assign to static array [11]

makeprg改动的原因是:
运行程序后,在终端上显示输出结果。
如果不加 1>&2 ,结果就不会显示出来

上面的回复有点问题,贴的是_vimrc配置里面的,
和文章的有点出入。文章里面的意思是:
引用

:autocmd BufRead,BufNewFile *.d  compiler dmd 
:autocmd BufRead,BufNewFile *.d  map <f5> :w<cr>:make<cr>


多谢oldrev,原来用make编译程序,能更方便的定位错误。
10 楼 sofire 2007-08-04  
引用

:autocmd BufRead,BufNewFile *.d  map <F5> :w<CR>:!dmd -debug -run %<CR>
:autocmd BufRead,BufNewFile *.d  map <F6> :w<CR>:!dmd -debug -unittest -run %<CR>

其实是这样的,查看本页源代码,就能从中找到_vimrc的配置。
替换掉双引号,大于,小于符号就可以了

PS:
代码标签显示得不对,网站bug,试试用quote标签?
而且,显示_vimrc文本的时候很慢,firefox都提示是否停止进行js
9 楼 qyqx 2007-04-03  
引用
我贴出我的 _vimrc 参考一下:

看不到代码,可以发可我吗?谢谢。qyqxt@hotmail.com
8 楼 oldrev 2007-04-02  
引用
我都是照着做的,可是还没搞好,我用的是GVIM7.0 for windows, 一用VIM打开D文件就提示:
"D:\ASM.d" 20L, 382C
找不到映射
请按ENTER或其它命令继续


我贴出我的 _vimrc 参考一下:
scriptencoding utf-8

"-----------------------------------------------------------------------
"BaSS vimrc based con ciaran
"-----------------------------------------------------------------------

"-----------------------------------------------------------------------
" terminal setup
"-----------------------------------------------------------------------

" Extra terminal things
" set termencoding=utf-8

"if exists('&t_SI')
"    let &t_SI = "\<Esc>]12;lightgoldenrod\x7"
"    let &t_EI = "\<Esc>]12;grey80\x7"
"endif

"-----------------------------------------------------------------------
" settings
"-----------------------------------------------------------------------

" Don't be compatible with vi
set nocompatible

" Enable a nice big viminfo file
set viminfo='1000,f1,:1000,/1000
set history=500

" Make backspace delete lots of things
set backspace=indent,eol,start

" Create backups
"set backup

" Show us the command we're typing
set showcmd

" Highlight matching parens
set showmatch

" Search options: incremental search, highlight search
" set hlsearch

" Selective case insensitivity
set ignorecase
set infercase

" Show full tags when doing search completion
set showfulltag

" Speed up macros
set lazyredraw

" No annoying error noises
set noerrorbells
set visualbell t_vb=
if has("autocmd")
    autocmd GUIEnter * set visualbell t_vb=
endif

" Try to show at least three lines and two columns of context when
" scrolling
set scrolloff=3
set sidescrolloff=2

" Wrap on these
set whichwrap+=<,>,[,]

" Use the cool tab complete menu
set wildmenu
set wildignore+=*.o,*~,*.obj
set suffixes+=.in,.a

" Allow edit buffers to be hidden
set hidden

" 1 height windows
set winminheight=1

" Enable syntax highlighting
if has("syntax")
    syntax on
endif

" Set our fonts
if has("gui_running")
    "set guifont=Raize:h10
    set guifont=Consolas:h10.5:cANSI
endif

"中文效果测试"
" Try to load a nice colourscheme

" No icky toolbar, menu or scrollbars in the GUI
if has('gui')
    set guioptions+=b
"    set guioptions-=m
    set guioptions-=T
"    set guioptions-=l
"    set guioptions-=L
"    set guioptions-=r
"    set guioptions-=R
end

" By default, go for an indent of 4 tab stuff
" set expandtab //讨厌换成空格
set expandtab
set shiftwidth=4
set tabstop=4

" Do clever indent things. Don't make a # force column zero.
set autoindent
set smartindent
inoremap # X<BS>#

" Enable folds
"if has("folding")
"    set foldenable
"    set foldmethod=indent
"endif

" Syntax when printing
set popt+=syntax:y

" Enable filetype settings
if has("eval")
    filetype on
    filetype plugin on
    filetype indent on
endif

" Enable modelines only on secure vim versions
if (v:version >= 604)
    set modeline
else
    set nomodeline
endif

" Nice statusbar
set laststatus=2
set statusline=
set statusline+=#%n\                " buffer number
set statusline+=%f\                          " file name
set statusline+=%h%1*%m%r%w%0*               " flags
set statusline+=\[%{strlen(&ft)?&ft:'none'}, " filetype
set statusline+=%{&encoding},                " encoding
set statusline+=%{&fileformat}]              " file format
if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
    set statusline+=\ %{VimBuddy()}          " vim buddy
endif
set statusline+=%=                           " right align
set statusline+=0x%-8B\                   " current char
set statusline+=%-14.(%l,%c%V%)\ %<%P        " offset

"set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'


"set encoding=unicode
set encoding=utf-8
set fileencodings=utf-8,chinese,ucs-bom
set ambiwidth=double



set langmenu=zh_CN.utf-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8



filetype plugin on
filetype on
filetype indent on

set autoindent              

set cindent shiftwidth=4
set autoindent shiftwidth=4 
"set mouse=a             " use the mouse


set sm
set cin

" DISPLAY OPTIONS
set number        
set ruler          
"set notitle    

if (has("gui_running"))
    set wrap     
    set showtabline=2
    colorscheme torte
	set cursorline
	"hi LineNr guibg=darkgrey ctermbg=darkgrey guifg=white ctermfg=grey

	if has('multi_byte_ime')
		highlight Cursor guibg=white guifg=black
	    highlight CursorIM guibg=yellow guifg=black
	endif
else              
    set wrap     
    colorscheme torte
endif




let Tlist_Auto_Open=1

if version >= 603
	set helplang=cn
endif


map <F2> :set hlsearch!<CR>

map <F7> :wa<CR>:make<CR>
imap <F7> <ESC>:wa<CR>:make<CR>


imap <F3> <ESC>:wa<CR>a
map <F3> :wa<CR>
nnoremap <silent> <F8> :TlistToggle<CR>
nnoremap <C-Enter> :WinFullScreen<CR> 


set diffexpr=MyDiff()
function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction


:autocmd BufRead,BufNewFile *.cmake,CMakeLists.txt,*.cmake.in runtime! indent/cmake.vim 
:autocmd BufRead,BufNewFile *.cmake,CMakeLists.txt,*.cmake.in setf cmake

:autocmd BufRead,BufNewFile *.py,*.python  map <F5> :w<CR>:!python %<CR>
:autocmd BufRead,BufNewFile *.rb,*.ruby  map <F5> :w<CR>:!ruby %<CR>

:autocmd BufRead,BufNewFile *.d  map <F5> :w<CR>:!dmd -debug -run %<CR>
:autocmd BufRead,BufNewFile *.d  map <F6> :w<CR>:!dmd -debug -unittest -run %<CR>

:autocmd BufRead,BufNewFile *.c,*.cpp,*.cxx,*.cc  map <F5> :wa<CR>:!gcc %<CR>  :!%<<CR>

:autocmd BufRead,BufNewFile SConstruct,SConscript runtime! indent/python.vim 
:autocmd BufRead,BufNewFile SConstruct,SConscript setfiletype python
:autocmd BufRead,BufNewFile SConstruct map <F5> :wa<CR>:!scons -Q<CR>

7 楼 qyqx 2007-04-02  
我都是照着做的,可是还没搞好,我用的是GVIM7.0 for windows, 一用VIM打开D文件就提示:
         "D:\ASM.d" 20L, 382C
         找不到映射
          请按ENTER或其它命令继续
                      
6 楼 oldrev 2007-03-30  
F5键要在普通(Normal)模式下
要想在插入模式下也能按F5运行,请将下面的脚本加入 .vimrc(或_vimrc):
:autocmd BufRead,BufNewFile *.d  imap  <ESC>:w:make 
5 楼 smithfox 2007-03-30  
I try vim, thank you.
But can't press F5 to debug.
4 楼 oldrev 2007-03-30  
引用
为什么用VIM打开d文件,提示说没有映射,按F5没效果.

只要按上面的步骤做应该没问题
3 楼 qyqx 2007-03-30  
为什么用VIM打开d文件,提示说没有映射,按F5没效果.
2 楼 ideage 2007-03-30  
试验了.很好.的确方便.F5搞定了.写测试项目合适.
1 楼 oldrev 2007-03-30  
难道没人用vim?

相关推荐

    Hacking Vim

    或命令行下 vim –d file1 file2 可进行文件比较 [c 前一差别 ]c 后一差别 2.19缩进 &gt;% 缩进块中内容 反缩进块中内容 &gt;i{ {内部缩进(不包括{}) &gt;a{ {内容缩进(包括{}) 反缩进 反缩进 2.20使用文件模板 :autocmd ...

    vim-cheat-sheet:Vim作弊表,有用的命令和信息

    Vim是一个功能强大的文本编辑器,该文档并不详尽。 Vim语言 Vim命令由动词和目标组合而成。 目标可以是对象(单词,句子,段落,行,括号的内容)或动作(跳至单词的末尾,跳至段落的末尾,向前跳至字母“ e”等)...

    Wim编辑器精通之路

     与其它的类Vi编辑器相比, Vim拥有众多的特性: 对180多种语言的语法高亮功能, 对C语言的自动缩进, 以及一个功能强大的内置脚本语言. 对每个人来说, Vim总有让他们喜欢的东西. Vim的开发仍然在继续进行, 写作本文时...

    vim-textobj-function:Vim插件:函数的文本对象

    vim-textobj-function vim-textobj-function是一个用于功能... 因此,在编辑之前必须将函数的语法告知vim-textobj-function。 默认情况下,支持以下语言: C语言JavaVim脚本(包括特定于语法) 要支持新语言,请参阅:

    fedora15环境搭建

    本文将指导用户在 Fedora 15 环境中进行环境搭建,包括 VIM 配置、网络配置、Samba 配置和防火墙配置。 一、VIM 配置 在 Fedora 15 中,VIM 是默认的文本编辑器。为了提高编程效率,我们需要对 VIM 进行配置。我们...

    Windows下的文本编辑器-flexedit

    能够高亮显示的语言列表有:ada, asm, asn1, au3, ave, baan, blitzbasic, bullant, caml, cmake, conf, cpp, csound, css, d, ed, eiffel, Embedded, erlang, escript, flagship, forth, fortran, freebasic, gap, ...

    Sublime Text编辑器

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 2这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 2都是...

    neovim:Vim-fork专注于可扩展性和可用性

    产品特点现代 从任何语言进行,包括C / C ++,C#,Clojure,D,Elixir,Go,Haskell,Java,JavaScript / Node.js,Julia,Lisp,Lua,Perl,Python,Racket,Ruby,Rust 嵌入式可编写脚本的异步多个编辑器实例之间...

    神级代码编辑软件(Sublime Text 3) 3083 汉化 绿色 注册版

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 2这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 2都是...

    安卓语法高亮编辑器HighlightTextEditor.zip

    代码编辑界面   历史记录 a199ea2 - (HEAD, origin/master, master) 图片宽度修改 (evilbinary) 046d56e - 高亮基本版本完成 (evilbinary) ...

    sublime text 3

    Sublime Text 3是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点; 它体积小巧,无需安装,绿色便携;它可跨平台支持Windows/Mac/Linux;支持32与64位操作系统,它在支持语法高亮、...

    Sublime Text Build 3083 x64 汉化破解版 win64

    C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。...

    doom-d:末日emacs配置

    Doom Emacs配置每个人都喜欢感染了Vim的滚动发布文本编辑器/操作系统! 这是我的日常驱动程序配置,具有对各种语言(lsp-mode和company-capf),终端仿真器(vterm),git(magit),电子邮件(mu4e + mbsync),...

    sublime text build 3080 汉化破解版 win32

    C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。...

    Sublime Text Build 3083 汉化破解版 win32

    C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。...

    sublime text build 3080 汉化破解版 win64

    C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。...

    Sublime Text 3093破解版

    C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。...

    Sublime Text 3 优化版.7z

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 都是...

    SublimeText 3中文版

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 都是...

    Sublime Text 2.rar

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 2这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 2都是...

Global site tag (gtag.js) - Google Analytics