Linux探秘坊-------3.開發工具詳解(1)

1 初識vim編輯器

創建第一個vim編輯的代碼

在這里插入圖片描述

1.新建文件

在這里插入圖片描述

2.使用vim打開

3.打開默認是命令模式,寫代碼需要在屏幕上輸出“i”字符

  • 1.寫完代碼后要按Esc鍵退出到指令模式
  • 2.再按shift+:+wq即可保存并退出vim

(因為不支持鼠標,通常 使用鍵盤上的箭頭 移動光標進行編輯)
在這里插入圖片描述

4.cat進行查看

在這里插入圖片描述

5.gcc編譯文件

在這里插入圖片描述
運行成功

2. vim的多模式

1.模式切換

模式切換如圖:
在這里插入圖片描述
結論:
在這里插入圖片描述
命令模式可以理解為Windows系統中的鼠標,可以快速,高效得進行編程

2.命令補充

1.與光標有關的命令
  • n+gg :光標移動至第n行(任意行)
  • shift+g :光標移動至 最后一行
  • shift+$ : 光標移動至所在行的最后
  • shift+^ : 光標移動至所在行的最前
  • h,j,k,l :上下左右移動(h左,l右,j下,k上)
  • w,b: 光標按單詞間隔進行行列移動(w向后,b向前)
  • n+ x :在光標所在處 向后刪除 n個字符
  • n+ X :在光標所在處 向前刪除 n個字符

2.其他命令(命令模式)
  • yy :復制當前一行
  • n+ yy :從當前行開始復制n行代碼
  • p :將復制的內容黏貼至當前行的下一行
  • u :撤銷上一步操作
  • ctrl+r :對u進行撤銷,即恢復操作
  • n+ dd :剪切或刪除行
  • shift+r:進入替換模式,可以重新寫當前行的代碼
3.其他命令 (底行模式)
  • shift+:+set nu: 調出行號(底行模式)
  • “/+字符串” +n : 查找字符串,按n找到下一個字符串
  • !gcc+文件名 : 執行正在寫的程序文件,生成可執行程序

在這里插入圖片描述

在這里插入圖片描述

  • !./a.out (生成的可執行程序) : 執行程序
  • 在這里插入圖片描述
  • vs + 文件名(實現分屏操作
  • 在這里插入圖片描述
  • ctrl+ww,切換光標至另一個界面(可以用來復制其他文件中的內容配合“yy”)

在這里插入圖片描述

4.補充命令
    1. ctrl+v(進入視圖模式)->hjkl(移動光標,使其覆蓋部分內容)->shift+i->“//”(插入雙斜杠,也可以嘗試插入別的字符)->esc(回到命令模式)

批量化注釋

  • 2.ctrl+v(進入視圖模式)->hjkl(移動光標,使其覆蓋部分內容)->d

批量化刪除注釋

  • 3.shift+:->%s/xxx/aaa/g

將代碼中的xxx全部換成aaa

3.vim的簡要配置

1.進入家目錄 cd ~

在這里插入圖片描述

2.創建 .vimrc文件 catch .vimrc

在這里插入圖片描述

3.vim .vimrc 并在里面寫入想要的指令(可以自行去網上搜索)

我這邊寫入 set nu(顯示行數)和 set mouse=a(支持鼠標)

4.再次打開test.c

在這里插入圖片描述
發現已經添加了行號。

4.程序翻譯-------gcc/g++

1.預處理(宏替換+去注釋+條件編譯+頭文件展開)

舉例:
在這里插入圖片描述
使用gcc -E test.c -o test.i

  • -o:表示我們要形成的文件的名稱(這里即test.i)
  • gcc -E:表示從現在開始 只要預處理完成就停下來

用vim打開test.i并與test.c對比:
在這里插入圖片描述
宏替換+去注釋+頭文件展開全部完成)

2.編譯(生成匯編)

gcc -S test.i -o test.s

  • -o:表示我們要形成的文件的名稱(這里即test.s)
  • gcc -E:表示從現在開始 只要編譯完成就停下來

在這里插入圖片描述

