Linux環境基礎與開發工具使用

1. Linux編譯器vim

1.1 vim的基本概念講解

vim有很多種模式,我們初學者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。

命令/正常模式(Normal mode)
控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode
插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁的編輯模式。
末行模式(last line mode)
文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。 在命令模式下, shift+: 即可進入該模式。

?PS:不過有一點要特別注意,就是你進入vim之后,是處于[正常模式],你要切換到[插入模式]才能夠輸入文字。

在末行模式下我們輸入w就是保存,輸入q就是退出,輸入wq就是保存并退出,wq!就是強制保存并退出。

1.2 三模式之間的切換

我們一開始進入vim是命令模式,我們要切換成插入模式才可以編寫代碼。

以下就是三模式之間的切換的方式:

?1.3?vim正常模式常用命令

? 行間移動:

? h:向左移動一個字符 ;nh 向左移動n個字符。

? l:向右移動一個字符 ;nl 向右移動n個字符。

? j:向下移動一行 ;nj 向下移動n行。

? k:向上移動一行 ;nk 向上移動n行。

? 行內移動:

? 0:移動到行首。

? ^:移動到本行第一個非空白字符。

? $:移動到行尾。

? 單詞移動:

? w:移動到下一個單詞的開頭。

? e:移動到當前或下一個單詞的末尾。

? 文件內跳轉:

? gg:移動到文件開頭。

? G:移動到文件末尾。

? nG 或 :n :跳轉到第n行 。

? 翻頁移動:

? Ctrl + u:向上滾動半頁。

? Ctrl + d:向下滾動半頁。

? Ctrl + b:向上滾動一整頁。

? Ctrl + f:向下滾動一整頁。

? 刪除:

? x:刪除光標所在字符 ;#x(如6x )刪除光標后#個字符。

? X:刪除光標前一個字符 ;#X(如20X )刪除光標前#個字符。

? dd:刪除光標所在行 ;#dd(如3dd )從光標所在行開始刪除#行。

? d$ 或 D:刪除光標到行尾內容。

? dw:刪除光標到單詞末尾內容。

? 復制:

? yy:復制光標所在行 ;#yy(如6yy )復制光標所在行往下#行內容。

? y$:復制光標到行尾內容。

? yw:復制一個單詞。

? 粘貼:

? p:若復制內容為行,粘貼到當前行下方;若小于一行,粘貼到光標右側。

? P:若復制內容為行,粘貼到當前行上方;若小于一行,粘貼到光標左側。

? #p(如3p ):粘貼#次。

? 替換:

? r:替換光標所在字符,輸入新字符即可替換 ;#r(如2r )替換#個字符。

? R:進入連續替換模式,直到按Esc 鍵結束。

? 更改:

? cw:更改光標所在處的字到字尾處 ,刪除單詞并進入插入模式 ;#cw(如2cw )更改#個單詞。

? c$:更改從光標位置到行尾的內容,刪除并進入插入模式。

? 撤銷與恢復:

? u:撤銷上一步操作 ;#u(如5u )撤銷最近#次操作。

? Ctrl + r:恢復撤銷的操作。

? 重復操作:

? .:重復上一次操作 ;#.(如10. )重復上一次操作#次。

1.4 vim末行模式常用命令

? 跳轉到指定行:
:行號(如 :10,光標跳轉到第10行)。

? 跳轉到文件開頭:
:1(快速回到首行)。

? 跳轉到文件末尾:
:$(光標移至最后一行)。

? 查找:

? 正向查找:/關鍵字(如 /hello,從當前位置向后查找,按 n 下一個,N 上一個)。

? 反向查找:?關鍵字(如 ?world,從當前位置向前查找,按 n 下一個,N 上一個)。

? 替換:

? 行內替換:范圍s/舊內容/新內容/g(如 :1,20s/abc/def/g,將1-20行的“abc”替換為“def”)。

? 全局替換(帶確認)::%s/舊內容/新內容/gc(% 表示全文,c 逐個確認替換)。

? 保存文件:

? :w(保存當前修改)。

? :w 文件名(另存為新文件)。

? 退出VIM:

? :q(未修改或已保存時退出,否則報錯)。

? :q!(強制退出,不保存修改)。

? :wq 或 :x(保存并退出)。

? 顯示/隱藏行號:
:set nu(顯示); :set nonu(隱藏)。

? 開啟/關閉語法高亮:
:syntax on(開啟); :syntax off(關閉)。

? 高亮/取消搜索結果:
:set hlsearch(高亮); :set nohlsearch(取消)。

執行外部命令

:!命令(如 :!ls,不退出VIM執行Shell命令)。

2. g++與gcc

g++與gcc分別就是在Linux編譯器里面的C++與C語言。

下面就是我們使用C++寫的一個代碼,那么我們在編譯的時候就必須使用g++(我們寫的純C語言的代碼也可以用g++)。

?我們通過以下的方式就可以生成一份可執行文件(默認叫做a.out)。

