linux vim+ctags

来源:互联网 发布:调查问卷挣钱知乎 编辑:程序博客网 时间:2024/06/05 08:18

1、vim使用技巧 

     emacs有很多文档会讲,我在这里说说用vim编程!我本来也是习惯vc的ide的,但我现在对用vim编程感到很方便!
     首先,你得tags一下,到你存放程序的目录下面,运行一下
      ctags *.[ch] -d
     这样你就把所有的函数,定义等都做了标记了,这会使你在编程的时候实现方便的跳转。
      好了,下面是回答问题时间。
     问:vc可以动态提示,vim可以吗?
     答:所谓动态提示,就是说,比如有一个变量叫a_long_name_para名字,但vc会在你敲了a_long之后帮你补全。其实vim也有类似功能,你可以在insert模式下敲了a_long之后按ctrl+p。崩的一声,a_long_name_para就会补全。
      问:在vc里,我敲入一个函数的名字,然后vc会提示我这个函数有哪些参数,返回值是什么。vim呢?
      答:也有类似功能。比如你要调用foo函数,你在写完foo这几个字母后,按esq切到命令模式,再按ctrl+w、ctrl+],vim就会弹出一个窗口告诉你这个函数的定义。把这个窗口关掉的命令是:q。
      问:如何跳到变量、函数声明的地方?
      答:命令模式下ctrl+],好方便!按ctrl+o返回。
       问:如何跳到使用函数的地方?
      答:vim还没有很精确的这类跳转,不过可以用#号和*号来上线搜索当前的字符串,也很好用的。
       问:如果查看api函数的说明?
       答:太容易了,给我按大写的k!vim就会帮你跳到当前字符的man页面,超级爽。
        相信有了这几个功能,编程已经比较舒服了,下面有一下更好的设置环境的方法。
在linux下,你的目录地下增加一个名为".vimrc"的文件。vim每次启动都会读这里的命令然后执行它的。其实这是个很好的功能,很多很复杂的功能都可以写进这个文件。我并是很高高高的手,不过以我之见,只要在这文件写进4行,已经可以很舒服的让你写你的c程序了:
        set ts=4 #设置tab为4个空格
        set sw=4 #设置shift width为4个空格
        set cindent #让vim用c语言的方式处理缩进
        syn on #高亮显示c的语法!
       这里有一点要提醒一下,语法高亮是随不同的telnet终端而有不同表现的。一般有netterm , secureCRT,putty这集中telnet工具,以我看来,putty的表现是最好的,它的颜色很丰富,看起程序来很清楚。

2、文件命名大写转小写

     用脚本 for file in $(ls ./); do mv $file $(echo $file|tr "[a-z]" "[A-Z]"); done

  

上面那个不能处理子目录。这个处理得比较麻烦。

本来想 mv的时候把子目录路径添上,可惜不会匹配/前。比如./abc/def,不会保留./abc/。其实只是想截取最后一个/之前的文字。;(

所以就现mv了一下。只测试了一级子目录,没有更多测试。如果错误请告知。


CODE:[Copy to clipboard]#!/bin/bash
for dir in $(find ./ -type d )
do
        if [ $dir != ./ ]  ; then
                mv $dir $(echo $dir|tr "[a-z]" "[A-Z]")
        fi
done
for file in $(find ./ -type f -name "*.html")
do
        mv $file $(echo $file|tr "[a-z]" "[A-Z]")
done

for dir in $(find ./ -type d )
do
        if [ $dir != ./ ]  ; then
                mv $dir $(echo $dir|tr "[A-Z]" "[a-z]")
        fi
done

大小写换 sed也可以完成的。。。

这样试一试


CODE:[Copy to clipboard]find . -name "*.htm"|while read file;do
     echo "mv $file $(echo $file|rev|awk '{print substr($0,1,4)toupper(substr($0,5,1))substr($0,6,length($0))}'|rev)"|sh
done

for i in `echo *.html`;do mv $i `echo $i|tr 'a-z' 'A-Z'`;done

转自:http://blog.szu.edu.cn/Forum/4336

原创粉丝点击