該專欄所有內容筆記均來自傳智播客培訓班
1.什么是操作系統(operate system OS)
小議:承上啟下作用,向下可以控制硬件,向上能夠支持軟件的運行。一個可以控制硬件的軟件。
小明找小紅聊天,小明打開QQ,輸入消息,小明的QQ將信息傳遞---->(小明)操作系統---->網絡設備----->(小紅)操作系統---->小紅的QQ---->小紅收到消息。反之亦然
ps:以前的諾基亞沒有操作系統,想要用QQ必須裝個java虛擬機。缺點:同一時刻不允許運行多個程序。但是,小明想運行A軟件又想運行B軟件還想運行C軟件這時候就需要操作系統。
2.現實生活中的操作系統
Windows、Mac、Android、iOS、Linux…
ps:Android主要運用在移動端、Windows、Mac只要運用在電腦PC上
3.操作系統的發展史
1965年的電腦主要是一臺主機連接多個終端(顯示器、鍵盤、鼠標),但最多能連接30臺左右終端
由于30臺終端太少了,1965年美國一些大牛開始搞Multics項目,想把終端搞成300臺連接,最后失敗了。Ken Thompson為了玩游戲,自己搞了Unix操作系統的原型,當時NCPL語言較為流行,K就以BCPL語言為基礎,獨自開發了很接近硬件的B語言(BCPL首字母),并用B語言寫了第一個Unix操作系統。但是B語言跨平臺性能很差,之后K找他的同伴Dennis Ritchie一塊在B語言的基礎上開發了跨平臺能力很強的C語言(BCPL第二個字母),1972年C語言主體完成,C語言由此誕生。之后K和D使用C語言編寫Unix操作系統,放到其他電腦上運行效果很棒,兼容性很強。
之后Unix操作系統開始不斷的更新迭代(在原來的基礎上升級完善),到Version 7 Unix版本的時候,貝爾實驗室引起了注意,發現了商機,開始對外申請專利閉源。當時一個Andrew S. Tanenbaum教Unix操作系統的教授生氣了,尼瑪,你還收費?然后由于A對Unix特別熟悉吃透了Unix的運行原理,之后自己寫了一個操作系統,A以小型UNIX(mini-UNIX)之意,將其操作系統稱之為MINIX。然后MINIX是完全開源的,A教授當時僅僅為了教學使用,一些其他功能未編寫,并無意去編寫。
之后一個X大牛,得到MINIX的源碼,并對其進行加工,然后他很聰明發布到網上請求各大高手進行共同完善,之后Linux不斷的完善茁壯成長起來了。現在的Android底層代碼也是Linux。
ps:如果當時A教授執意去開發MINIX,說不定今天風靡全球的就是MINIX了。
Unix有好多版本,其中AT&System V演變到Minix,之后演變到Linux
Android實際上就說:Linux內核(kernel)再加上Java里面的一些東西。
目前絕大多數的手機、pc也都是基于Unix操作系統的。且Linux使用C語言編寫的。
Linux的不同版本以及其應用領域
Linux內核版
即Linux最核心的代碼,到現在為止已經有成千上百萬行代碼了,研究其已經沒啥意義了,發展的太快了,已經相對很成熟了。
Linux發行版
Android也就是拿到Linux的內核,然后再封裝些java的東西形成一個新的操作系統。Redhat、Ubuntu、centOS…都是拿Linux的內核然后附加些“皮膚”形成新的操作系統而已。
4.Linux常用命令
打開終端 Ctrl+Alt+t
把終端放大 Ctrl+Shift+‘+’
把終端縮小 Ctrl+‘-’
找一些屬性或者縮小放大關閉的時候鼠標指向最上端,所有屬性都在最上端
顯示當前路徑里面的東西 ls
顯示當前文件夾里面內容的詳細屬性 ls -l
在Linux操作系統里面沒有什么盤符這一說,所有的文件都在根目錄 / 下
在根目錄下有很多文件夾,其中
bin主要放程序
boot跟Ubuntu的啟動相關
cdrom主要跟光盤有關
dev和設備相關
etc所有程序服務器配置的地方(新手機開機需要選擇語言、桌面主題之類的東西)
lib存放庫(我會用鋤頭但不會制作,你可以用別人的鋤頭,此時所用別人的鋤頭就會放在lib里面)
home除了home文件夾其他的不要隨便動
某個文件夾內出現一個房子的圖標就是家目錄,即打開終端的時候默認路徑
顯示當前路徑路徑 pwd
(這個比較常用)
創建文件touch 文件名
創建文件名稱為1.txt touch 1.txt
,這里的1.txt只是文件名稱罷了
在Linux中沒有txt之類的文件類型之說,創建a,也是文件 touch a
創建文件的時候,文件名稱若以 . 開頭,則默認為隱藏文件。
顯示當前路徑下的所有文件信息ls
例如 touch .yy
,若以ls
進行顯示文件名稱則顯示不出來,得用ls -a
進行顯示
創建文件夾名稱為yy mkdir yy
清除當前所敲的所有命令 clear
cd命令表示切換路徑,切換路徑返回上一級 cd ..
這里的..
表示上一級,當然也可以換成其他的具體路徑就切換至具體的路徑中去
1,Linux命令使用方式
Linux命令格式:
命令 | 選型 | 參數 |
---|---|---|
command | -option | parameter |
ls之后帶-
的表示選項,不帶-
的表示參數
顯示當前目錄結構 ls
顯示根 / 目錄下的所有內容名稱ls /
顯示根目錄下的dev文件夾里面的所有內容名稱ls /dev
- 當然如果文件夾里面的文件特別多也可以使用通配符(*)進行篩選,例如顯示根目錄下的dev文件夾下的所有以y開頭的文件,
ls /dev y*
,y,yan,yanyu,yu…這些文件名稱會顯示,*
可跟零位,一位,多位 - 其中
?
也為通配符,只能負責占一位,例如:ls /dev y?
即顯示根目錄下的dev文件夾下的所有以y開頭且第二位不確定的所有文件名稱,yy,yu…這些文件會顯示出來,一個?
只能跟一位,當然也可以多個ls y??
,顯示yan,yuu…這些第二位第三位未知的文件名稱 - 另外
[]
也可以當成通配符,嚴格算是正則表達式,例如:ls y[abcd]n
,此時只能顯示yan,ybn,ycn,ydn這些文件的名稱;也可以is y[a-d]n
效果是一樣的。
若touch .yy
進行創建 .yy文件,以 . 開頭的文件則默認為隱藏文件
此時需要使用ls -a
進行顯示,即把隱藏文件名稱顯示出來
顯示文件以列表的形式詳細顯示出來,其中就包括文件大小,默認以bit為單位顯示ls -l
與上一個命令幾乎一樣,區別在與顯示文件大小的時候以合適的單位進行顯示出來ls -l -h
其中選型里面的參數順序無所謂,例如ls -a -l -h
和ls -l -a -h
效果是完全一樣的
當然也可以進行簡寫ls -alh
或者ls -lah
效果也都一樣
將上述的功能也可以進行結合,ls /dev -alh
即顯示根目錄下的dev文件夾下的所有文件的名稱的詳細信息進行顯示,當然參數和選型的位置也可以互換效果一樣。
2,參看幫助文檔
當你對某個命令不太了解的時候可以使用命令 --help
或者man 命令
對命令的詳細效果進行顯示(man—manual手冊)
顯示ls這個命令的所有的功能參數選型ls --help
也可以通過man ls
進行查看,支持上下鍵滾動,其中f是下一頁,b是上一頁,q結束幫助文檔
查看文件內容cat 文件名稱
顯示歷史敲過的命令history
,重新執行對應數的命令! 對應的數
,例如! 1999
即執行歷史記錄里面第1999個輸入過的命令再重新執行一次,當然也可以通過上下鍵進行翻閱歷史命令。
Linux命令-文件、磁盤管理
1,文件管理
重定向覆蓋 >:把原本顯示在終端的內容存儲到yanyu.txt文件里面,若沒有該文件則會先創建該文件,然后會將原先yanyu.txt里面的內容給覆蓋掉ls > yanyu.txt
重定向追加**>>** :把原本顯示在終端的內容存儲到yanyu.txt文件里面,若沒有該文件則會先創建該文件,然后會追加到原先yanyu.txt里面的內容里面ls >> yanyu.txt
cat 文件名
、more 文件名
都是查看文件內容
cat yy.txt
查看yy.txt文件里面的內容一次性全部顯示出來
more yy.txt
查看yy.txt文件里面的內容一點一點的按進度進行顯示出來,b上一頁,f下一頁,q退出
若需要查看當根目錄下的dev目錄下內容,且重定向追加到一個固定文件a.txt里面ls -alh /dev >> a.txt
,然后查看信息more a.txt
,之后再刪除該文件rm a.txt
顯然很麻煩,這時候需要使用管道 | 進行操作,顯示完然后消失即可ls -alh /dev | more
若多個命令一起執行可以用英文分號進行顯示ls -l;ls -alh
當所要查找的文件名特別長的時候需要使用Tab
進行補齊,兩次Tab
會把需要補齊的信息全部顯示出來。當你想要切換路徑,但是不知道當前文件夾內都有什么的時候,cd /TabTab
就可以把根目錄下的所有文件顯示出來供你進行選擇
跳轉到當前文件夾下的yanyu文件夾里面cd ./yanyu
返回當前路徑的上一個路徑里面cd ..
/home/a/b/c
若當前處于c文件夾內,想要跳轉到a文件夾內如何操作?
相對路徑:cd ../..
或者cd ../../
絕對路徑:cd /home/a
或者cd /home/a/
跳轉到上一次跳轉的路徑中去cd -
切換到家目錄(文件夾圖標會顯示一個房子的樣子)cd ~
創建目錄mkdir
在Linux中只有文件和目錄這兩個說法,文件不分后綴,目錄實則就是文件夾
當你敲完特別多的代碼命令卻發現沒啥用,原則上你得一個一個刪除,這時候Ctrl+C
就可以跳過不執行該命令,相當于終止,以后進入某個程序出不來了,直接使用該命令即可
當你想要刪除所有 .txt文件的時候,直接rm *.txt
,通配符刪除
以目錄的形式顯示所有文件及文件夾tree
若需要在A文件夾下的B文件夾下的C文件夾下的D文件夾下創建E文件夾mkdir A/B/C/D/E -p
刪除空文件夾rmdir 文件夾名稱
刪除空文件夾或文件rm 文件夾或文件名稱
刪除文件,文件夾,文件夾空不空無所謂rm 文件夾或者文件名稱 -r
,其中 -r嚴格來說表示遞歸的去刪除
連接
- 軟連接
連接實則是Windows里面的創建快捷方式罷了
將原名稱重命名,文件夾,文件都可以重命名mv 原名稱 現名稱
對原文件創建連接(即快捷方式而已)ln -s 原文件名稱 創建快捷方式名稱
,(s就是soft的含義)快捷方式一般為藍色;當rm 原文件名稱
將原文件刪除之后,快捷方式名稱會失效變成紅色,這里的快捷方式就相當于軟連接。
- 硬連接
有軟連接肯定會有對于的硬連接ln 原文件名稱 創建快捷方式名稱
,這里為硬連接。也就是原文件刪除后,創建的快捷方式名稱照樣可以讀取原來的數據。
軟連接—>指向原文件名稱的快捷方式,原文件刪除之后失效
硬連接—>指向原文件內容的快捷方式,原文件刪除之后仍可以讀取文件內容
Linux里面存在一個硬連接數來接收每個指向內容的硬連接個數,Linux中文件的內容和名稱是存放在不同的位置的,軟連接中的快捷鍵是指向原文件名稱的,原文件刪除后當然軟連接失效;而硬連接卻是指向文件內容的,每創建一個硬連接,硬連接數會加一。當然每刪除一個硬連接,硬連接數會相應減一,當硬連接數為零時,系統會將內容給釋放掉。
查看多個文件內容,只能查看不能編輯cat 文件名稱1 文件名稱2 文件名稱3
將多個文件內容進行合并輸入到yy.txt中cat 1.txt 2.txt 3.txt > yy.txt
,這里的yy.txt若不存在則會自動創建
文本搜索命令grep
從指定的文件里面搜索指定的內容
搜索a.txt文件里面包含yanyu的內容grep “yanyu” a.txt
,
同時將搜索的內容所在的行數顯示到前面grep -n “yanyu” a.txt
顯示文件里面不包含yanyu的所有內容grep -v “yanyu” a.txt
顯示文件里面以yanyu開頭的所有內容grep “^yanyu” a.txt
顯示文件里面以yanyu結尾的所有內容grep “yanyu$” a.txt
拷貝文件cp(copy)
將a.txt文件復制粘貼到A文件夾下cp a.txt A
若A為空文件夾或者里面有內容,且要復制到B文件夾下cp -r A B
移動文件、對文件或者文件夾重命名mv
將a.txt文件命重命名為b.txtmv a.txt b.txt
將a.txt文件移動(剪切粘貼)到B文件夾下mv a.txt B
查找文件find
find可以從指定目錄中搜索文件名,而grop則是從指定文件里面搜內容
(sudo表示最高權限去搜索)通配符要學會靈活使用
從根目錄下搜索文件名包含name的所有文件sudo find / -name "*name*"
從根目錄下搜索文件名為name的所有文件sudo find / -name "name"
當然不需要全部都牢記,知道如何去查命令即可find --help
歸檔管理(打包、解壓)tar
- 打包cvf,tar
tar -cvf 打成包的名稱.tar 需要打包的文件名稱
運行完成后會顯示所打包的所有文件名稱
將當前路徑下的所有 .java為后綴的文件打包且包名為yanyu.tar
tar -cvf yanyu.tar *.java
打包之后大小不變
- 解包xvf
tar -xvf 壓縮包的名稱.tar
將打包后的文件解包到當前路徑且打包的文件不刪除
tar -xvf yanyu.tar
- 壓縮zcvf,tar.gz、tar.bz2
壓縮之后文件大小才會變小
tar -zcvf 壓縮之后的壓縮包名稱.tar.gz 所要壓縮的文件名稱
tar -jcvf 壓縮之后的壓縮包名稱.tar.bz2 所要壓縮的文件名稱
zip 壓縮之后的壓縮包名稱.zip 所要壓縮的文件名稱
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.tar.gz
tar -zcvf yanyu.tar.gz *.py
另一種壓縮格式
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.tar.bz2
tar -jcvf yanyu.tar.bz2 *py
其他壓縮格式
將所有 .py后綴的文件壓縮且壓縮包名稱為yanyu.zip
zip yanyu.zip *py
tar.gz壓縮包大小要比tar.bz2壓縮包小,zip壓縮包最大
顯示當前路徑下所有文件信息ll
其與ls -ls
等價
- 解壓zxvf
tar -zxvf 壓縮包的名稱.tar.gz
tar -zxvf 壓縮包的名稱.tar.gz -C 指定解壓到的路徑
tar -jxvf 壓縮包的名稱.tar.bz2
tar -jxvf 壓縮包的名稱.tar.bz2 -C 指定解壓到的路徑
unzip 壓縮包的名稱.zip
unzip -d 指定解壓到的路徑 壓縮包的名稱.zip
將壓縮包解壓到當前路徑且壓縮包不刪除
tar -zxvf yanyu.tar.gz
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
tar -zxvf yanyu.tar.gz -C ./B
當然若B文件夾就在當前目錄下這樣也可以tar -zxvf yanyu.tar.gz -C B
另一種解壓格式
tar -jxvf yanyu.tar.bz2
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
tar -jxvf yanyu.tar.bz2 -C ./B
當然若B文件夾就在當前目錄下這樣也可以tar -jxvf yanyu.tar.bz2 -C B
其他解壓格式
unzip yanyu.zip
將壓縮包解壓到當前路徑下的B文件夾下前提B文件夾是存在的,且壓縮包不刪除
unzip -d yanyu.zip ./B
當然若B文件夾就在當前目錄下這樣也可以unzip -d yanyu.zip B
上述的所有命令其實都在根目錄下的bin文件夾里面cd /bin
若要查看命令所在路徑只需要which 命令
即可
查看ls這個命令在哪which ls
Linux命令-系統管理
查看當前月份的日歷具體到當前月cal
,沒有農歷只有陽歷
將指定年份所有的日歷都顯示出來cal -y 指定年份
將1999年的所有月份日歷顯示出來cal -y 1999
查看當前時間date
結合起來,可以將當前日歷打印到指定文件a.txt里面cal -y 1999 > a.txt
或者打印當前時間date > a.txt
也可以按自己規定的樣式輸出時間date "+%Y其間可以隨便添格式%m其間可以隨便添格式%d"
其中%Y為年(2017),%y也為年(17),%m為月,%d為天,大小寫的區別自己去試吧,我就沒那么閑著沒啥去試了哈
查看進程信息ps
顯示當前這一時刻正在運行的進程ps
顯示Linux所有的進程一顯示一輸出就完了ps -aux
顯示linux所有的進程會不斷的動態顯示只有按下q退出之后才停止top
;更詳細的動態顯示htop
若某個程序占用cup過大則可以通過kill 對應PID
將其sha掉,這里的PID通過ps -aux
可查看
若某個進程特別死皮不要了,則可以通過kill -9 對應PID
將其sha掉
關機重啟
重啟reboot
立刻關機shutdown -h now
20分鐘之后關機shutdown -h +20
晚上10點14分關機shutdown -h 22:14
顯示硬盤的使用情況df
或df -h
顯示當前路徑中文件或文件夾使用情況du
或du -h
查看當前電腦的網絡信息ifconfig
,其中io稱之為本地環回其是虛擬出來的,用于測試電腦的網絡功能是否好使,一般其IP為127.0.0.1
將指定的網卡更改指定的IPifconfig 對應網卡 指定IP
指定與固定的電腦IP測試是否可以網絡互通ping 其他電腦的ip
用戶權限管理
Linux是個多用戶多任務的操作系統
多任務即當前操作系統可以同時運行多個程序
多用戶指的是可以在不用退出當前賬戶的前提下可以使用其他的賬戶來執行操作些事情
添加一個新的用戶sudo useradd 用戶名稱 -m
,執行過程:創建了‘用戶名稱’這個賬戶順便在home文件夾里面創建了個文件夾,這個文件夾當成這個賬戶的家目錄,并且這個家目錄的名稱和這個’用戶名稱‘一模一樣。其中 -m表示創建完賬戶之后順便會在home下面創建一個這個賬戶的家目錄(也就是文件夾),家目錄名稱與賬戶名稱一致
sudo useradd python -m
之后會在home文件夾下出現一個python文件夾
如何確定其是個文件夾還是個用戶呢?cat /etc/passwd
之里面保存的信息都是賬戶的信息
在Windows中可以通過注銷來選擇其他用戶進行登錄
Linux則通過sudo su 用戶名稱
來切換用戶,之后路徑與原先的路徑不變
Linux則通過sudo su -r 用戶名稱
來切換用戶,之后會跳轉到用戶名稱的家目錄下
切換到python用戶sudo su python
,此時會提示,需要輸入密碼,傻臉了~;執行該命令之后所在路徑不會變,還是原來的路徑pwd
可以查看觀察一下;
此時若sudo su - python
就會切換用戶的時候直接跳轉到該用戶的家目錄中去
新創建的用戶是沒有密碼的,需要對用戶進創建密碼sudo passwd 用戶名稱
對python該用戶設置密碼sudo passwd python
,之后輸入兩次密碼即可;當然,當你忘記密碼的時候也可以通過該命令對密碼進行重置操作
查看當前的賬戶名稱whoami
退出賬戶exit
退出到之前的原先賬戶
在Linux里面可以打開多個終端切換到不同的賬戶中去,倆終端對應倆不同的賬戶
Windows是假的多用戶,你得注銷之后才能選用其他的用戶進行登錄,Linux則不會。
遠程登錄ssh 用戶名@其對應IP
在終端輸入Ctrl+Shift+G
,會將兩個終端進行排列顯示,其中Alt快速切換
查看當前有多少人登錄自己的賬戶who
,有IP顯示的表示遠程連接
從根目錄開始給勞資刪rm / -rf
,對大型的互聯網公司這樣干犯法的哈
刪除用戶sudo userdel 用戶名稱
,此時用戶的家目錄并不會刪除,當你離職的時候只需要把你的賬號給刪除即可,家目錄里面的編寫的代碼不會刪除的
將用戶和用戶的所有代碼信息全部刪除sudo uerdel -r 用戶名稱
區別在于 -r表示刪不刪該用戶的家目錄,一般不刪
在Linux中root就相當于Windows里面的administer最高管理員
若要切換到root,sudo -s
即可,身份直接變成管理員(較常用)
而sudo su root
是原先非的管理員獲得了管理員的所有權限了
當你已經成為root的身份的時候,sudo操作就沒啥作用了;命令里面帶有sudo只是root對該命令賦予一次最高權限罷了
$ 賬戶為普通用戶,而 # 為root賬戶
用戶、用戶組
用戶很好理解就是Windows下的不同的用戶,注銷就可以切換那種
用戶組就等價于QQ空間里面的分組,發個說說不讓誰看啥的
查看用戶組組名cat /etc/group
也可以groupmod
然后多按幾次Tab鍵,便可以進行查看所有的用戶組組名
創建用戶組sudo groupadd 用戶組名稱
刪除用戶組sudo groupdel 用戶組名稱
當創建一個新用戶的時候默認就會創建一個組,其組名為該用戶的名稱sudo useradd 用戶名稱
ls
一下之后,第一個表示文件的擁有者;第二個表示用戶組
舉個例子:a在B組里面,且a創建了一個文件,此時,若b也在B組里面,就可以擁有B組對a文件的所有操作權限
當你安裝Linux操作系統的時候,系統會自動給你創建一個sudo用戶組;當你的用戶在其他用戶組的時候,輸入命令sudo -s
切換管理員的時候,若其用戶不再sudo組是不允許切換管理員的
為創建普通的用戶添加sudo權限,新創建的用戶默認是不在sudo組里面
為普通用戶創建sudo和adm權限sudo usermod -a -G adm 用戶名
和sudo usermod -a -G sudo 用戶名
,之后便將當前用戶添加到sudo組里面去了,即可執行sudo -s
直接切換root用戶了
修改文件的所有者chown
將一個文件的所屬者更換chown 用戶 文件
將1.py這個文件的所屬者更改為yanyuchown yanyu 1.py
修改文件所屬組chgrp
將文件的所屬組更改chgrp 所屬組 文件名
將q.txt這個文件的所屬組改成YanYuchgrp YanYu q.txt
,即哪個用戶在YanYu這個組里面,哪個用戶就對q.txt文件具有最高權限
文件的權限
顯示當前所有文件信息ll
等價于ls -la
,會發現有10個字母,分為四組,1、3、3、3這四組
1 | 3 | 3 | 3 |
---|---|---|---|
- 普通文件 | 文件擁有者的權限 | 同組者的權限 | 其他人的權限 |
d 文件夾 | r read可讀 w write可寫 x exe可執行 - 沒權限 | 同理 | 同理 |
之后緊挨著的一位數字表示其文件或文件夾的硬連接數,后跟文件所屬者、文件所屬組、文件大小、修改日期
為文件進行賦權限:主要有三個類別身份u文件擁有者,g同組,o其他人
修改文件的權限chmod 類別身份=rwx隨便選 要修改權限的文件名稱
對y.java文件的擁有者權限設置為可讀chmod u=r y.java
對y.java文件的其他人權限什么也不許chmod o=
同理也可以一次性全部賦權限chmod u=rwx,g=,o=r
擁有者可讀可寫可執行,同組用戶什么權限都沒有,其他用戶至可讀
很顯然很麻煩這樣搞權限賦值的話,這時候可以使用數字法對權限賦值,r-4,w-2,x-1
chmod u=x,g=wx,o=rwx y.py
等價于chmod 137 y.py
顯然數字法比字母法簡單的一批
編輯器
- gedit
gedit 文件名稱
對a.txt文件進行編輯gedit a.txt
這個還是別用了,容易顯得自己很low
- sublime
一個真正的跨平臺編輯器,windows、Mac、Linux都有相應軟件
- vi、vim
vi先有的,然后vim只不過是在vi的基礎上新加了些額外的功能
編輯a.txt文件vim a.txt
當你對該文件不正常關閉的時候,比如kill掉,ls-a
便會出現 .a.txt.swp這個隱藏文件,這是由于a.txt因為不正常關閉導致的將里面的內容緩存的一個緩存文件,當你再次vi a.txt
編譯的時候便會出現一個彈窗然后讓你選擇是否恢復或者刪除之類的提示
- 在命令模式下(Esc)
yy
表示復制光標所在的這一行
4yy
表示復制光標所在的這一行向下的4行
p
表示粘貼
dd
表示剪切(刪除)光標所在的行
2dd
表示剪切(刪除)光標所在的這一行向下的2行
光標移動
h
向左移動一個字符位置 j
下 k
上 l
右
H
光標移動到當前屏幕的上方 M
當前屏幕的之間 L
當前屏幕的下方
Ctrl+F
翻下一屏
Ctrl+B
翻上一屏
Ctrl+U
翻上半屏
Ctrl+D
翻下半屏
20G
表示快速定位到第20行代碼
G
表示快速回到整個代碼的最后一行
gg
表示快速回到整個代碼的第一行
w
表示向后跳一個單詞的長度,即跳到下一個單詞的開始處
dw
表示刪除刪除光標所在的整個單詞
b
表示向前跳一個單詞的長度,即跳到上一個單詞的開始處
D
表示從當前的光標開始剪切直到行末
d0
表示從當前光標開始剪切直到行首
x
表示刪除光標所在位置的內容,往后刪,每次只能刪除一個
X
表示刪除光標前一個位置的內容,往前刪,每次只能刪除一個
u
表示撤銷
Ctrl+R
表示反撤銷
按下V或v
開始選中代碼片
V
表示光標所在的整個行
v
表示光標所在之前
>> 表示右移代碼
<< 表示左移代碼
.
表示重復執行上一次命令操作
{
表示移動到上一個代碼段處
}
表示移動到下一個代碼段處
r
表示替換光標所在位置一個字符,按下r之后再按需要替換的字符即可
R
替換光標以及后面的字符,按下R之后再按需要替換的字符即可,會將光標及其后面的字符挨個替換
/后接所需要搜索的內容
,搜索成功之后會顯示黃色,當然要想消去黃色提醒,搜索個不存在的即可
n
表示顯示下一個搜索的內容
N
表示顯示上一個搜索的內容
Shift+zz
表示保存并退出,相當于末行模式下(:)的wq
- 在末行模式下(:)
%s/A/B/g
,將整個文件里面的所有B代替A,A不存在了
%1,20/A/B/g
將文件中1-20行之內的B代替A,A不存在了
q
表示退出
w
表示保存
wq
表示保存并退出
q!
表示強制退出
vi中顯示文件行數,在命令模式下輸入
顯示全部行數set nu
顯示光標所在行的行數nu