linux编程入门(五)-使用vim编写程序

编写程序大家可以自由选择一种编辑器,常用的可以选vim或emacs。因为我用vim,所以主要介绍一下vim在编写程序时候的用法,基本用法可以看这里

[toc]

按ctrl+n补全

这里补全的前提是被补全的单词已经出现过,比如在代码里出现过printf,这时我输入pri,再输入ctrl+n就会出现printf的补全候选列表

  • 再按ctrl+n向下移动候选列表光标
  • ctrl+p向上移动光标

vim里搜索当前文件中的关键字

  • 把光标移到关键字的单词上,按shift+8
    ** 按n切到下一个
    ** shift+n切到上一个

  • 或者按ESC退出编辑模式,按/,再输入关键字
    ** 同样是按n和shift+n上下切换

~                                    
[Quickfix List]                         2,1            All
/main    #这样表示搜索main,回车确认

打开cope窗口

进入命令模式,输入cope,会出现一个窗口,cope5表示窗口高5行,默认是10行
该窗口可以用于显示命令结果,比如搜过结果,make编译结果,如果编译有错,可以在这里直接跳到有错的代码处。

 11     char a;
 12     int b;
 13     short c;
 14     void func1(){
main.cpp        下面是cope窗口          1,1            Top
  1     
~                                        
~                                            
~                                            
~                                            
[Quickfix List]                         0,0-1          All
:cope5

关闭cope窗口

按ctrl+w+w 把焦点切到cope窗口上,再在命令模式下输入:q就可以退出当前窗口了

vim里搜索其他文件中的关键字

命令模式下,输入:grep main *.cpp
表示当前目录的所有cpp文件里搜过main关键字

 20 int main(int, char**){
main.cpp        下面是cope窗口          20,1           24%
  1 main.cpp|20| int main(int, char**){             #cope里显示出了搜过结果
  2 test_sort.cpp|15| int main(int, char**)         #共搜索出来两行结果
~                                            
~                                            
~                                            
[Quickfix List]                         1,1            All
:grep main *.cpp

自动跳到搜过结果的代码

多窗口间切换用ctrl+w+w
假如当前vim里打开了cope窗口,并且焦点在vim编辑区,这时候想把光标移到cope窗口,可以ctrl+连点两下w,光标就会移到cope窗口,在cope窗口同样按j,k上下移动光标,选中一行搜索结果,按回车,编辑区就会跳到该结果的代码处。

打开Tlist窖口

Tlist窗口可以用来查看代码,该窗口会把函数签名和打开过的文件名都列出来,可以快速的跳到该文件或函数处
命令模式下输入: Tlist

  1 #include <stdio.h>                   |   # 这里就是Tlist窗口
  2 #include <string.h>                  |-  main.cpp (/home/dafei/cpp/ga
  3 #include "test_class.h"              |   
  4                                      |-  test_class.cpp (/home/dafei/
  5 void test_fun(){                     |   
  6 }                                    |-  test_class.h (/home/dafei/cp
  7                                      |   
  8 int main(int argc, char** argv){     |   ~                          
  9     (void)argc;                      |   ~                          
 10     (void)argv;                      |   ~                          
 11                                      |   ~                          
 12     printf("hello dafei\n");         |   ~                          
 13                                      |   ~                          
 14     TestClass o;                     |   ~                          
 15     int a = 1;                       |   ~                          
 16     int b = 2;                       |   ~                          
 17     int c = o.sum( a, b );           |   ~                          
 18                                      |   ~                          
 19     char buff[256]; memset(buff, 0x00|   ~                          
    , sizeof(buff));                     |   ~                          
main.cpp               1,1            Top __Tag_List__   3,1         Bot
:Tlist

切到另一个文件

可以用命令:e 文件名 切到另一个文件

打开当前目录

命令模式: e .
当我们不记得文件名的时候,可以打开当前目录,选择要打开的文件

" ===========================================================================
" Netrw Directory Listing                                        (netrw v162)
"   /home/dafei/test_gdb
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:spec
" ===========================================================================
../
./
test_class.h
main.cpp
test_class.cpp
main*
Makefile
main.o
                                                           1,1           Top

在头文件与cpp间来回切换

假如我们正在编辑cpp,想切到头文件,可以用命令:e切过去,这时候如果想再切到cpp文件,可以用ctrl+shift+6快速切到上一次编辑的文件,这样按ctrl+shift+6可以快速的在头文件和cpp间来回切换

退出所有窗口

当我们打开了Tlist, cope窗口,这时候想退出vim,命令模式:q 只会退出当前窗口, 需要用:qa 关闭所有窗口

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容