?3. 動態庫與靜態庫

?我們要知道代碼對于計算機來說并不是像我們看到的那樣的,我們寫的代碼會經歷預處理(進行宏替換) ->編譯(生成匯編) ->匯編(生成機器可識別代碼)-> 鏈接(生成可執行文件或庫文件)。

而動態庫與靜態庫則是在鏈接階段被嵌入代碼中。

那么動態庫與靜態庫又有什么差別呢?我個人認為他們就好像自定義函數與內聯函數。

編譯器記錄下動態庫里面的一些信息,然后把源代碼里面包含這些信息的部分與動態庫進行連接,從而實現調用。

靜態庫則是在鏈接階段把自己的代碼拷貝到原代碼中。

4. 自動化構建工具makefile

makefile寫好之后,我們只需要一個輸入make和make clear就可以實現可執行文件的生成與銷毀。

以下就是makefile里面要寫的內容:

然后我們就可以生成可執行文件mytestvim。?

?最后我們可以通過make clean來對mytestvim進行銷毀:

?像clean這種,沒有被第一個目標文件直接或間接關聯,那么它后面所定義的命令將不會被自動執行,不過,我們可以顯示要make執行。即命令——“make clean”,以此來清除所有的目標文件,以便重編譯。 但是一般我們這種clean的目標文件,我們將它設置為偽目標,用 .PHONY 修飾,偽目標的特性是,總是被執行的。

PS:像clean這樣的偽目標我們可以設置多個。

5. git命令

首先我們要通過yum install git來安裝相關的git命令。

然后我們需要輸入git clone 【HTTPS】

點擊這個位置就可以進行查看HTTPS:?

這樣我們就把代碼倉庫復制到了本地,接著我們需要進入到自己的代碼倉庫里面并把需要上傳的代碼復制到倉庫,然后就git add [文件名]當然我們也可以git add . 就是吧使用沒有添加的全部添加進去。

如果出現這些字我們就需要復制紅線內部的內容然后輸入自己的郵箱和名字。?

然后輸入git commit -m "要取的名字"。

最后輸入git push,接著輸入自己賬號的手機號和密碼,接著我們如果看到以下的內容就代表成功了。

特別要注意一點,git是無法全局查找的,所以是一定要把代碼復制進本地里面的。

就是要放進下圖的這個路徑里面。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79878.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Python星球日記》 第36天:線性代數基礎

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 專欄:《Python星球日記》,限時特價訂閱中ing 目錄 一、標量、…

使用VMware Workstation pro 17.5.1在Windows上安裝Ubuntu 24.04.2的 詳細步驟

一、準備工作 1. 下載Ubuntu 24.04.2 ISO鏡像 官方下載地址:Ubuntu 24.04.2 (Noble Numbat) 選擇 ubuntu-24.04.2-desktop-amd64.iso(桌面版)或 ubuntu-24.04.2-live-server-amd64.iso(服務器版)。 2. 確認系統要求…

ios systeam introduction

Here is an in-depth look at Apple’s iOS, from its inception to its latest major release, covering architecture, core components, security, app lifecycle, development tools, and the headline features of iOS 18. iOS began life as “iPhone OS,” unveiled alo…

優化04-選擇率和直方圖

選擇率 在Oracle數據庫中,選擇率(Selectivity) 是優化器(CBO,基于成本的優化器)用來評估SQL語句中某個條件(如WHERE子句)過濾數據的比例的關鍵指標。它直接影響優化器選擇執行計劃的…

python實戰:通過輸入文字匹配在docx文檔中的具體位置

在指定的docx文檔中,輸入一串文字來查看該文字在文檔中的具體位置;方便后續處理(如替換文字,高亮顯示等等操作) from docx import Documentdef find_text_in_docx(file_path, search_text):# 讀取docx文件doc = Document(file_path)# 遍歷段落,查找匹配的文本for i

Flutter——數據庫Drift開發詳細教程(二)

目錄 1.核心API1.1查詢數據列表分頁1.2 列表排序1.3推遲獲取與觀察 1.核心API 1.1查詢數據列表分頁 限制返回的結果數量limit&#xff0c;從某一位置開始查詢offset ///limit10, offset10 Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {return …

mux-vlan基礎配置

1.top配置 2.各個交換機設置 sw3交換機的 sysname swb # undo info-center enable # vlan batch 10 20 30 100 # vlan 10description financial vlan vlan 20description marketing vlan vlan 30description client vlan vlan 100description principal vlanmux-vlansubordi…

SAM詳解2(初級應用)