3.匯編(生成機器可識別代碼)

gcc -c test.i -o test.o

  • -o:表示我們要形成的文件的名稱(這里即test.s)
  • gcc -c:表示從現在開始 只要匯編完成就停下來

在這里插入圖片描述

4.鏈接(生成可執行文件或庫文件)

在這里插入圖片描述

gcc test.o -o testtest就是可執行的文件

5.補充知識點sudo(添加用戶至白名單)

1.ls -l /etc/sudoers

在這里插入圖片描述

2.su(切換至root)
3.vim /etc/sudoers

在這里插入圖片描述
發現白名單里只有root,我們可以自行添加用戶:
在這里插入圖片描述

4.sudo驗證

在這里插入圖片描述

成功使用sudo,代表白名單配置成功。

在這里插入圖片描述

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

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

相關文章

基于海思soc的智能產品開發(高、中、低soc、以及和fpga的搭配)

【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing 163.com】 市場上關于圖像、音頻的soc其實非常多,這里面有高、中、低檔,開發方式也不相同。之所以會這樣,有價格的因素&am…

51單片機——DS18B20溫度傳感器

由于DS18B20數字溫度傳感器是單總線接口,所以需要使用51單片機的一個IO口模擬單總線時序與DS18B20通信,將檢測的環境溫度讀取出來 1、DS18B20模塊電路 傳感器接口的單總線管腳接至單片機P3.7IO口上 2、DS18B20介紹 2.1 DS18B20外觀實物圖 管腳1為GN…

STL容器-- list的模擬實現(附源碼)

STL容器-- list的模擬實現(附源碼) List的實現主要時考察我們對list這一容器的理解,和代碼的編寫能力,通過上節對list容器的使用,我們對list容器已經有了一些基本的了解,接下來就讓我們來實現一些list容器常…

Redis 學習指南與資料分享

Redis學習資料 Redis學習資料 Redis學習資料 Redis 作為一款高性能內存數據庫,在當今軟件開發領域占據著重要地位。其豐富的數據類型、強大的功能特性以及廣泛的應用場景,吸引著眾多開發者深入學習。以下為你精心整理的 Redis 學習指南與實用資料分享&…

Lynx TiDB 慢日志收集工具

作者: 小龍蝦愛大龍蝦 原文來源: https://tidb.net/blog/7247e68f 簡介 lynx 工具可以定時將 TiDB 集群的慢查詢收集并持久化到后端數據庫中,然后通過 grafana 查詢展示出來,這可以幫助我們更好的分析慢查詢日志。 背景 盡管…

Gin 源碼概覽 - 路由

本文基于gin 1.1 源碼解讀 https://github.com/gin-gonic/gin/archive/refs/tags/v1.1.zip 1. 注冊路由 我們先來看一段gin代碼,來看看最終得到的一顆路由樹長啥樣 func TestGinDocExp(t *testing.T) {engine : gin.Default()engine.GET("/api/user", f…

docker 基礎語法學習,K8s基礎語法學習,零基礎學習

下面是關于Docker和Kubernetes的基礎語法學習資料,包括一些關鍵概念和示例代碼。 Docker 基礎語法 1. 安裝 Docker 首先,你需要安裝 Docker。以下是不同操作系統上的安裝指南: Windows/Mac: 下載并安裝 Docker Desktop。 Linux: 根據你的…

【逆境中綻放:萬字回顧2024我在挑戰中突破自我】

🌈個人主頁: Aileen_0v0 🔥熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?💫個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 一、引言二、個人成長與盤點情感與心理成長學習與技能提升其它榮譽 三、年度創作歷程回顧創作內容概…

職場溝通與行為

職場溝通與行為 引言 在職場上,你是否曾遇到過困惑的溝通?是否對同事的行為有過疑慮?這不僅是個別現象,而是我們這個時代工作文化中的普遍問題。許多職場的摩擦,來自溝通不暢或是行為不當。那么,如何才能…

【Linux 重裝】Ubuntu 啟動盤 U盤無法被識別,如何處理?

