2012年9月

最近在把一下WIN下面的源程序转入linux下面,基本在控制台下面工作,所以经常碰到乱码,太恶心了。 今天专门抽出时间来找中文终端的办法终于被我找到了。

网上我找到两种办法,一种是内核补丁,这个有难度,还有一种是使用fbterm。 我选择了fbterm,找了找,发现很多人发的都是fbterm + yong输入法,但是我下了yong之后发现,他的脚本里面不支持archlinux,好像也没有源代码放出,还好,AUR上面有人放了出来,但是我试了一下,要有gdk,gtk的支持,但是我都安装好了以后,发现还是不能用,提示gtk 不能打开显示。。。 所以只能选择走 fbterm + ucimf 这个组合。这个组合也有一些问题比较坑爹,我一开始选择的就是这个组合,但是被一些坑爹的理由坑了几个小时,才掉头去尝试 fbterm + yong的,结果那个更坑爹,只好回头重新尝试这个组合,还好,搞到23:30才搞定 --!

首先 安装两个中文字体和一个英文等宽字体 sudo pacman -S wqy-zenhei sudo pacman -S wqy-bitmapfont sudo pacman -S ttf-inconsolata 还可以再用AUR安装一个雅黑 ttf-microsoft-yahei 6.02-2

然后 通过AUR来安装 fbterm-1.7.0-4-i686.pkg.tar.xz 然后先运行一下fbterm来产生一下默认的配置文件。

vim .fbtermrc font-names=Inconsolata,Micosoft Yahei Song cursor-shape=1

vim .bashrc alias fbterm='LANG=zh_CN.UTF-8 fbterm'

再用AUR 安装 libucimf2.3.8-1 注意在makepkg -s 这一步会提示出错 需要手动找到文件下里面的ucimf.cpp 在里面加上一个头文件

include

同时修改PKGBUILD 注释掉source开头的那一行,防止再次下载覆盖掉你的改动, 然后再makepkg -s 就不会有错误了

再用AUR 安装 fbterm-ucimf 0.2.9-2

这个时候如果进入fbterm的话,是可以显示中文的,但是VIM还是乱码。 典型现象就是用VIM打开中文文件,下面的会显示“已转换” 3个汉字,但是文件里面还是乱码。 只要修改 .vimrc 中间添加编码格式 fileencodeing= 。。。。。。。。。。。 就可以了。

但是这时候使用 ctrl+space 会提示执行IM失败,然后我就到处找来找去,终于在一个网页的角落里面发现 原来还要在装两个。

再用AUR 安装 openvanilla-modules 0.9.1-1 再用AUR 安装 ucimf-openvanilla 2.10.11-2

这时候再次进入fbterm 使用 ctrl + space 输入法可以切换出来,但是坑爹的是按下 F9, 就被锁住了, 按键无效。然后我就在网上找来找去,在ucifm官方上面也到处找,没有发现任何问题。官方的archlinux的安装和我差不多,就是这个地方坑了我。然后我尝试把前面的几步重新来了一遍,还是一样。

然后就是尝试 yong 输入法,结果同样悲剧了,最后我是看官方给出的图片的时候发现了一个问题就是官方上面有显示拼音两个字,而我那边直接就是空的。然后我再去找官方的下载连接,发现里面有两个比较可以的文件一个是ucimf-sunpinyin,一个是ucimf-we...... 而这两个文件不管是在官方的安装文档还是在其他的网页上面我都没有看到有人提到过需要安装他们的。 但是既然官方下载里面有,那我就下了试了一下,果然,就是缺少这个。

pacman -S sunpinyin pacman -S ibus-sunpinyin pacman -S gambas2-gb-db-sqlite3 pacman -S gambas3-gb-db-sqlite3 aur ucimf-sunpinyin 0.5-2

这次再次启动 fbterm,ctrl+space,就可以正常输入中文,一点问题也没有了。 不过还有一点小问题,就是关闭输入法的时候会多出来两个小字符。不过这个也无关紧要了。

http://blog.163.com/lgh_2002/blog/static/4401752620108923318287/ let g:DoxygenToolkit_authorName="" let s:licenseTag = "Copyright(C)\" let s:licenseTag = s:licenseTag . "For free\" let s:licenseTag = s:licenseTag . "All right reserved\" let g:DoxygenToolkit_licenseTag = s:licenseTag let g:DoxygenToolkit_briefTag_funcName="yes" let g:doxygen_enhanced_color=1

