1. vim的基本概念c++
vim有許多模式,其實咱們經常使用的也大概就三種,分別是:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。各模式功能 區分以下:git
正常/普通/命令模式(Normal mode)github
控制屏幕光標的移動,字符、字或行的刪除,移動複製某區段及進入Insert mode下,或者到 last line modevim
插入模式(Insert mode)c#
只有在Insert mode下,才能夠作文字輸入,按「ESC」鍵可回到命令行模式。該模式是咱們後面用的最頻繁的編輯模式。編輯器
末行模式(last line mode)ide
文件保存或退出,也能夠進行文件替換,找字符串,列出行號等操做。 在命令模式下,shift+: 便可進入該模式。要查看你的全部模式:打開vim,底行模式直接輸入。函數
2.vim的基本操做優化
$ vim test.c
在進入vim後,是處於[正常模式]下,只有切換到 [插入模式] 纔可以輸入文字插件
[正常模式]切換至[插入模式]
輸入a
輸入i
輸入o
插入模式]切換至[正常模式]
目前處於[插入模式],就只能一直輸入文字,若是發現輸錯了字,想用光標鍵往回移動將該字刪除,能夠先按一下「ESC」鍵轉到[正常模式]再刪除文字。固然,也能夠直接刪除。
[正常模式]切換至[末行模式]
輸入[shift + : ]便可
:w (保存當前文件) :wq (保存並退出vim) :q (輸入q,不存盤直接退出vim)
3.vim正常模式命令集
插入模式
按「i」切換進入插入模式「insert mode」,按「i」進入插入模式後是從光標 當前位置開始輸入文件;
按「a」進入插入模式後,是從目前光標所在位置的下一個位置開始輸入文字;
按「o」進入插入模式後,是插入新的一行,從行首開始輸入文字
從插入模式切換到命令模式
按[ESC]鍵
移動光標
vim能夠直接用鍵盤上的光標來上下左右移動,但正規的vim是用小寫英文字母「h」、「j」、「k」、「l」,分別控制光標左、下、上、右移一格
按[G] : 移動到文章的最後
按[$] : 移動到光標所在行的「行尾」
按[^] : 移動到光標所在行的「行首」
按[w] : 光標跳到下個字的開頭
按[e] : 光標跳到下個字的字尾
按[b] : 光標回到上個字的開頭
按[#I] : 光標移到該行的第#個位置,如:5I, 56I
按[gg] : 進入到文本開始
按[shift + g] : 進入文本末端
按「ctrl」+「b」:屏幕往「後」移動一頁
按「ctrl」+「f」:屏幕往「前」移動一頁
按「ctrl」+「u」:屏幕往「後」移動半頁
按「ctrl」+「d」:屏幕往「前」移動半頁
刪除文字
「x」:每按一次,刪除光標所在位置的一個字符
「#x」:例如,「6x」表示刪除光標所在位置的「後面(包含本身在內)」6個字符
「X」:大寫的X,每按一次,刪除光標所在位置的「前面」一個字符
「#X」:例如,「20X」表示刪除光標所在位置的「前面」20個字符
「dd」:刪除光標所在行
「#dd」:從光標所在行開始刪除#行
複製
「yw」:將光標所在之處到字尾的字符複製到緩衝區中。
「#yw」:複製#個字到緩衝區
「yy」:複製光標所在行到緩衝區。
「#yy」:例如,「6yy」表示拷貝從光標所在的該行「往下數」6行文字。
「p」:將緩衝區內的字符貼到光標所在位置。注意:全部與「y」有關的複製命令都必須與「p」配合才能完成複製與粘貼功能
替換
「r」:替換光標所在處的字符。
「R」:替換光標所到之處的字符,直到按下「ESC」鍵爲止
撤銷上一次操做
「u」:若是您誤執行一個命令,能夠立刻按下「u」,回到上一個操做。按屢次「u」能夠執行屢次回
復。
「ctrl + r」: 撤銷的恢復
更改
「cw」:更改光標所在處的字到字尾處
「c#w」:例如,「c3w」表示更改3個字
跳至指定的行
「ctrl」+「g」列出光標所在行的行號。
「#G」:例如,「15G」,表示移動光標至文章的第15行行首
4.vim末行模式命令集
列出行號
「set nu」: 輸入「set nu」後,會在文件中的每一行前面列出行號。
跳到文件中的某一行
「#」:「#」號表示一個數字,在冒號後輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字15,再回車,就會跳到文章的第15行。
查找字符 「/關鍵字」:
先按「/」鍵,再輸入您想尋找的字符,若是第一次找的關鍵字不是您想要的,能夠一直按「n」會日後尋找到您要的關鍵字爲止。
「?關鍵字」:先按「?」鍵,再輸入您想尋找的字符,若是第一次找的關鍵字不是您想要的,能夠一直按「n」會往前尋找到您要的關鍵字爲止。
6.簡單的vim配置
要配置好看的vim,原生的配置可能功能不全,能夠選擇安裝插件來完善配置,保證用戶是你要配置的用戶,
附上大佬已經寫好的連接按照提示便可配置出好看的vim:一條命令配置強大的vim
1.背景知識
代碼要生成可執行程序要經歷如下四步:
安裝gcc:sudo yum install -y gcc
安裝g++:sudo yum install -y gcc-c++
2.如何使用gcc命令
格式 gcc [選項] 要編譯的文件 [選項] [目標文件]
預處理 (進行宏替換)
預處理功能主要包含宏定義,文件包含,條件編譯,去解釋。
預處理指令是以#號開頭的代碼行
實例:gcc -E hello.c -o hello.i
選項「-E」,該選項的做用是讓 gcc 在預處理結束後中止編譯過程。
選項「-o」是指目標文件,「.i」文件爲已通過預處理的C原始程序。
編譯(生成彙編)
在這個階段中,gcc 首先要檢查代碼的規範性、是否有語法錯誤等,以肯定代 碼的實際要作的工做,在檢查無誤後,gcc 把代碼翻譯成彙編語言。
用戶可使用「-S」選項來進行查看,該選項只進行編譯而不進行彙編,生成彙編代碼。
實例: gcc –S hello.i –o hello.s
彙編(生成機器可識別代碼)
彙編階段是把編譯階段生成的「.s」文件轉成目標文件
讀者在此可以使用選項「-c」就可看到彙編代碼已轉化爲「.o」的二進制目標代碼了
實例: gcc –c hello.s –o hello.o
鏈接(生成可執行文件或庫文件)
在成功編譯以後,就進入了連接階段。
實例:gcc hello.o –o hello
咱們的C程序中,並無定義「printf」的函數實現,且在預編譯中包含的「stdio.h」中也只有函數的聲明,而沒有定義函數的實現,那麼,是在哪裏實「printf」函數的呢?
[ ] 答案是系統把這些函數實現都被作到名爲 libc.so.6 的庫文件中去了,在沒有特別指定時,gcc會到系統默認的搜索路徑「/usr/lib」下進行查找,也就是連接到 libc.so.6庫函數中去,這樣就能實現函數「printf」了,而這也就是連接的做用
函數庫通常分爲靜態庫和動態庫兩種
靜態庫是指編譯連接時,把庫文件的代碼所有加入到可執行文件中,所以生成的文件比較大,但在運行時也就再也不須要庫文件了。其後綴名通常爲「.a」
動態庫與之相反,在編譯連接時並無把庫文件的代碼加入到可執行文件中,而是在程序執行時由運行時連接文件加載庫,這樣能夠節省系統的開銷。動態庫通常後綴名爲「.so」,如前面所述的
libc.so.6 就是動態庫。gcc 在編譯時默認使用動態庫。完成了連接以後,gcc 就能夠生成可執行文件,如 gcc hello.o –o hello
gcc選項:
-E 只激活預處理,這個不生成文件,你須要把它重定向到一個輸出文件裏面 -S 編譯到彙編語言不進行彙編和連接 -c 編譯到目標代碼 -o 文件輸出到 文件 -static 此選項對生成的文件採用靜態連接 -g 生成調試信息。GNU 調試器可利用該信息。 -shared 此選項將盡可能使用動態庫,因此生成文件比較小,可是須要系統由動態庫. -O0 -O1 -O2 -O3 編譯器的優化選項的4個級別,-O0表示沒有優化,-O1爲缺省值,-O3優化級別最高 -w 不生成任何警告信息。 -Wall 生成全部警告信息。