背景 U盤燒錄了 Ubuntu 系統作為啟動盤,再次插入電腦后無法被識別 解決方案(Mac 適用) (1)查找 USB,(2)格式化(1)在 terminal 中通過 diskutil list 查看是…

中職網絡建設與運維ansible服務

ansible服務 填寫hosts指定主機范圍和控制節點后創建一個腳本,可以利用簡化腳本 1. 在linux1上安裝系統自帶的ansible-core,作為ansible控制節點,linux2-linux7作為ansible的受控節點 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…

數據庫服務體系結構

1. 數據庫服務應用配置 服務進行配置有什么作用? 實現服務運行啟動 實現某些功能 應用配置有三種方式? 利用編譯安裝進行配置 編寫配置文件信息 ,.默認的配置文件: /etc/my.cnf 利用啟動命令參數配置信息,mysqld_safe --skip-grant-tables --…

Langchain+FastApi+Vue前后端Ai對話(超詳細)

一、引入 首先可以先看下作者的文章 FastApi相關文章:創建最簡單FastApi的項目Vue相關文章:最簡單的aixos二次封裝Langchain相關文章:如何使用LangSmith跟蹤deepseek模型 二、后端搭建 1 項目文件結構 routers:存放api接口se…

如何在不暴露MinIO地址的情況下,用Spring Boot與KKFileView實現文件預覽

在現代Web應用中,文件預覽是一項常見且重要的功能。它允許用戶在不上傳或下載文件的情況下,直接在瀏覽器中查看文件內容。然而,直接將文件存儲服務(如MinIO)暴露給前端可能會帶來安全風險。本文將介紹如何在不暴露MinI…

簡歷_使用優化的Redis自增ID策略生成分布式環境下全局唯一ID,用于用戶上傳數據的命名以及多種ID的生成

系列博客目錄 文章目錄 系列博客目錄WhyRedis自增ID策略 Why 我們需要設置全局唯一ID。原因:當用戶搶購時,就會生成訂單并保存到tb_voucher_order這張表中,而訂單表如果使用數據庫自增ID就存在一些問題。 問題:id的規律性太明顯、…

Jira中bug的流轉流程

Jira中bug的狀態 1. 處理Bug的流程2. bug狀態流轉詳述bug的狀態通常包括 1. 處理Bug的流程 2. bug狀態流轉詳述 bug的狀態通常包括 未解決 1. 測試人員創建一個bug,填寫bug的詳細信息,如概要、bug級別、復現步驟、現狀、預期結果等 2. 定位bug&#x…

Linux的幾個基本指令

文章目錄 一、幾個基本指令1、ls 指令注意! 2、pwd命令3、touch 指令4、mkdir 指令注意!注意! 5、cd 指令注意! 6、cp 指令 今天我們學習Linux下的幾個基本指令,本篇是在Xshell環境下執行的。 一、幾個基本指令 1、…

軟件工程師歐以寧:引領無人機導航與物聯網安全的技術革新

在科技日新月異的今天,軟件工程師歐以寧憑借卓越的技術能力和前瞻性的創新思維,成為了無人機自主導航和物聯網安全領域的佼佼者。作為一名深耕技術前沿的專家,歐以寧不僅推動了無人機導航技術的突破性進展,還為智能家居和物聯網的安全架構提供了全新的解決方案。她的研究成果,以…

數據庫基礎練習1(創建表,設置外鍵,檢查,不為空,主鍵等約束)安裝mysql詳細步驟

安裝MySQL詳細步驟 1. 下載 MySQL 安裝程序 訪問 MySQL 官方網站:MySQL Downloads。在下載頁面,選擇 "MySQL Community (GPL) Downloads"。在 "MySQL Community Server" 部分,根據你的操作系統(Windows&…

laravel中請求失敗重試的擴展--Guzzle

背景 開發過程中,跟外部接口對接時,很常見的要考慮到失敗重新的情況,這里記錄一下我用的失敗重試的情況, 重試方法 1、使用 Laravel 的 HTTP 客戶端和異常處理 結合異常處理和重試邏輯 use Illuminate\Support\Facades\Http;…