let g:DoxygenToolkit_briefTag_pre="@Synopsis " let g:DoxygenToolkit_paramTag_pre="@Param " let g:DoxygenToolkit_returnTag="@Returns " let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------" let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------" let g:DoxygenToolkit_authorName="Mathias Lorente" let g:DoxygenToolkit_licenseTag="My own license" let g:DoxygenToolkit_authorName="drunkedcat, whitelilis@gmail.com" let s:licenseTag = "Copyright(C)\" let s:licenseTag = s:licenseTag . "For free\" let s:licenseTag = s:licenseTag . "All right reserved\" let g:DoxygenToolkit_licenseTag = s:licenseTag let g:DoxygenToolkit_briefTag_funcName="yes" let g:doxygen_enhanced_color=1

使用DoxLic、DoxAuthor、Dox命令自动生成,注释的样式和文字完全可配置.

今天想弄一下VIM的函数高亮,结果搞了一个下午,才终于搞定。

首先是按照下面这个网址写了一个 ~/.vim/syntax/c.vim

http://blog.csdn.net/wooin/article/details/1858917 "======================================================== " Highlight All Function "======================================================== syn match cFunction "/<[a-zA-Z_][a-zA-Z0-9]/>[^()])("me=e-2 syn match cFunction "/<[a-zA-Z][a-zA-Z_0-9]/>/s("me=e-1 hi cFunction gui=NONE guifg=#B5A1FF

"======================================================== " Highlight All Math Operator "======================================================== " C math operators syn match cMathOperator display "[-+/*/%=]" " C pointer operators syn match cPointerOperator display "->/|/." " C logical operators - boolean results syn match cLogicalOperator display "[!<>]=/=" syn match cLogicalOperator display "==" " C bit operators syn match cBinaryOperator display "/(&/||/|/^/|<>/)=/=" syn match cBinaryOperator display "/~" syn match cBinaryOperatorError display "/~=" " More C logical operators - highlight in preference to binary syn match cLogicalOperator display "&&/|||" syn match cLogicalOperatorError display "/(&&/|||/)="

" Math Operator hi cMathOperator guifg=#3EFFE2 hi cPointerOperator guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cBinaryOperator guifg=#3EFFE2 hi cBinaryOperatorError guifg=#3EFFE2 hi cLogicalOperator guifg=#3EFFE2 hi cLogicalOperatorError guifg=#3EFFE2

但是非常悲剧的是这个用起来没有作用而且还报错。结果在下面的评论中才发现原来所有的 '/' 都

应该是 '\'。

按照下面这个网址改了一下,但是还是悲剧。虽然不报错了,但是函数还是没有高亮。

http://www.cppblog.com/besterChen/archive/2010/02/21/108124.aspx

然后找到另外一个网址,内容如下:

"highlight Functions syn match cFuntions display "[a-zA-Z_]{-1,}\s{-0,}({1}"ms=s,me=e-1 hi def link cFuntions Title 就是先定义一个语法匹配,然后将匹配的高亮设为Title(深红色的函数高亮,很像Visual Asist)。当然也可以设为其他的高亮定义,自己定义颜色也行。

使用下面的命令来获得颜色组的完整列表:

so $VIMRUNTIME/syntax/hitest.vim

我把颜色的那一句改为hi def link cFuntions Title,终于有变化了,这个原因我继续向下找。

在下面这个网址我找到了部分线索。

首先使用VIM和VI的非兼容模式,在~/.vimrc中使用 set cp

然后打开一个 c文件
set cp?

就可以知道现在是否兼容.

然后在 ~/.vimrc 中加入下面的内容 代码: nnoremap :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"

这个是解除 ctrl+h 绑定 光标左移的功能

目的是为了确认到底是没有成功设置颜色组还是没有成功设置颜色。
代码:
set ft

确认文件类型是 c 或者 cpp,然后把光标移到应该高亮但没有高亮的地方按下 Ctrl-H,看看能不能显示出你自己定义的高亮组名。

经过检查发现我是成功绑定了组,但就是不能成功高亮。

在下面的网址中,我得到了关键线索

Vim中对颜色(包括字体等其他样式)的设置是用hightlight命令,可简写为hi。例如对函数名的设置:

highlight Function cterm=bold,underline ctermbg=red ctermfg=green

这条命令可使函数名的字体改为粗体/有下划线/绿色/红色背景。除了Function关键字,还有String/Number/Float/Label,还有针对某门编程语言的关键字如:phpFunctions/phpType/phpFloat等。

这下就搞明白了。我是在字符界面使用vim的,cterm 这个不就是字符终端的意思么。 那么可以推测 gui 是在窗口界面下使用vim 或则 gvim 才能起作用的。

下面这个命令让我确定了我的想法。

官方原版的设置既有cterm 也有 gui。

  1. 查看所有的已有设置

直接执行highlight命令即可,不带任何参数。

下面是一些标签页的设置

1) 对tab标签样式的设置

