diff --git a/README b/README index 3bcbb3d..b383fae 100644 --- a/README +++ b/README @@ -1,323 +1,61 @@ -在fedora上用vim打造一个php集成开发环境(ide) +在linux终端下用vim打造一个php集成开发环境(ide) 1 安装vim yum install vim-X11.x86_64 vim-common.x86_64 vim-enhanced.x86_64 vim-minimal.x86_64 -2 创建配置文件 -touch ~/.vimrc - -3 我的配置文件 -" .vimrc -" See: http://vimdoc.sourceforge.net/htmldoc/options.html for details - -"设定 gvim 运行在增强模式下,不使用vi的键盘模式 -set nocompatible -"设置支持多语言,解决乱码 -set encoding=utf-8 -set fileencodings=utf-8,gbk,default,latin1 -"设置字体,配色方案 -if has("gui_running") -set guifont=Courier\ New\ 14 -" on windows,use "set guifont=Courier:14 " -"设置配色方案 -" colorscheme oceandeep -endif - -"基本编辑器设置 -set number "显示行号 -set expandtab "编辑时将所有 Tab 替换为空格 -set shiftwidth=2 "自动缩进的时候,缩进尺寸为2个空格 -set tabstop=2 "设置 softtabstop 为 2. 输入 tab 后就跳了2格 -"对于不同类型的文件,进行自定义设置 -au FileType html,python,vim,javascript,css setl shiftwidth=2 -au FileType html,python,vim,javascript,css setl tabstop=2 -au FileType java,php setl shiftwidth=4 -au FileType java,php setl tabstop=4 - -set textwidth=80 "设置每行的最大字符数,超过的话,将换行 -set hlsearch "搜索时高亮显示 -set incsearch "输入搜索内容时就显示搜索结果 -set fileformat=unix "文本格式 -set nobackup "覆盖文件时不备份 - -set ruler "打开状态栏标尺 -set laststatus=2 "显示状态栏 (默认值为 1, 无法显示状态栏) -set cmdheight=1 "设定命令行的行数为 1 - -set showtabline=2 "显示tab标签 -set tabline+=%f "tab标签 -" Enable Code Folding -set foldenable -set foldmethod=syntax -set mouse=a "任何情况都可以使用鼠标) - -"去掉错误声音 -set vb t_vb= -"工作目录随文件变 -autocmd BufEnter * cd %:p:h -"设置状态栏 -set statusline=%F%m%r,%Y,%{&fileformat}\ \ \ ASCII=\%b,HEX=\%B\ \ \ %l,%c%V\ -%p%%\ \ \ [\ %L\ lines\ in\ all\ ] -"不显示工具条 -set guioptions-=T -set backspace=indent,eol,start "不设定的话在插入状态无法用退格键和 Delete -filetype on "设置文件类型的检测 -filetype plugin on "为特定的文件类型允许插件文件的载入 - -"按住ctrl键,移动方向键时,以峰驼的方式 -nnoremap :cal -search('\<\\U\@<=\u\\u\ze\%(\U\&\>\@!\)\\%^','bW') -nnoremap :cal -search('\<\\U\@<=\u\\u\ze\%(\U\&\>\@!\)\\%$','W') -inoremap :cal -search('\<\\U\@<=\u\\u\ze\%(\U\&\>\@!\)\\%^','bW') -inoremap :cal -search('\<\\U\@<=\u\\u\ze\%(\U\&\>\@!\)\\%$','W') - -"php语法检查 -setlocal makeprg=\/usr/bin/php\ -l\ -n\ -d\ html_errors=off\ % -setlocal errorformat=%m\ in\ %f\ on\ line\ %l -"autocmd BufWritePost *.php,*.phps :make -map :w:noh:make - -"Disable phpsyntax based indenting for .php files -au BufRead,BufNewFile *.php set indentexpr= | set smartindent -au BufRead,BufNewFile *.phps set filetype=php - -5 插件配置 - -1)集成NERDTree实现目录导航 -wget https://github.com/scrooloose/nerdtree/tarball/master -tar zxvf scrooloose-nerdtree-4.1.0-35-g1cd5048.tar.gz -cp doc/NERD_tree.txt /usr/share/vim/vimfiles/doc/ -cp plugin/NERD_tree.vim /usr/share/vim/vimfiles/plugin/ -cp -fr nerdtree_plugin/ /usr/share/vim/vimfiles/ -最后在 .vimrc 添加如下内容: - -"NERDTree -map :NERDTreeToggle -let NERDTreeIgnore=['\.svn$','\.bak$'] - -通过F10即可调出目录导航,通过键盘ctrl+w+w可以在导航和编辑中的文件之前切换焦点。“u”可到上一级目录,回车则展开文件夹 - -2)集成task list url:http://www.vim.org/scripts/script.php?script_id=2607 -cp tasklist.vim /usr/share/vim/vimfiles/plugin/ -通过":TaskList"可以列出代码中的TODO和FIXME列表,将鼠标移动到相应的项目上时,会关闭列表窗口,并跳转到代码指定的位置 - -3)集成tag list url:http://www.vim.org/scripts/script.php?script_id=273 -taglist 可以列出已打开文件中定义的类、函数、常量,甚至变量。 -cp plugin/taglist.vim /usr/share/vim/vimfiles/plugin/ -cp doc/taglist.txt /usr/share/vim/vimfiles/doc/ -最后在 .vimrc 添加如下内容: - -"taglist -set tags=tags;/ -let Tlist_Ctags_Cmd="/usr/bin/ctags" -map :TlistToggle -let Tlist_Auto_Highlight_Tag = 1 -let Tlist_Auto_Open = 0 -let Tlist_Auto_Update = 1 -let Tlist_Close_On_Select = 0 -let Tlist_Compact_Format = 0 -let Tlist_Display_Prototype = 0 -let Tlist_Display_Tag_Scope = 1 -let Tlist_Enable_Fold_Column = 0 -let Tlist_Exit_OnlyWindow = 0 -let Tlist_File_Fold_Auto_Close = 0 -let Tlist_GainFocus_On_ToggleOpen = 1 -let Tlist_Hightlight_Tag_On_BufEnter = 1 -let Tlist_Inc_Winwidth = 0 -let Tlist_Max_Submenu_Items = 1 -let Tlist_Max_Tag_Length = 30 -let Tlist_Process_File_Always = 0 -let Tlist_Show_Menu = 0 -let Tlist_Show_One_File = 0 -let Tlist_Sort_Type = "order" -let Tlist_Use_Horiz_Window = 0 -let Tlist_Use_Right_Window = 0 -let Tlist_WinWidth = 40 -let tlist_php_settings = 'php;c:class;i:interfaces;d:constant;f:function' - -map :tab split:exec("tag ".expand("")) -map :vsp :exec("tag ".expand("")) - -需要安装ctags,本文采用yum安装,如需编译安装,请参见其他资料。 +2 配置 +mv /usr/share/vim/vimfiles /usr/share/vim/vimfiles_bak +cd /usr/share/vim +git clone git@github.com:jqlblue/php-vim.git +3 更新ctags +为了配合taglist,需要ctags的版本大于5.8 +安装完成后 +ln -s /path/ctags/bin/ctags /usr/bin/ctags + +4 快捷键一览 +F2:toggle NERDTree(目录导航),通过键盘ctrl+w+w可以在导航和编辑中的文件之前切换焦点。"u"可到上一级目录,回车则展开文件夹 +F3:tag list +F6:可以按照zend的标准对代码进行检查 +ctrl+p:当光标在函数名所在行时,按此快捷键,可以为函数自动添加代码注释。当光标在类名所在行时,按此快捷键,可以为类自动添加代码注释 +ctrl+a:在可视模式下选中相关代码,按此快捷键,可以实现选中代码内'=','=>'两边代码的自动对齐 +shift+t:可以列出代码中的TODO和FIXME列表,将鼠标移动到相应的项目上时,会关闭列表窗口,并跳转到代码指定的位置 +ctrl+c:在可视模式下,选中代码,按此快捷键,即批量注释代码,再按就取消注释 +ctrl+h: 在插入模式下,按此快捷键,即可调出光标所在php函数的说明,参数,返回值 +z+f:选中代码,按此快捷键,实现代码折叠,按空格打开折叠 +z+c:进行代码折叠 +z+o:展开代码折叠 + +5 其他功能 +自动完成 +在插入模式下按tab键,可以实现php自动完成 +taglist 通过ctags -R生成tags后,可以使用如下快捷键: ctrl+] - 跳转到定义处 ctrl+t - 从定义处跳转回来 ctrl+w ctrl+] - 水平分割窗口,并在上部打开定义所在文件,跳转到定义处 ctrl+\ - 打开新标签页。并跳转到定义处 alt+] - 垂直分割窗口,并在右部打开定义所在文件,跳转到定义处 - -ctrl+鼠标左键 - 跳转到定义处 -ctrl+鼠标右键 - 从定义处跳转回来 - -4)集成php-doc url http://www.vim.org/scripts/script.php?script_id=1355 -cp php-doc.vim /usr/share/vim/vimfiles/plugin/ - -最后在 .vimrc 添加如下内容: -"在通常模式(n)和插入模式(i),按ctrl+p插入注释 -inoremap ^[:call PhpDocSingle()i -nnoremap :call PhpDocSingle() -"选择多行,在可视模式(v)下,对选中的多行插入注释 -vnoremap :call PhpDocRange() - -5)集成PHPM url http://eide.org/2009/01/02/phpm/ -cp -fr phpm /usr/share/vim/vimfiles -最后在 .vimrc 添加如下内容: - -" Map -H to search phpm for the function name currently under the cursor -(insert mode only) -inoremap :!/usr/share/vim/vimfiles/phpm/phpm -=expand("") -在插入模式下,按ctrl+h,即可调出光标在函数的说明,参数,返回值 - -6)集成funclist,实现自动完成 url -http://svn.php.net/viewvc/phpdoc/doc-base/trunk/funclist.txt -cp funclist.txt /usr/share/vim/vimfiles -最后在 .vimrc 添加如下内容: - -setlocal dictionary-=/usr/share/vim/vimfiles/funclist.txt -dictionary+=/usr/share/vim/vimfiles/funclist.txt -" Use the dictionary completion -setlocal complete-=k complete+=k - -func! InsertTabWrapper() - let col = col('.') - 1 - if !col || getline('.')[col - 1] !~ '\k' - return "\" - else - return "\" - endif -endfunction - -" Remap the tab key to select action with InsertTabWrapper -inoremap =InsertTabWrapper() -在插入模式下,按tab,即可调出函数列表 - -7)在任意模式下,按";"在行尾输入添加";",如果没有";"的话 -noremap ; :s/\([^;]\)$/\1;/ - -8)配置 PhpAlign,手动格式代码的对齐 -在 .vimrc 添加如下内容: - -" Map -a to alignment function -vnoremap :call PhpAlign() - -func! PhpAlign() range - let l:paste = &g:paste - let &g:paste = 0 - - let l:line = a:firstline - let l:endline = a:lastline - let l:maxlength = 0 - while l:line <= l:endline - " Skip comment lines - if getline (l:line) =~ '^\s*\/\/.*$' - let l:line = l:line + 1 - continue - endif - " \{-\} matches ungreed * - let l:index = substitute (getline (l:line), -'^\s*\(.\{-\}\)\s*\S\{0,1}=\S\{0,1\}\s.*$', '\1', "") - let l:indexlength = strlen (l:index) - let l:maxlength = l:indexlength > l:maxlength ? l:indexlength : -l:maxlength - let l:line = l:line + 1 - endwhile - - let l:line = a:firstline - let l:format = "%s%-" . l:maxlength . "s %s %s" - - while l:line <= l:endline - if getline (l:line) =~ '^\s*\/\/.*$' - let l:line = l:line + 1 - continue - endif - let l:linestart = substitute (getline (l:line), '^\(\s*\).*', '\1', "") - let l:linekey = substitute (getline (l:line), -'^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\1', "") - let l:linesep = substitute (getline (l:line), -'^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\2', "") - let l:linevalue = substitute (getline (l:line), -'^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\3', "") - - let l:newline = printf (l:format, l:linestart, l:linekey, l:linesep, -l:linevalue) - call setline (l:line, l:newline) - let l:line = l:line + 1 - endwhile - let &g:paste = l:paste -endfunc -在可视模式下,选中代码,按ctrl+a,即可格式代码的对齐 - -9)配置 PhpUnComment,批量注释代码 -在 .vimrc 添加如下内容: - -vnoremap :call PhpUnComment() - -func! PhpUnComment() range - let l:paste = &g:paste - let &g:paste = 0 - - let l:line = a:firstline - let l:endline = a:lastline - - while l:line <= l:endline - if getline (l:line) =~ '^\s*\/\/.*$' - let l:newline = substitute (getline (l:line), -'^\(\s*\)\/\/ \(.*\).*$', '\1\2', '') - else - let l:newline = substitute (getline (l:line), -'^\(\s*\)\(.*\)$', '\1// \2', '') - endif - call setline (l:line, l:newline) - let l:line = l:line + 1 - endwhile - - let &g:paste = l:paste -endfunc -在可视模式下,选中代码,按ctrl+c,即批量注释代码,再按就取消注释 - -10)设置自动补齐 -在 .vimrc 添加如下内容: - -inoremap { {}O - -inoremap [ [] - -" Standard mapping after PEAR coding standard -inoremap ( () -" inoremap ( () - -" Maybe this way in other coding standards -" inoremap ( ( ) - -inoremap " "" -inoremap ' '' -11)在文件夹中查找 -:vimgrep /pattern/gj ./**/*.php -这哥命令告诉vim,在当前目前下的所有.php文件中全局查找符合pattern的结果。 +在行尾输入添加";" +在普通模式下,按";"在行尾输入添加";",如果没有";"的话 +在文件夹中查找 +:vimgrep /pattern/gj ./*/.php +这命令告诉vim,在当前目前下的所有.php文件中全局查找符合pattern的结果。 运行 :cw -会列出查找结果。 - -11)转换大小写 +会列出查找结果 +转换大小写 ~ 转换当前光标所在字符的大小写 -u 将选中的字符全转成小写 -U 将选中的字符全转成大写 +u 将选中的字符全转成小写 +U 将选中的字符全转成大写 UV 将当前行转成大写 guw 将当前的单词转成小写 - -12)排序 -vim在linux上,可以通过在命令模式下输入相关命令,进行文本的排序 -%!sort -u 排序时,删除重复的行 -%!sort -f 排序时,忽略大小写 +排序 +!sort -u 排序时,删除重复的行 +!sort -f 排序时,忽略大小写 %!sort -r 进行逆向排序 排序时,都是以行为单位。按照字典顺序,如:a-z, 0-100的顺序进行排序 sort /pattern/ 可以在排序时,过滤掉正则匹配到的字符。 -sort /^./ 将不是按照第一个字符排序,而是过滤掉第一个字符,从第二个开始。正则表达式/^./匹配开头的第一个字符。 - +sort /./ 将不是按照第一个字符排序,而是过滤掉第一个字符,从第二个开始。正则表达式/./匹配开头的第一个字符 参考链接 http://eide.org/category/php/ diff --git a/hotkeys b/hotkeys index 831e939..3807056 100644 --- a/hotkeys +++ b/hotkeys @@ -1,33 +1,45 @@ -some shortcut keys in use php-vim - -f3 - show tag list,press agian to close -f2 - show NERD_tree,press again to close -[v,i]ctrl+p - 在可视和插入模式下,调用phpdoc会函数和类添加phpdocument -[v]ctrl+a - 在可视模式下,调用phpAlign对代码格式进行对齐 -[i]ctrl+h - 在插入模式下,调用phpm打开php函数的定义 -[v]ctrl+c - 注释代码块或者行,再按一下则取消注释 -[v,i]ctrl+方向键 - 以峰驼的形式,跳转到上一处或者下一处 - +快捷键一览 + +F2:toggle NERDTree(目录导航),通过键盘ctrl+w+w可以在导航和编辑中的文件之前切换焦点。“u”可到上一级目录,回车则展开文件夹 +F6:可以按照zend的标准对代码进行检查 +ctrl+p:当光标在函数名所在行时,按此快捷键,可以为函数自动添加代码注释。当光标在类名所在行时,按此快捷键,可以为类自动添加代码注释 +ctrl+a:在可视模式下选中相关代码,按此快捷键,可以实现选中代码内‘=’,‘=>’两边代码的自动对齐 +shift+t:可以列出代码中的TODO和FIXME列表,将鼠标移动到相应的项目上时,会关闭列表窗口,并跳转到代码指定的位置 +ctrl+c:在可视模式下,选中代码,按此快捷键,即批量注释代码,再按就取消注释 +ctrl+h: 在插入模式下,按此快捷键,即可调出光标所在php函数的说明,参数,返回值 +z+f:选中代码,按此快捷键,实现代码折叠,按空格打开折叠 +z+c:进行代码折叠 +z+o:展开代码折叠 + +其他功能 + +自动完成 +在插入模式下按tab键,可以实现php自动完成 +taglist +通过ctags -R生成tags后,可以使用如下快捷键: ctrl+] - 跳转到定义处 ctrl+t - 从定义处跳转回来 ctrl+w ctrl+] - 水平分割窗口,并在上部打开定义所在文件,跳转到定义处 ctrl+\ - 打开新标签页。并跳转到定义处 alt+] - 垂直分割窗口,并在右部打开定义所在文件,跳转到定义处 - - -ctrl+鼠标左键 - 跳转到定义处 -ctrl+鼠标右键 - 从定义处跳转回来 - -some command in use php-vim - -:tabnew[:tabe] - 打开新的标签页 -:tabclose[:tabc] - 关闭正在打开的标签页 -:vimgrep - 在文件夹中查找 - 在当前目录下查找含有“getInfo”的php文档,但不跳到第一个匹配 - :vimgrep /getInfo/gj ./*/*.php - 如果要包含子文件夹,则用 - :vimgrep /getInfo/gj ./**/*.php - :vim[grep][!] /{pattern}/[g][j] {file} -:cw - 打开quickfix窗口查看匹配结果 - - +在行尾输入添加";" +在普通模式下,按";"在行尾输入添加";",如果没有";"的话 +在文件夹中查找 +:vimgrep /pattern/gj ./**/*.php +这命令告诉vim,在当前目前下的所有.php文件中全局查找符合pattern的结果。 +运行 +:cw +会列出查找结果 +转换大小写 +~ 转换当前光标所在字符的大小写 +u 将选中的字符全转成小写 +U 将选中的字符全转成大写 +UV 将当前行转成大写 +guw 将当前的单词转成小写 +排序 +!sort -u 排序时,删除重复的行 +!sort -f 排序时,忽略大小写 +%!sort -r 进行逆向排序 +排序时,都是以行为单位。按照字典顺序,如:a-z, 0-100的顺序进行排序 +sort /pattern/ 可以在排序时,过滤掉正则匹配到的字符。 +sort /^./ 将不是按照第一个字符排序,而是过滤掉第一个字符,从第二个开始。正则表达式/^./匹配开头的第一个字符 \ No newline at end of file diff --git a/ptags.cpp b/ptags.cpp deleted file mode 100644 index b012c9f..0000000 --- a/ptags.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// Save this file as ptags.cpp and compile by -// g++ -o ptags ptags.cpp -//***************************************************************** -// Copyright policy is GNU/GPL but additional request is -// that you include author's name and email on all copies -// Author : Al Dev Email: alavoor@yahoo.com -// Usage : ptags *.php3 *.inc -// This will generate a file called tags -//***************************************************************** -#include -#include -#include // for sprintf -#include // for system -#include // for memset -#include // for isspace - -#define BUFF_LEN 1024 -#define LOCATION 9 -using namespace std; - -char *ltrim(char *dd); -char *rtrim(char *ee); - -main(int argc, char **argv) -{ - if (argc < 2) - { - cerr << "\nUsage: " << argv[0] << " file .... " << endl; - exit(0); - } - - char fname[100] = "tag_file.out"; - FILE *fpout; - ofstream fout(fname); - if (fout.fail()) - { - cerr << "\nError opening file : " << fname << endl; - exit(-1); - } - //fpout = fopen(fname, "w"); - - for (int ii = 1; ii < argc; ii++) - { - /* - char buff[2024]; - - sprintf(buff, "\\rm -f %s; ls %s > %s 2>/dev/null", outfile, argv[1], outfile); - cout << "\nbuff = " << buff << endl; - - system(buff); - fclose(fp); - */ - FILE *fpin = NULL; - fpin = fopen(argv[ii], "r"); - if (fpin == NULL) - { - cerr << "\nError opening file : " << argv[ii] << endl; - exit(-1); - } - char buff[BUFF_LEN + 100]; - memset(buff, 0, BUFF_LEN +10); - for ( ; fgets(buff, BUFF_LEN, fpin) != NULL; ) - { - char aa[BUFF_LEN + 100]; - char aapointer[BUFF_LEN + 100]; - memset(aa, 0, BUFF_LEN +10); - strcpy(aa, buff); - strcpy(aapointer, ltrim(aa)); - strcpy(aa, aapointer); - - // Remove the trailing new line.. - { - int tmpii = strlen(aa); - if (aa[tmpii-1] == '\n') - aa[tmpii-1] = 0; - } - //cout << "aa is : " << aa << endl; - //cout << "aapointer is : " << aapointer << endl; - if (strncmp(aa, "function ", LOCATION) != 0) - continue; - //cout << buff << endl; - - // Example tags file output is like - - // al2 al.c /^al2()$/;" f - { - char bb[BUFF_LEN + 100]; - memset(bb, 0, BUFF_LEN +10); - strcpy(bb, & aa[LOCATION]); - char *cc = bb; - while (cc != NULL && *cc != '(') - *cc++; - *cc = 0; - cc = rtrim(bb); - //cout << "bb is : " << bb << endl; - //cout << cc << "\t" << argv[ii] << "\t" << "/^" << aa << "$/;\"\tf" << endl; - fout << cc << "\t" << argv[ii] << "\t" << "/^" << aa << "$/;\"\tf" << endl; - //fprintf(fpout, "%s\t%s\t/^%s$/;\"f\n", cc, argv[ii], aa ); - } - - memset(buff, 0, BUFF_LEN +10); - } - fclose(fpin); - } - fout.flush(); - fout.close(); - //fclose(fpout); - - // Sort and generate the tag file - { - char tmpaa[1024]; - sprintf(tmpaa, "sort %s > tags; \\rm -f %s", fname, fname); - system(tmpaa); - } -} - -char *ltrim(char *dd) -{ - if (dd == NULL) - return NULL; - - while (isspace(*dd)) - dd++; - - return dd; -} - -char *rtrim(char *ee) -{ - if (ee == NULL) - return NULL; - - int tmpii = strlen(ee) - 1; - for (; tmpii >= 0 ; tmpii--) - { - if (isspace(ee[tmpii]) ) - { - //cout << "\nis a space!!" << endl; - ee[tmpii] = 0; - } - } - return ee; -} \ No newline at end of file diff --git a/vimfiles/doc/bufexplorer.txt b/vimfiles/doc/bufexplorer.txt new file mode 100644 index 0000000..06e9223 --- /dev/null +++ b/vimfiles/doc/bufexplorer.txt @@ -0,0 +1,513 @@ +*bufexplorer.txt* Buffer Explorer Last Change: 22 Oct 2010 + +Buffer Explorer *buffer-explorer* *bufexplorer* + Version 7.2.8 + +Plugin for easily exploring (or browsing) Vim |:buffers|. + +|bufexplorer-installation| Installation +|bufexplorer-usage| Usage +|bufexplorer-windowlayout| Window Layout +|bufexplorer-customization| Customization +|bufexplorer-changelog| Change Log +|bufexplorer-todo| Todo +|bufexplorer-credits| Credits + +For Vim version 7.0 and above. +This plugin is only available if 'compatible' is not set. + +{Vi does not have any of this} + +============================================================================== +INSTALLATION *bufexplorer-installation* + +To install: + - Download the bufexplorer.zip. + - Extract the zip archive into your runtime directory. + The archive contains plugin/bufexplorer.vim, and doc/bufexplorer.txt. + - Start Vim or goto an existing instance of Vim. + - Execute the following command: +> + :helptag /doc +< + This will generate all the help tags for any file located in the doc + directory. + +============================================================================== +USAGE *bufexplorer-usage* + +To start exploring in the current window, use: > + \be or :BufExplorer +To start exploring in a newly split horizontal window, use: > + \bs or :BufExplorerHorizontalSplit +To start exploring in a newly split vertical window, use: > + \bv or :BufExplorerVerticalSplit + +If you would like to use something other than '\', you may simply change the +leader (see |mapleader|). + +Note: If the current buffer is modified when bufexplorer started, the current + window is always split and the new bufexplorer is displayed in that new + window. + +Commands to use once exploring: + + Toggle help information. + Opens the buffer that is under the cursor into the current + window. + Opens the buffer that is under the cursor into the current + window. + Opens the buffer that is under the cursor in another tab. + d |:delete|the buffer under the cursor from the list. The + buffer's 'buflisted' is cleared. This allows for the buffer to + be displayed again using the 'show unlisted' command. + R Toggles relative path/absolute path. + T Toggles to show only buffers for this tab or not. + D |:wipeout|the buffer under the cursor from the list. When a + buffers is wiped, it will not be shown when unlisted buffer are + displayed. + f Toggles whether you are taken to the active window when + selecting a buffer or not. + o Opens the buffer that is under the cursor into the current + window. + p Toggles the showing of a split filename/pathname. + q Quit exploring. + r Reverses the order the buffers are listed in. + s Selects the order the buffers are listed in. Either by buffer + number, file name, file extension, most recently used (MRU), or + full path. + t Opens the buffer that is under the cursor in another tab. + u Toggles the showing of "unlisted" buffers. + +Once invoked, Buffer Explorer displays a sorted list (MRU is the default +sort method) of all the buffers that are currently opened. You are then +able to move the cursor to the line containing the buffer's name you are +wanting to act upon. Once you have selected the buffer you would like, +you can then either open it, close it(delete), resort the list, reverse +the sort, quit exploring and so on... + +=============================================================================== +WINDOW LAYOUT *bufexplorer-windowlayout* + +------------------------------------------------------------------------------- +" Press for Help +" Sorted by mru | Locate buffer | Absolute Split path +"= + 01 %a bufexplorer.txt C:\Vim\vimfiles\doc line 87 + 02 # bufexplorer.vim c:\Vim\vimfiles\plugin line 1 +------------------------------------------------------------------------------- + | | | | | + | | | | +-- Current Line #. + | | | +-- Relative/Full Path + | | +-- Buffer Name. + | +-- Buffer Attributes. See|:buffers|for more information. + +-- Buffer Number. See|:buffers|for more information. + +=============================================================================== +CUSTOMIZATION *bufexplorer-customization* + + *g:bufExplorerChgWin* +If set, bufexplorer will bring up the selected buffer in the window specified +by g:bufExplorerChgWin. + + *g:bufExplorerDefaultHelp* +To control whether the default help is displayed or not, use: > + let g:bufExplorerDefaultHelp=0 " Do not show default help. + let g:bufExplorerDefaultHelp=1 " Show default help. +The default is to show the default help. + + *g:bufExplorerDetailedHelp* +To control whether detailed help is display by, use: > + let g:bufExplorerDetailedHelp=0 " Do not show detailed help. + let g:bufExplorerDetailedHelp=1 " Show detailed help. +The default is NOT to show detailed help. + + *g:bufExplorerFindActive* +To control whether you are taken to the active window when selecting a buffer, +use: > + let g:bufExplorerFindActive=0 " Do not go to active window. + let g:bufExplorerFindActive=1 " Go to active window. +The default is to be taken to the active window. + + *g:bufExplorerFuncRef* +When a buffer is selected, the functions specified either singly or as a list +will be called. + + *g:bufExplorerReverseSort* +To control whether to sort the buffer in reverse order or not, use: > + let g:bufExplorerReverseSort=0 " Do not sort in reverse order. + let g:bufExplorerReverseSort=1 " Sort in reverse order. +The default is NOT to sort in reverse order. + + *g:bufExplorerShowDirectories* +Directories usually show up in the list from using a command like ":e .". +To control whether to show directories in the buffer list or not, use: > + let g:bufExplorerShowDirectories=1 " Show directories. + let g:bufExplorerShowDirectories=0 " Don't show directories. +The default is to show directories. + + *g:bufExplorerShowRelativePath* +To control whether to show absolute paths or relative to the current +directory, use: > + let g:bufExplorerShowRelativePath=0 " Show absolute paths. + let g:bufExplorerShowRelativePath=1 " Show relative paths. +The default is to show absolute paths. + + *g:bufExplorerShowTabBuffer* +To control weither or not to show buffers on for the specific tab or not, use: > + let g:bufExplorerShowTabBuffer=0 " No. + let g:bufExplorerShowTabBuffer=1 " Yes. +The default is not to show. + + *g:bufExplorerShowUnlisted* +To control whether to show unlisted buffer or not, use: > + let g:bufExplorerShowUnlisted=0 " Do not show unlisted buffers. + let g:bufExplorerShowUnlisted=1 " Show unlisted buffers. +The default is to NOT show unlisted buffers. + + *g:bufExplorerSortBy* +To control what field the buffers are sorted by, use: > + let g:bufExplorerSortBy='extension' " Sort by file extension. + let g:bufExplorerSortBy='fullpath' " Sort by full file path name. + let g:bufExplorerSortBy='mru' " Sort by most recently used. + let g:bufExplorerSortBy='name' " Sort by the buffer's name. + let g:bufExplorerSortBy='number' " Sort by the buffer's number. +The default is to sort by mru. + + *g:bufExplorerSplitBelow* +To control where the new split window will be placed above or below the +current window, use: > + let g:bufExplorerSplitBelow=1 " Split new window below current. + let g:bufExplorerSplitBelow=0 " Split new window above current. +The default is to use what ever is set by the global &splitbelow +variable. + + *g:bufExplorerSplitOutPathName* +To control whether to split out the path and file name or not, use: > + let g:bufExplorerSplitOutPathName=1 " Split the path and file name. + let g:bufExplorerSplitOutPathName=0 " Don't split the path and file + " name. +The default is to split the path and file name. + + *g:bufExplorerSplitRight* +To control where the new vsplit window will be placed to the left or right of +current window, use: > + let g:bufExplorerSplitRight=0 " Split left. + let g:bufExplorerSplitRight=1 " Split right. +The default is to use the global &splitright. + +=============================================================================== +CHANGE LOG *bufexplorer-changelog* + +7.2.8 - Enhancements: + * Thanks to Charles Campbell for integrating bufexplorer with GDBMGR. + http://mysite.verizon.net/astronaut/vim/index.html#GDBMGR +7.2.7 - Fix: + * My 1st attempt to fix the "cache" issue where buffers information + has changed but the cache/display does not reflect those changes. + More work still needs to be done. +7.2.6 - Fix: + * Thanks to Michael Henry for pointing out that I totally forgot to + update the inline help to reflect the previous change to the 'd' + and 'D' keys. Opps! +7.2.5 - Fix: + * Philip Morant suggested switching the command (bwipe) associated + with the 'd' key with the command (bdelete) associated with the 'D' + key. This made sense since the 'd' key is more likely to be used + compared to the 'D' key. +7.2.4 - Fix: + * I did not implement the patch provided by Godefroid Chapelle + correctly. I missed one line which happened to be the most + important one :) +7.2.3 - Enhancements: + * Thanks to David Fishburn for helping me out with a much needed + code overhaul as well as some awesome performance enhancements. + He also reworked the handling of tabs. + * Thanks to Vladimir Dobriakov for making the suggestions on + enhancing the documentation to include a better explaination of + what is contained in the main bufexplorer window. + * Thanks to Yuriy Ershov for added code that when the bufexplorer + window is opened, the cursor is now positioned at the line with the + active buffer (useful in non-MRU sort modes). + * Yuriy also added the abiltiy to cycle through the sort fields in + reverse order. + Fixes: + * Thanks to Michael Henry for supplying a patch that allows + bufexplorer to be opened even when there is one buffer or less. + * Thanks to Godefroid Chapelle for supplying a patch that fixed + MRU sort order after loading a session. +7.2.2 - Fixes: + * Thanks to David L. Dight for spotting and fixing an issue when + using ctrl^. bufexplorer would incorrectly handle the previous + buffer so that when ctrl^ was pressed the incorrect file was opened. +7.2.1 - Fixes: + * Thanks to Dimitar for spotting and fixing a feature that was + inadvertently left out of the previous version. The feature was + when bufexplorer was used together with WinManager, you could use + the tab key to open a buffer in a split window. +7.2.0 - Enhancements: + * For all those missing the \bs and \bv commands, these have now + returned. Thanks to Phil O'Connell for asking for the return of + these missing features and helping test out this version. + Fixes: + * Fixed problem with the bufExplorerFindActive code not working + correctly. + * Fixed an incompatibility between bufexplorer and netrw that caused + buffers to be incorrectly removed from the MRU list. +7.1.7 - Fixes: + * TaCahiroy fixed several issues related to opening a buffer in a + tab. +7.1.6 - Fixes: + * Removed ff=unix from modeline in bufexplorer.txt. Found by Bill + McCarthy. +7.1.5 - Fixes: + * Could not open unnamed buffers. Fixed by TaCahiroy. +7.1.4 - Fixes: + * Sometimes when a file's path has 'white space' in it, extra buffers + would be created containing each piece of the path. i.e: + opening c:\document and settings\test.txt would create a buffer + named "and" and a buffer named "Documents". This was reported and + fixed by TaCa Yoss. +7.1.3 - Fixes: + * Added code to allow only one instance of the plugin to run at a + time. Thanks Dennis Hostetler. +7.1.2 - Fixes: + * Fixed a jumplist issue spotted by JiangJun. I overlooked the + 'jumplist' and with a couple calls to 'keepjumps', everything is + fine again. + * Went back to just having a plugin file, no autoload file. By having + the autoload, WinManager was no longer working and without really + digging into the cause, it was easier to go back to using just a + plugin file. +7.1.1 - Fixes: + * A problem spotted by Thomas Arendsen Hein. + When running Vim (7.1.94), error E493 was being thrown. + Enhancements: + * Added 'D' for 'delete' buffer as the 'd' command was a 'wipe' + buffer. +7.1.0 - Another 'major' update, some by Dave Larson, some by me. + * Making use of 'autoload' now to make the plugin load quicker. + * Removed '\bs' and '\bv'. These are now controlled by the user. The + user can issue a ':sp' or ':vs' to create a horizontal or vertical + split window and then issue a '\be' + * Added handling of tabs. +7.0.17 - Fixed issue with 'drop' command. + Various enhancements and improvements. +7.0.16 - Fixed issue reported by Liu Jiaping on non Windows systems, which was + ... + Open file1, open file2, modify file1, open bufexplorer, you get the + following error: + + --------8<-------- + Error detected while processing function + 14_StartBufExplorer..14_SplitOpen: + line 4: + E37: No write since last change (add ! to override) + + But the worse thing is, when I want to save the current buffer and + type ':w', I get another error message: + E382: Cannot write, 'buftype' option is set + --------8<-------- + +7.0.15 - Thanks to Mark Smithfield for suggesting bufexplorer needed to handle + the ':args' command. +7.0.14 - Thanks to Randall Hansen for removing the requirement of terminal + versions to be recompiled with 'gui' support so the 'drop' command + would work. The 'drop' command is really not needed in terminal + versions. +7.0.13 - Fixed integration with WinManager. + Thanks to Dave Eggum for another update. + - Fix: The detailed help didn't display the mapping for toggling + the split type, even though the split type is displayed. + - Fixed incorrect description in the detailed help for toggling + relative or full paths. + - Deprecated s:ExtractBufferNbr(). Vim's str2nr() does the same + thing. + - Created a s:Set() function that sets a variable only if it hasn't + already been defined. It's useful for initializing all those + default settings. + - Removed checks for repetitive command definitions. They were + unnecessary. + - Made the help highlighting a little more fancy. + - Minor reverse compatibility issue: Changed ambiguous setting + names to be more descriptive of what they do (also makes the code + easier to follow): + Changed bufExplorerSortDirection to bufExplorerReverseSort + Changed bufExplorerSplitType to bufExplorerSplitVertical + Changed bufExplorerOpenMode to bufExplorerUseCurrentWindow + - When the BufExplorer window closes, all the file-local marks are + now deleted. This may have the benefit of cleaning up some of the + jumplist. + - Changed the name of the parameter for StartBufExplorer from + "split" to "open". The parameter is a string which specifies how + the buffer will be open, not if it is split or not. + - Deprecated DoAnyMoreBuffersExist() - it is a one line function + only used in one spot. + - Created four functions (SplitOpen(), RebuildBufferList(), + UpdateHelpStatus() and ReSortListing()) all with one purpose - to + reduce repeated code. + - Changed the name of AddHeader() to CreateHelp() to be more + descriptive of what it does. It now returns an array instead of + updating the window directly. This has the benefit of making the + code more efficient since the text the function returns is used a + little differently in the two places the function is called. + - Other minor simplifications. +7.0.12 - MAJOR Update. + This version will ONLY run with Vim version 7.0 or greater. + Dave Eggum has made some 'significant' updates to this latest + version: + - Added BufExplorerGetAltBuf() global function to be used in the + users rulerformat. + - Added g:bufExplorerSplitRight option. + - Added g:bufExplorerShowRelativePath option with mapping. + - Added current line highlighting. + - The split type can now be changed whether bufexplorer is opened + in split mode or not. + - Various major and minor bug fixes and speed improvements. + - Sort by extension. + Other improvements/changes: + - Changed the help key from '?' to to be more 'standard'. + - Fixed splitting of vertical bufexplorer window. + Hopefully I have not forgot something :) +7.0.11 - Fixed a couple of highlighting bugs, reported by David Eggum. He also + changed passive voice to active on a couple of warning messages. +7.0.10 - Fixed bug report by Xiangjiang Ma. If the 'ssl' option is set, + the slash character used when displaying the path was incorrect. +7.0.9 - Martin Grenfell found and eliminated an annoying bug in the + bufexplorer/winmanager integration. The bug was were an + annoying message would be displayed when a window was split or + a new file was opened in a new window. Thanks Martin! +7.0.8 - Thanks to Mike Li for catching a bug in the WinManager integration. + The bug was related to the incorrect displaying of the buffer + explorer's window title. +7.0.7 - Thanks to Jeremy Cowgar for adding a new enhancement. This + enhancement allows the user to press 'S', that is capital S, which + will open the buffer under the cursor in a newly created split + window. +7.0.6 - Thanks to Larry Zhang for finding a bug in the "split" buffer code. + If you force set g:bufExplorerSplitType='v' in your vimrc, and if you + tried to do a \bs to split the bufexplorer window, it would always + split horizontal, not vertical. He also found that I had a typeo in + that the variable g:bufExplorerSplitVertSize was all lower case in + the documentation which was incorrect. +7.0.5 - Thanks to Mun Johl for pointing out a bug that if a buffer was + modified, the '+' was not showing up correctly. +7.0.4 - Fixed a problem discovered first by Xiangjiang Ma. Well since I've + been using vim 7.0 and not 6.3, I started using a function (getftype) + that is not in 6.3. So for backward compatibility, I conditionaly use + this function now. Thus, the g:bufExplorerShowDirectories feature is + only available when using vim 7.0 and above. +7.0.3 - Thanks to Erwin Waterlander for finding a problem when the last + buffer was deleted. This issue got me to rewrite the buffer display + logic (which I've wanted to do for sometime now). + Also great thanks to Dave Eggum for coming up with idea for + g:bufExplorerShowDirectories. Read the above information about this + feature. +7.0.2 - Thanks to Thomas Arendsen Hein for finding a problem when a user + has the default help turned off and then brought up the explorer. An + E493 would be displayed. +7.0.1 - Thanks to Erwin Waterlander for finding a couple problems. + The first problem allowed a modified buffer to be deleted. Opps! The + second problem occurred when several files were opened, BufExplorer + was started, the current buffer was deleted using the 'd' option, and + then BufExplorer was exited. The deleted buffer was still visible + while it is not in the buffers list. Opps again! +7.0.0 - Thanks to Shankar R. for suggesting to add the ability to set + the fixed width (g:bufExplorerSplitVertSize) of a new window + when opening bufexplorer vertically and fixed height + (g:bufExplorerSplitHorzSize) of a new window when opening + bufexplorer horizontally. By default, the windows are normally + split to use half the existing width or height. +6.3.0 - Added keepjumps so that the jumps list would not get cluttered with + bufexplorer related stuff. +6.2.3 - Thanks to Jay Logan for finding a bug in the vertical split position + of the code. When selecting that the window was to be split + vertically by doing a '\bv', from then on, all splits, i.e. '\bs', + were split vertically, even though g:bufExplorerSplitType was not set + to 'v'. +6.2.2 - Thanks to Patrik Modesto for adding a small improvement. For some + reason his bufexplorer window was always showing up folded. He added + 'setlocal nofoldenable' and it was fixed. +6.2.1 - Thanks goes out to Takashi Matsuo for added the 'fullPath' sorting + logic and option. +6.2.0 - Thanks goes out to Simon Johann-Ganter for spotting and fixing a + problem in that the last search pattern is overridden by the search + pattern for blank lines. +6.1.6 - Thanks to Artem Chuprina for finding a pesky bug that has been around + for sometime now. The key mapping was causing the buffer + explored to close prematurely when vim was run in an xterm. The + key mapping is now removed. +6.1.5 - Thanks to Khorev Sergey. Added option to show default help or not. +6.1.4 - Thanks goes out to Valery Kondakoff for suggesting the addition of + setlocal nonumber and foldcolumn=0. This allows for line numbering + and folding to be turned off temporarily while in the explorer. +6.1.3 - Added folding. Did some code cleanup. Added the ability to force the + newly split window to be temporarily vertical, which was suggested by + Thomas Glanzmann. +6.1.2 - Now pressing the key will quit, just like 'q'. + Added folds to hide winmanager configuration. + If anyone had the 'C' option in their cpoptions they would receive + a E10 error on startup of BufExplorer. cpo is now saved, updated and + restored. Thanks to Charles E Campbell, Jr. + Attempted to make sure there can only be one BufExplorer window open + at a time. +6.1.1 - Thanks to Brian D. Goodwin for adding toupper to FileNameCmp. This + way buffers sorted by name will be in the correct order regardless of + case. +6.0.16 - Thanks to Andre Pang for the original patch/idea to get bufexplorer + to work in insertmode/modeless mode (evim). Added Initialize + and Cleanup autocommands to handle commands that need to be + performed when starting or leaving bufexplorer. +6.0.15 - Srinath Avadhanulax added a patch for winmanager.vim. +6.0.14 - Fix a few more bug that I thought I already had fixed. Thanks + to Eric Bloodworth for adding 'Open Mode/Edit in Place'. Added + vertical splitting. +6.0.13 - Thanks to Charles E Campbell, Jr. for pointing out some embarrassing + typos that I had in the documentation. I guess I need to run + the spell checker more :o) +6.0.12 - Thanks to Madoka Machitani, for the tip on adding the augroup command + around the MRUList autocommands. +6.0.11 - Fixed bug report by Xiangjiang Ma. '"=' was being added to the + search history which messed up hlsearch. +6.0.10 - Added the necessary hooks so that the Srinath Avadhanula's + winmanager.vim script could more easily integrate with this script. + Tried to improve performance. +6.0.9 - Added MRU (Most Recently Used) sort ordering. +6.0.8 - Was not resetting the showcmd command correctly. + Added nifty help file. +6.0.7 - Thanks to Brett Carlane for some great enhancements. Some are added, + some are not, yet. Added highlighting of current and alternate + filenames. Added splitting of path/filename toggle. Reworked + ShowBuffers(). + Changed my email address. +6.0.6 - Copyright notice added. Needed this so that it could be distributed + with Debian Linux. Fixed problem with the SortListing() function + failing when there was only one buffer to display. +6.0.5 - Fixed problems reported by David Pascoe, in that you where unable to + hit 'd' on a buffer that belonged to a files that no longer existed + and that the 'yank' buffer was being overridden by the help text when + the bufexplorer was opened. +6.0.4 - Thanks to Charles Campbell, Jr. for making this plugin more plugin + *compliant*, adding default keymappings of be and bs + as well as fixing the 'w:sortDirLabel not being defined' bug. +6.0.3 - Added sorting capabilities. Sort taken from explorer.vim. +6.0.2 - Can't remember. (2001-07-25) +6.0.1 - Initial release. + +=============================================================================== +TODO *bufexplorer-todo* + +- Nothing as of now, buf if you have any suggestions, drop me an email. + +=============================================================================== +CREDITS *bufexplorer-credits* + +Author: Jeff Lanzarotta + +Credit must go out to Bram Moolenaar and all the Vim developers for +making the world's best editor (IMHO). I also want to thank everyone who +helped and gave me suggestions. I wouldn't want to leave anyone out so I +won't list names. + +=============================================================================== +vim:tw=78:noet:wrap:ts=8:ft=help:norl: diff --git a/vimfiles/ftplugin/html.vim b/vimfiles/ftplugin/html.vim new file mode 100644 index 0000000..9ac4bd3 --- /dev/null +++ b/vimfiles/ftplugin/html.vim @@ -0,0 +1,178 @@ +" .vim/ftplugin/php.vim by Tobias Schlitt . +" No copyright, feel free to use this, as you like. + +" Including PDV +source /usr/share/vim/vimfiles/plugin/php-doc.vim + +let PHP_autoformatcomment = 1 + +"show space and tab +set listchars=tab:>-,trail:- +set list + +" {{{ Settings + +" Auto expand tabs to spaces +setlocal expandtab + +" Linewidth to 79, because of the formatoptions this is only valid for +" comments +setlocal textwidth=79 +setlocal formatoptions=qrocb + +" Do not wrap lines automatically +setlocal nowrap + +" Correct indentation after opening a phpdocblock and automatic * on every +" line +setlocal formatoptions=qroct + +" Use php syntax check when doing :make +setlocal makeprg=php\ -l\ % + +" Use errorformat for parsing PHP error output +setlocal errorformat=%m\ in\ %f\ on\ line\ %l + +" Switch syntax highlighting on, if it was not +syntax on + +" Use pman for manual pages +setlocal keywordprg=pman + +" }}} Settings + +" {{{ Command mappings + +" Map ; to run PHP parser check +" noremap ; :!php5 -l % + +" Map ; to "add ; to the end of the line, when missing" +noremap ; :s/\([^;]\)$/\1;/ + +" DEPRECATED in favor of PDV documentation (see below!) +" Map -P to run actual file with PHP CLI +" noremap :w!:!php5 % + +" Map +p to single line mode documentation (in insert and command mode) +inoremap :call PhpDocSingle()i +nnoremap :call PhpDocSingle() +" Map +p to multi line mode documentation (in visual mode) +vnoremap :call PhpDocRange() + +" Map -H to search phpm for the function name currently under the cursor (insert mode only) +" inoremap :!/usr/share/vim/vimfiles/phpm/phpm =expand("") + +" Map -a to alignment function +vnoremap :call PhpAlign() + +" Map -a to (un-)comment function +vnoremap :call PhpUnComment() + +" }}} + +" {{{ Wrap visual selections with chars + +:vnoremap ( "zdi(z) +:vnoremap { "zdi{z} +:vnoremap [ "zdi[z] +:vnoremap ' "zdi'z' +" Removed in favor of register addressing +" :vnoremap " "zdi"z" + +" }}} Wrap visual selections with chars + +" {{{ Dictionary completion + +" The completion dictionary is provided by Rasmus: +" http://lerdorf.com/funclist.txt +setlocal dictionary-=/usr/share/vim/vimfiles/funclist.txt dictionary+=/usr/share/vim/vimfiles/funclist.txt +" Use the dictionary completion +setlocal complete-=k complete+=k + +" }}} Dictionary completion + +" {{{ Autocompletion using the TAB key + +" This function determines, wether we are on the start of the line text (then tab indents) or +" if we want to try autocompletion +func! InsertTabWrapper() + let col = col('.') - 1 + if !col || getline('.')[col - 1] !~ '\k' + return "\" + else + return "\" + endif +endfunction + +" Remap the tab key to select action with InsertTabWrapper +inoremap =InsertTabWrapper() + +" }}} Autocompletion using the TAB key + +" {{{ Alignment + +func! PhpAlign() range + let l:paste = &g:paste + let &g:paste = 0 + + let l:line = a:firstline + let l:endline = a:lastline + let l:maxlength = 0 + while l:line <= l:endline + " Skip comment lines + if getline (l:line) =~ '^\s*\/\/.*$' + let l:line = l:line + 1 + continue + endif + " \{-\} matches ungreed * + let l:index = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\S\{0,1}=\S\{0,1\}\s.*$', '\1', "") + let l:indexlength = strlen (l:index) + let l:maxlength = l:indexlength > l:maxlength ? l:indexlength : l:maxlength + let l:line = l:line + 1 + endwhile + + let l:line = a:firstline + let l:format = "%s%-" . l:maxlength . "s %s %s" + + while l:line <= l:endline + if getline (l:line) =~ '^\s*\/\/.*$' + let l:line = l:line + 1 + continue + endif + let l:linestart = substitute (getline (l:line), '^\(\s*\).*', '\1', "") + let l:linekey = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\1', "") + let l:linesep = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\2', "") + let l:linevalue = substitute (getline (l:line), '^\s*\(.\{-\}\)\s*\(\S\{0,1}=\S\{0,1\}\)\s\(.*\)$', '\3', "") + + let l:newline = printf (l:format, l:linestart, l:linekey, l:linesep, l:linevalue) + call setline (l:line, l:newline) + let l:line = l:line + 1 + endwhile + let &g:paste = l:paste +endfunc + +" }}} + +" {{{ (Un-)comment + +func! PhpUnComment() range + let l:paste = &g:paste + let &g:paste = 0 + + let l:line = a:firstline + let l:endline = a:lastline + + while l:line <= l:endline + if getline (l:line) =~ '^\s*\/\/.*$' + let l:newline = substitute (getline (l:line), '^\(\s*\)\/\/ \(.*\).*$', '\1\2', '') + else + let l:newline = substitute (getline (l:line), '^\(\s*\)\(.*\)$', '\1// \2', '') + endif + call setline (l:line, l:newline) + let l:line = l:line + 1 + endwhile + + let &g:paste = l:paste +endfunc + +" }}} diff --git a/vimfiles/ftplugin/ndtv.vim b/vimfiles/ftplugin/ndtv.vim new file mode 100644 index 0000000..e9abef5 --- /dev/null +++ b/vimfiles/ftplugin/ndtv.vim @@ -0,0 +1 @@ +syntax on diff --git a/vimfiles/ftplugin/php.vim b/vimfiles/ftplugin/php.vim index fc4c984..082a3c2 100644 --- a/vimfiles/ftplugin/php.vim +++ b/vimfiles/ftplugin/php.vim @@ -6,22 +6,22 @@ source /usr/share/vim/vimfiles/plugin/php-doc.vim let PHP_autoformatcomment = 1 +"show space and tab +set listchars=tab:>-,trail:- +set list + " {{{ Settings " Auto expand tabs to spaces setlocal expandtab -" Auto indent after a { -setlocal autoindent -setlocal smartindent - " Linewidth to 79, because of the formatoptions this is only valid for " comments setlocal textwidth=79 setlocal formatoptions=qrocb " Do not wrap lines automatically -" setlocal nowrap +setlocal nowrap " Correct indentation after opening a phpdocblock and automatic * on every " line @@ -60,7 +60,7 @@ nnoremap :call PhpDocSingle() vnoremap :call PhpDocRange() " Map -H to search phpm for the function name currently under the cursor (insert mode only) -inoremap :!/usr/share/vim/vimfiles/phpm/phpm =expand("") +" inoremap :!/usr/share/vim/vimfiles/phpm/phpm =expand("") " Map -a to alignment function vnoremap :call PhpAlign() @@ -70,27 +70,6 @@ vnoremap :call PhpUnComment() " }}} -" {{{ Automatic close char mapping - -" More common in PEAR coding standard -" inoremap { {}O -" Maybe this way in other coding standards -inoremap { {}O - -inoremap [ [] - -" Standard mapping after PEAR coding standard -inoremap ( () -" inoremap ( () - -" Maybe this way in other coding standards -" inoremap ( ( ) - -inoremap " "" -inoremap ' '' - -" }}} Automatic close char mapping - " {{{ Wrap visual selections with chars :vnoremap ( "zdi(z) @@ -197,3 +176,12 @@ func! PhpUnComment() range endfunc " }}} +" add smarty tag +""{{{ +nnoremap :call RunSmarty() +func! RunSmarty() + let smarty_tag = " " + execute "normal i" . smarty_tag + endfunc +""}}} + diff --git a/vimfiles/plugin/NERD_tree.vim b/vimfiles/plugin/NERD_tree.vim index ee13ab0..765a9c0 100644 --- a/vimfiles/plugin/NERD_tree.vim +++ b/vimfiles/plugin/NERD_tree.vim @@ -55,7 +55,7 @@ call s:initVariable("g:NERDTreeMinimalUI", 0) if !exists("g:NERDTreeIgnore") let g:NERDTreeIgnore = ['\~$'] endif -call s:initVariable("g:NERDTreeBookmarksFile", expand('$HOME') . '/.NERDTreeBookmarks') +call s:initVariable("g:NERDTreeBookmarksFile", expand('$HOME') . '/.ndtv') call s:initVariable("g:NERDTreeHighlightCursorline", 1) call s:initVariable("g:NERDTreeHijackNetrw", 1) call s:initVariable("g:NERDTreeMouseMode", 1) @@ -90,7 +90,7 @@ if !exists('g:NERDTreeStatusline') endif call s:initVariable("g:NERDTreeWinPos", "left") -call s:initVariable("g:NERDTreeWinSize", 31) +call s:initVariable("g:NERDTreeWinSize", 23) let s:running_windows = has("win16") || has("win32") || has("win64") diff --git a/vimfiles/plugin/bufexplorer.vim b/vimfiles/plugin/bufexplorer.vim new file mode 100644 index 0000000..8791363 --- /dev/null +++ b/vimfiles/plugin/bufexplorer.vim @@ -0,0 +1,1162 @@ +"============================================================================== +" Copyright: Copyright (C) 2001-2010 Jeff Lanzarotta +" Permission is hereby granted to use and distribute this code, +" with or without modifications, provided that this copyright +" notice is copied with it. Like anything else that's free, +" bufexplorer.vim is provided *as is* and comes with no +" warranty of any kind, either expressed or implied. In no +" event will the copyright holder be liable for any damages +" resulting from the use of this software. +" Name Of File: bufexplorer.vim +" Description: Buffer Explorer Vim Plugin +" Maintainer: Jeff Lanzarotta (delux256-vim at yahoo dot com) +" Last Changed: Friday, 22 October 2010 +" Version: See g:bufexplorer_version for version number. +" Usage: This file should reside in the plugin directory and be +" automatically sourced. +" +" You may use the default keymappings of +" +" be - Opens BE. +" bs - Opens horizontally window BE. +" bv - Opens vertically window BE. +" +" Or you can use +" +" ":BufExplorer" - Opens BE. +" ":BufExplorerHorizontalSplit" - Opens horizontally window BE. +" ":BufExplorerVerticalSplit" - Opens vertically window BE. +" +" For more help see supplied documentation. +" History: See supplied documentation. +"============================================================================== + +" Exit quickly if already running or when 'compatible' is set. {{{1 +if exists("g:bufexplorer_version") || &cp + finish +endif +"1}}} + +" Version number +let g:bufexplorer_version = "7.2.8" + +" Check for Vim version 700 or greater {{{1 +if v:version < 700 + echo "Sorry, bufexplorer ".g:bufexplorer_version."\nONLY runs with Vim 7.0 and greater." + finish +endif + +" Public Interface {{{1 +if maparg("be") =~ 'BufExplorer' + nunmap be +endif + +if maparg("bs") =~ 'BufExplorerHorizontalSplit' + nunmap bs +endif + +if maparg("bv") =~ 'BufExplorerVerticalSplit' + nunmap bv +endif + +nmap