Linux編輯器-vim使用 && Linux編譯器-gcc/g++使用

Linux編輯器-vim使用

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,在系統提示符號輸入vim及文件名稱後,就進入vim全屏編輯畫面:
$ vim test.c

在進入vim後,是處於[正常模式]下,只有切換到 [插入模式] 纔可以輸入文字插件

  • [正常模式]切換至[插入模式]

    輸入a
    輸入i
    輸入o

  • 插入模式]切換至[正常模式]

    目前處於[插入模式],就只能一直輸入文字,若是發現輸錯了字,想用光標鍵往回移動將該字刪除,能夠先按一下「ESC」鍵轉到[正常模式]再刪除文字。固然,也能夠直接刪除。

  • [正常模式]切換至[末行模式]

    輸入[shift + : ]便可

  • 退出vim及保存文件,在[正常模式]下,按一下「:」冒號鍵進入「Last line mode」,例如:
: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」會往前尋找到您要的關鍵字爲止。

  • 保存文件
    「w」: 在冒號輸入字母「w」就能夠將文件保存起來 離開vim
    「q」:按「q」就是退出,若是沒法離開vim,能夠在「q」後跟一個「!」強制離開vim。
    「wq」:通常建議離開時,搭配「w」一塊兒使用,這樣在退出的時候還能夠保存文件。

6.簡單的vim配置

要配置好看的vim,原生的配置可能功能不全,能夠選擇安裝插件來完善配置,保證用戶是你要配置的用戶,
附上大佬已經寫好的連接按照提示便可配置出好看的vim:一條命令配置強大的vim

Linux編譯器-gcc/g++使用

  • 1.背景知識
    代碼要生成可執行程序要經歷如下四步:

    1. 預處理 (進行宏替換)
    2. 編譯 (生成彙編)
    3. 彙編 (生成機器可識別代碼)
    4. 連接 (生成可執行文件或庫文件)

    安裝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默認生成的二進制程序,是動態連接的,這點能夠經過 file 命令驗證

gcc選項:

-E 只激活預處理,這個不生成文件,你須要把它重定向到一個輸出文件裏面
-S 編譯到彙編語言不進行彙編和連接
-c 編譯到目標代碼
-o 文件輸出到 文件
-static 此選項對生成的文件採用靜態連接
-g 生成調試信息。GNU 調試器可利用該信息。
-shared 此選項將盡可能使用動態庫,因此生成文件比較小,可是須要系統由動態庫.
-O0
-O1
-O2
-O3 編譯器的優化選項的4個級別,-O0表示沒有優化,-O1爲缺省值,-O3優化級別最高
-w 不生成任何警告信息。
-Wall 生成全部警告信息。
相關文章
相關標籤/搜索