每种主题都会有美中不足,比如我一直喜欢用的torte,它的默认样式下tab标签是黑底白字有下划线,选中状态为无下划线,看起来非常费眼睛。我进行了如下设置:

highlight TabLine term=underline cterm=bold ctermfg=9 ctermbg=4 highlight TabLineSel term=bold cterm=bold ctermbg=Red ctermfg=yellow

这里涉及到两个标签:TabLine(普通标签样式)/TabLineSel(选中状态标签的样式)。

(2) 对自动补全提示样式的设置

我使用的提示插件是。

highlight Pmenu ctermbg=darkred highlight PmenuSel ctermbg=red ctermfg=yellow

但是这样还是有些问题,我继续寻找,终于在另外一个老外的网页上面发现了,自己新建的最好放在

~/.vim/after/syntax/c/fun.vim

after 意思是在加载完原来的设置的基础上,在加载下面的设置

c C语言的设置,打开C相关的文件的时候会加载这个文件目录下面的设置

这里是我最终修改好的设置

可以完美实现我的需要

"==================================================== " Highlight All Function " =================================================== syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]>[^()])("me=e-2

syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]>\s("me=e-1

hi cFunction cterm=bold ctermfg=blue

"=================================================== " Highlight All Class Name " ================================================== syn match cClassName "\<[a-zA-Z_][a-zA-Z_0-9]>\:"me=e-1 hi cClassName cterm=bold ctermfg=yellow

"==================================================== " Highlight All Math Operator " =================================================== " c math operators syn match cMathOperator display "[-+*\%=]"

" c opinter operators syn match cPointerOperator display "->|.|\:\:"

" c logical operators - boolean results syn match cLogicalOperator display "[!<>]=\=" syn match cLogicalOperator display "=="

" c bit operators syn match cBinaryOperator display "(&|||\^|<<|>>)=\="

syn match cBinaryOperator display "\~"

syn match cBinaryOperatorError display "\~="

" More c logical operators - highlight in preference to binary syn match cLogicalOperator display "&&|||"

syn match cLogicalOperatorError display "(&&|||)="

" more c priority operators -highlight in preference to binary syn match cPriorityOpreator display "(|)|[|]|{|}"

" match operator hi cMathOperator ctermfg=blue

hi cPointerOperator ctermfg=red

hi cLogicalOperator ctermfg=yellow

hi cBinaryOperator ctermfg=5

hi cBinaryOperatorError ctermfg=red

hi cLogicalOperator ctermfg=yellow

hi cLogicalOperatorError ctermfg=yellow

hi cPriorityOpreator ctermfg=6

created by

script type ftplugin

description You can add your author info in any source files,such as cpp,c,java,and c#,python,php,bash.... Like this: /*=============================================================================

Author: dantezhu -

Email: zny2008@gmail.com

FileName: test2.cpp

Description:

Version: 0.0.1

LastChange: 2011-02-15 19:32:25

History:

=============================================================================*/ when you type ,this will add in the head of your source file,and when you type again,It will update automatically.

1)you need install The NERD Commenter first. url is :

2)you need some config in vimrc:

let g:vimrc_author='dantezhu' let g:vimrc_email='zny2008@gmail.com' let g:vimrc_homepage=''

nmap :AuthorInfoDetect

My homepage is ,and wellcome。

install details Put this file in the vim plugins directory (~/.vim/plugin/) to load it automatically.

解压缩时,要把压缩包中的目录结构完整的解压缩到VIM\vimfiles目录中。完成后,应该分别找到VIM\vimfiles\doc\NERD_tree.txt文件和VIM\vimfiles\plugin\NERD_tree.vim文件。然后在vim中输入命令:helptagsVIM\vimfiles\doc,将NERDTree的帮助文档添加到vim中。

最后在_vimrc添加如下内容: " NERDTree map :NERDTreeToggle

(注意和:NERDTreeToggle之间有个英文空格)

重启vim后,按下F10键,就可以在左侧看到一个目录树了。在目录树窗口中按下?键可以查看详细的帮助信息。

最常用的操作键有: C(大写C键) 将光标所在目录设置为根目录 u(小写u键) 转到上一级目录 o(小写o键) 展开(或折叠)光标所在目录的子目录。如果光标所在位置是一个文件,则在编辑窗口中打开该文件

此外在目录树窗口中输入目录:Bookmark收藏名还可以将光标所在目录添加到收藏夹中。下次使用:BookmarkToRoot收藏名可以直接转到该目录,并且以该目录作为根目录。更多命令可以参考NERDTree的帮助文档(:help NERD_tree.txt)。

vim NERD tree 书签 有两个概念需要说明 一个是 NERD tree 启用后,显示的目录 一个是vim的当前目录