SAM SAM5. 初級應用5.1 靜態本質不同子串個數5.2 字符串匹配5.3 關于子串出現次數5.4 動態添加時本質不同子串個數SAM 5. 初級應用 記 l o n g e s t ( x ) longest(x) longest(x) 為點 x x x 代表子串集合中最長串的長度。記 s h o r t e s t ( x ) shortest(x) shortest(…

【日擼 Java 三百行】Day 4(條件語句實戰——閏年問題)

目錄 Day 4&#xff1a;條件語句實戰——閏年問題 一、基礎知識及代碼思路 二、代碼及測試 小結 Day 4&#xff1a;條件語句實戰——閏年問題 Task&#xff1a; if 語句的嵌套.基本規律自行百度.布爾類型. 一、基礎知識及代碼思路 1. 什么是閏年&#xff1f; 閏年是歷法中…

MySQL 中 EXISTS (SELECT 1 FROM ...) 的用法詳解

EXISTS (SELECT 1 FROM ...) 是 MySQL 中用于存在性檢查的核心語法&#xff0c;其核心邏輯是判斷子查詢是否返回至少一行數據。以下從作用原理、使用場景、性能優化等方面展開解析&#xff0c;并結合具體示例說明。 1. 基本語法與作用原理 語法結構&#xff1a; SELECT 列名 F…

阿里云服務器防御是怎么做出來的?服務器攻擊方式有幾種?

阿里云服務器防御是怎么做出來的?服務器攻擊方式有幾種&#xff1f; 服務器防御是一個多層次、多維度的體系&#xff0c;通常包括以下核心措施&#xff1a; 1. 網絡層防御 防火墻&#xff08;Firewall&#xff09;&#xff1a;過濾非法流量&#xff0c;僅允許授權通信&#xf…

ElasticSearch深入解析(八):索引設置、索引別名、索引模板

一、索引的動態設置、靜態設置 索引設置包含兩部分核心內容&#xff1a; 靜態設置(static index settings)&#xff0c;只允許在創建索引時或者針對已關閉的索引進行設置。指動態設置(dynamic index settings)&#xff0c;可以借助更新設置(update settings)的方式進行動態更新…

Prometheus實戰教程:k8s平臺手動部署Grafana

以下是一個可用于生產環境的 Kubernetes 部署 Grafana 的 YAML 文件。該配置包括 Deployment、Service、ConfigMap 和 PersistentVolumeClaim&#xff0c;確保 Grafana 的高可用性和數據持久化。 Grafana 生產部署 YAML 文件 ☆實操示例 cat grafana-deployment.yaml 登錄后復制…

VSTO外接程序與VBA的聯動嘗試

文章目錄 前言一、第一坑&#xff1a;安裝offic2007后excel加載項找不到了二、示例1 通過Ribbon XML自定義Excel主菜單并添加新項二、示例1 總結三、示例2 創建VSTO外接程序三、示例2 總結四、示例 3 C# VSTO外接程序示例四、示例 3 總結五、實現C# 的VSTO調用VBA函數(xlam)六、…

DeepSeek驅動的金市情緒量化:NLP解析貿易政策文本的情緒傳導路徑

【AI觀察】政策信號與市場情緒的量化關聯 基于自然語言處理技術對全球財經文本的情緒分析顯示&#xff0c;4月30日亞盤時段現貨黃金價格波動率較前日下降12.3%&#xff0c;與技術面修正指標呈現強相關性。特政府最新關稅政策調整引發市場風險偏好指數&#xff08;RPI&#xff…

期末代碼Python

以下是 學生信息管理系統 的簡化版代碼示例&#xff08;控制臺版本&#xff0c;使用文件存儲數據&#xff09;&#xff0c;包含核心功能&#xff1a; 1. 定義學生類 class Student: def __init__(self, sid, name, score): self.sid sid # 學號 self.name name # 姓名 self.s…

zotero pdf中英翻譯插件使用

最近發現一個pdf中英翻譯的神器zotero-pdf2zh&#xff0c;按照官方安裝教程走一遍的時候&#xff0c;發現一些流程不清楚的問題&#xff0c; 此文就是整理一些安裝需要的文件以及遇到的問題&#xff1a; 相關文件下載地址 Zotero 是一款免費的、開源的文獻管理工具&#xff0…

本地MySQL連接hive

1、首先需要修改MySQL的配置&#xff0c;允許遠程連接&#xff1a; # 在本地MySQL服務器上執行 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到 bind-address 行&#xff0c;將其修改為&#xff1a; bind-address 0.0.0.02、在本地MySQL中創建用戶并授權&#xff08;注意…

Nginx核心功能2

一&#xff1a;正向代理 正向代理&#xff08;Forward Proxy)是一種位于客戶端和原始服務器之間的代理服務器&#xff0c;其主要作用是將客戶端的請求轉發給目標服務器&#xff0c;并將響應返回給客戶端Nginx的正向代理充當客戶端的“中間人”&#xff0c;代表用戶訪問外部資源…

高定電視,一場關于生活方式的覺醒

需要有自己的工作室&#xff0c;雇用3個以上專職模特&#xff0c;至少15名全職員工和20名技術工匠?&#xff1b; 每年都要參加巴黎高級時裝周&#xff0c;展示至少50款原創設計&#xff1b; 使用的面料必須高質量、昂貴且不同尋常&#xff0c;設計上注重細節和個性&#x…