两个是不一样的 例如 我 NERD tree 显示的是 d:\phpnow\htdocs\drupal 目录 然后我新建一个文件 a.php 保存之后去查看 a.php 并不是在 d:\phpnow\htdocs\drupal 下面 而是在 vim.exe 所在的目录 即当前目录 打开vim 之后 用 :pwd 查看当前目录

修改当前目录 可以在vim配置文件里面 加上 :cd D:\PHPnow\htdocs\drupal
或者在 vim 里面 用 :cd 目录地址 命令切换目录

Bookmark bookmark_name 将选中结点添加到书签列表中,并命名为name(书签名不可包含空格); 如与现有书签重名,则覆盖现有书签。

OpenBookmark bookmark_name 打开指定的文件。(参数必须是文件书签) 如果该文件在当前的目录树下,则打开它的上层结点并选中该书签

ClearBookmarks [] 清除指定书签;如未指定参数,则清除所有书签

加好标签之后 就可以 :OpenBookmark bookmark_name 打开目录树 方便编辑不同项目

简便方式是这样的

修改vim 配置文件 加上

"NERDTree map :NERDTreeToggle =""

保存之后 再打开vim

按 CTRL + t vim 下方出现

再在后边补上你用 :Bookmark 命令添加的书签的书签名称 然后回车 就看到你希望显示的目录树了

ps:

最好在 vim配置里面 加上

let NERDTreeBookmarksFile='/usr/share/vim/NerdBookmarks.txt'

制定书签存放的位置 出问题了可以手动修改他 over

http://blog.csdn.net/hadeys/article/details/6962979 "==== F3 NERDTree 切换 map :NERDTreeToggle imap :NERDTreeToggle

  1. 常用快捷键:

    o - 打开所选文件或目录 enter - 相当于o go - 类似o, 但光标仍然停留在NERD_tree t - 在新标签中打开所选文件 T - 类似t, 但光标仍然停留在NERD_tree i - 在一个水平分割窗口中打开文件 gi - 类似i, 但光标仍然停留在NERD_tree s - 在一个垂直分割窗口中打开文件 |NERDTree-s| gs - 类似s, 但光标仍然停留在NERD_tree O - 递归打开所选目录 ctr+w+h 光标focus左侧树形目录,ctrl+w+l 光标focus右侧文件显示窗口

http://blog.csdn.net/ThinkHY/article/details/5471576

"NERDTree plugin

let NERDTreeWinPos = "right" "where NERD tree window is placed on the screen

"let NERDTreeWinSize = 31 "size of the NERD tree

nmap :NERDTreeToggle" Open and close the NERD_tree.vim separately

  这是一款供Vim使用的插件,看名字可以知道,它和同属一个作者。使用这款插件,你可以对多种文件类型的文件进行不同方式地、快速地注释。这对使用Vim来写代码或者修改配置文件的同学来说,无疑是提升效率和快感的一件利器。你可以到这个插件,将压缩包里面的doc/和plugin/文件夹丢到~/.vim/下面就是安装了。为了可以使用其帮助文档,你还需要在Vim中执行:helptags ~/.vim/doc/来注册。

install details The NERD Commenter requires Vim 7 or higher.

Extract the plugin files in your ~/.vim (*nix) or ~/vimfiles (Windows). You should have 2 files: plugin/NERD_commenter.vim doc/NERD_commenter.txt

Next, to finish installing the help file run:
helptags ~/.vim/doc

See |add-local-help| for more details.

Make sure that you have filetype plugins enabled, as the script makes use of |'commentstring'| where possible (which is usually set in a filetype plugin). See |filetype-plugin-on| for details, but basically, stick this in your vimrc filetype plugin on

  简单介绍下NERD Commenter的常用键绑定,以C/C++文件为例,详析的使用方法,请:h NERDCommenter。在Normal或者Visual 模式下:

,ca,在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//
,cc,注释当前行
,c,切换注释/非注释状态
,cs,以”性感”的方式注释
,cA,在当前行尾添加注释符,并进入Insert模式
,cu,取消注释
Normal模式下,几乎所有命令前面都可以指定行数
Visual模式下执行命令,会对选中的特定区块进行注释/反注释

注:各命令前缀是可以自己设置的,通常是逗号’,'或者’\’.

你好,我按照NERD Commenter安装好了,但是为什么我按,cc就给当前行删除了呢?我试了下\cc,管用了,为什么呢?能不能把这个配置或者什么给我讲清楚,网上我找不到资料,谢谢你了! ↑ @ September 8, 2011,2:37 pm()

有一个选项mapleader定义了所代表的字符,许多插件的键映射使用了这个,可以根据需要在配置文件里面set mapleader=,设置, ^_^

这个命令前缀怎么设置呢? ↑ @ April 1, 2011,8:01 pm()

let mapleader=”,”
参考:h