-
標(biāo)準(zhǔn)流,重定向
查看全部 -
標(biāo)準(zhǔn)輸入流輸出流以及錯誤流
查看全部 -
argv :? 代碼的個數(shù)
argc[] :? 代碼是啥
查看全部 -
vim分為三種模式
一般模式:以vim打開或新建一個文件就可以直接進入一般模式,在此模式中,你可以使用上下左右來進行光標(biāo)的移動,可以刪除字符或整行,可以復(fù)制粘貼文件數(shù)據(jù)。
編輯模式:顧名思義,就是可以編輯文本的模式,在一般模式下,按下“i,I,o,O,a,A,r,R”這些字母可進入編輯模式,進入編輯模式后在左下方會有INSERT或REPLACE的字樣。
在編輯模式下按下ESC鍵會退出到一般模式下。
命令行模式:在一般模式下,輸入” :, / , ? “這三個字符中的任意一個會將光標(biāo)移動到當(dāng)前頁面最下面的一行,在這個模式中可以進行數(shù)據(jù)查找、替換、保存、離開vim等操作。
使用vim filename可進入vim一般模式:
一般模式下熱鍵說明:
移動光標(biāo)的方法
h?或?向左箭頭鍵(←)光標(biāo)向左移動一個字符
j?或?向下箭頭鍵(↓)光標(biāo)向下移動一個字符
k?或?向上箭頭鍵(↑)光標(biāo)向上移動一個字符
l?或?向右箭頭鍵(→)光標(biāo)向右移動一個字符
如果你將右手放在鍵盤上的話,你會發(fā)現(xiàn)?hjkl?是排列在一起的,因此可以使用這四個按鈕來移動光標(biāo)。?如果想要進行多次移動的話,例如向下移動?30?行,可以使用?“30j”?或?“30↓”?的組合按鍵,?亦即加上想要進行的次數(shù)(數(shù)字)后,按下動作即可!
[Ctrl] + [f]屏幕『向下』移動一頁,相當(dāng)于?[Page Down]按鍵?(常用)
[Ctrl] +屏幕『向上』移動一頁,相當(dāng)于?[Page Up]?按鍵?(常用)
[Ctrl] + [d]屏幕『向下』移動半頁
[Ctrl] +屏幕『向上』移動半頁
+光標(biāo)移動到非空格符的下一列
–光標(biāo)移動到非空格符的上一列
n那個?n?表示『數(shù)字』,例如?20?。按下數(shù)字后再按空格鍵,光標(biāo)會向右移動這一行的?n?個字符。例如?20?則光標(biāo)會向后面移動?20?個字符距離。
0?或功能鍵[Home]這是數(shù)字『?0?』:移動到這一行的最前面字符處?(常用)
$?或功能鍵[End]移動到這一行的最后面字符處(常用)
H光標(biāo)移動到這個屏幕的最上方那一行的第一個字符
M光標(biāo)移動到這個屏幕的中央那一行的第一個字符
L光標(biāo)移動到這個屏幕的最下方那一行的第一個字符
G移動到這個檔案的最后一行(常用)
nGn?為數(shù)字。移動到這個檔案的第?n?行。例如?20G?則會移動到這個檔案的第?20?行(可配合?:set nu)
gg移動到這個檔案的第一行,相當(dāng)于?1G??。?(常用)
nn?為數(shù)字。光標(biāo)向下移動?n?行(常用)
搜尋與取代
/word向光標(biāo)之下尋找一個名稱為?word?的字符串。例如要在檔案內(nèi)搜尋vbird?這個字符串,就輸入?/vbird?即可!?(常用)
?word向光標(biāo)之上尋找一個字符串名稱為?word?的字符串。
n這個?n?是英文按鍵。代表『重復(fù)前一個搜尋的動作』。舉例來說,如果剛剛我們執(zhí)行?/vbird?去向下搜尋?vbird?這個字符串,則按下?n?后,會向下繼續(xù)搜尋下一個名稱為?vbird?的字符串。如果是執(zhí)行??vbird?的話,那么按下?n?則會向上繼續(xù)搜尋名稱為?vbird?的字符串!
N這個?N?是英文按鍵。與?n?剛好相反,為『反向』進行前一個搜尋動作。?例如?/vbird?后,按下?N?則表示『向上』搜尋?vbird?。
使用?/word?配合?n?及?N?是非常有幫助的!可以讓你重復(fù)的找到一些你搜尋的關(guān)鍵詞!
:n1,n2s/word1/word2/gn1?與?n2?為數(shù)字。在第?n1?與?n2?行之間尋找?word1?這個字符串,并將該字符串取代為?word2?!舉例來說,在?100?到?200?行之間搜尋?vbird?并取代為?VBIRD?則:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!(常用)
:1,$s/word1/word2/gc從第一行到最后一行尋找?word1?字符串,并將該字符串取代為word2?!且在取代前顯示提示字符給用戶確認(rèn)?(confirm)?是否需要取代!(常用)
刪除、復(fù)制與貼上
x, X在一行字當(dāng)中,x?為向后刪除一個字符?(相當(dāng)于?[del]?按鍵),?X?為向前刪除一個字符(相當(dāng)于?[backspace]?亦即是退格鍵) (常用)
nxn?為數(shù)字,連續(xù)向后刪除?n?個字符。舉例來說,我要連續(xù)刪除?10?個字符,?『10x』。
dd刪除游標(biāo)所在的那一整列(常用)
nddn?為數(shù)字。刪除光標(biāo)所在的向下?n?列,例如?20dd?則是刪除?20?列(常用)
d1G刪除光標(biāo)所在到第一行的所有數(shù)據(jù)
dG刪除光標(biāo)所在到最后一行的所有數(shù)據(jù)
d$刪除游標(biāo)所在處,到該行的最后一個字符
d0那個是數(shù)字的?0?,刪除游標(biāo)所在處,到該行的最前面一個字符
yy復(fù)制游標(biāo)所在的那一行(常用)
nyyn?為數(shù)字。復(fù)制光標(biāo)所在的向下?n?列,例如?20yy?則是復(fù)制?20?列(常用)
y1G復(fù)制游標(biāo)所在列到第一列的所有數(shù)據(jù)
yG復(fù)制游標(biāo)所在列到最后一列的所有數(shù)據(jù)
y0復(fù)制光標(biāo)所在的那個字符到該行行首的所有數(shù)據(jù)
y$復(fù)制光標(biāo)所在的那個字符到該行行尾的所有數(shù)據(jù)
p, Pp?為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P?則為貼在游標(biāo)上一行!舉例來說,我目前光標(biāo)在第?20?行,且已經(jīng)復(fù)制了?10?行數(shù)據(jù)。則按下?p?后,?那?10?行數(shù)據(jù)會貼在原本的?20?行之后,亦即由?21?行開始貼。但如果是按下?P?呢??那么原本的第?20?行會被推到變成?30?行。?(常用)
J將光標(biāo)所在列與下一列的數(shù)據(jù)結(jié)合成同一列
c重復(fù)刪除多個數(shù)據(jù),例如向下刪除?10?行,[ 10cj ]
u復(fù)原前一個動作。(常用)
[Ctrl]+r重做上一個動作。(常用)
這個?u?與?[Ctrl]+r?是很常用的指令!一個是復(fù)原,另一個則是重做一次~?利用這兩個功能按鍵,你的編輯,嘿嘿!很快樂的啦!
.不要懷疑!這就是小數(shù)點!意思是重復(fù)前一個動作的意思。?如果你想要重復(fù)刪除、重復(fù)貼上等等動作,按下小數(shù)點『.』就好了!?(常用)
一般模式進入編輯模式的按鍵說明:?
i, I進入插入模式(Insert mode):
i?
為『從目前光標(biāo)所在處插入』,?I?為『在目前所在行的第一個非空格符處開始插入』。?(常用)
a, A進入插入模式(Insert mode):
a?
為『從目前光標(biāo)所在的下一個字符處開始插入』,?A?為『從光標(biāo)所在行的最后一個字符處開始插入』。(常用)
o, O進入插入模式(Insert mode):這是英文字母?o?的大小寫。o?為『在目前光標(biāo)所在的下一行處插入新的一行』;?O?為在目前光標(biāo)所在處的上一行插入新的一行!(常用)
r, R進入取代模式(Replace mode):
r?
只會取代光標(biāo)所在的那一個字符一次;R會一直取代光標(biāo)所在的文字,直到按下?ESC?為止;(常用)
上面這些按鍵中,在?vim?畫面的左下角處會出現(xiàn)『–INSERT–』或『–REPLACE–』的字樣。?由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案里面輸入字符時,?一定要在左下角處看到?INSERT?或?REPLACE?才能輸入喔!
[Esc]退出編輯模式,回到一般模式中(常用)
一般模式切換到命令行模式的按鍵說明:
:w將編輯的數(shù)據(jù)寫入硬盤檔案中(常用)
:w!若文件屬性為『只讀』時,強制寫入該檔案。不過,到底能不能寫入,?取決于當(dāng)前用戶對于文件的權(quán)限,一般情況下文件的所有者以及root用戶的權(quán)限較大。
:q離開?vim (常用)
:q!若曾修改過檔案,又不想儲存,使用?!?為強制離開不儲存檔案。
注意一下啊,那個驚嘆號?(!)?在?vim?當(dāng)中,常常具有『強制』的意思~
:wq儲存后離開,若為?:wq!?則為強制儲存后離開?(常用)
ZZ這是大寫的?Z?喔!若檔案沒有更動,則不儲存離開,若檔案已經(jīng)被更動過,則儲存后離開!
:w [filename]將編輯的數(shù)據(jù)儲存成另一個檔案(類似另存新檔)
:r [filename]在編輯的數(shù)據(jù)中,讀入另一個檔案的數(shù)據(jù)。亦即將?『filename』?這個檔案內(nèi)容加到游標(biāo)所在行后面
:n1,n2 w [filename]將?n1?到?n2?的內(nèi)容儲存成?filename?這個檔案。
:! command暫時離開?vim?到指令列模式下執(zhí)行?command?的顯示結(jié)果!例如『:! ls /home』即可在?vim?當(dāng)中察看?/home?底下以?ls?輸出的檔案信息!
vim?環(huán)境的變更
:set nu顯示行號,設(shè)定之后,會在每一行的前綴顯示該行的行號
:set nonu與?set nu?相反,為取消行號!
作者:vic_wei7
鏈接:https://www.jianshu.com/p/581dcdc05277
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。查看全部 -
gcc? max.c hello.c -o main.out
#include "max.c"
int main(){? max(a,b);}
查看全部 -
我們現(xiàn)在寫一個程序avg.c,求任意個數(shù)的平均值:
#include <stdio.h>
int main()
{
? ? ? ? int s,n;
? ? ? ? scanf("%d,%d",&s,&n);
? ? ? ? float v=s/n;
? ? ? ? printf("v=%f\n",v);
? ? ? ? return 0;
}
退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。
?我們再寫一個統(tǒng)計輸入的程序input.c:
#include <stdio.h>
int main()
{
? ? ? ? int flag=1;
? ? ? ? int i;
? ? ? ? int count=0;
? ? ? ? int s=0;
? ? ? ? while(flag){
? ? ? ? ? ? scanf("%d",&i);
? ? ? ? ? ? if(0==i) break;
? ? ? ? ? ? count++;
? ? ? ? ? ? s+=i;
? ? ? ? }
? ? ? ? printf("%d,%d",s,count);
? ? ? ? return 0;
}
我們對這個函數(shù)進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數(shù)2人
我們使用以上兩個程序結(jié)合起來,將所有數(shù)據(jù)進行統(tǒng)計input.out,之后通過管道經(jīng)過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應(yīng)的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復(fù)雜的程序的過程
查看全部 -
我們現(xiàn)在寫一個程序avg.c,求任意個數(shù)的平均值:
#include <stdio.h>
int main()
{
? ? ? ? int s,n;
? ? ? ? scanf("%d,%d",&s,&n);
? ? ? ? float v=s/n;
? ? ? ? printf("v=%f\n",v);
? ? ? ? return 0;
}
退出vim進行編譯cc avg.c -o avg.out,我們得到avg.out,我們輸入3000,3。
?我們再寫一個統(tǒng)計輸入的程序input.c:
#include <stdio.h>
int main()
{
? ? ? ? int flag=1;
? ? ? ? int i;
? ? ? ? int count=0;
? ? ? ? int s=0;
? ? ? ? while(flag){
? ? ? ? ? ? scanf("%d",&i);
? ? ? ? ? ? if(0==i) break;
? ? ? ? ? ? count++;
? ? ? ? ? ? s+=i;
? ? ? ? }
? ? ? ? printf("%d,%d",s,count);
? ? ? ? return 0;
}
我們對這個函數(shù)進行編譯cc input.c -o input.out,我們輸入3000 3000 0,輸出總工資6000和人數(shù)2人
我們使用以上兩個程序結(jié)合起來,將所有數(shù)據(jù)進行統(tǒng)計input.out,之后通過管道經(jīng)過avg.out計算平均值,命令可以寫為./input.out | ./avg.out,然后進行輸入,輸入完成我們便得到了對應(yīng)的平均工資。 以上就是通過管道,將兩個小程序連接起來得到更復(fù)雜的程序的過程
查看全部 -
管道:|
查看根目錄: ls /
查看Linux默認(rèn)配置目錄: ls /etc/
將etc文件輸出到一個管道:ls /etc/ | grep 關(guān)鍵字符
(如:ls /etc/ | grep ab:要查找某個目錄下有多少個文件名包含"ab")
“|”是文件輸出到grep,作為grep的輸入,在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“l(fā)s”的輸出結(jié)果傳給“grep”的輸入
grep是C語言的小程序,可以查詢包含指定字符的文件
查看當(dāng)前進程的文件:ps(查看進程的命令) -e
(如:ps -e | grep ssh ?查看目前有多少含有ssh的進程應(yīng)用)
查看全部 -
“|”在Linux中作為管道,用于連接在兩個獨立的小程序建立通道,比如將“l(fā)s”的輸出結(jié)果傳給“grep”的輸入
grep是C語言的小程序,可以查詢包含指定字符的文件
ps -e查看當(dāng)前在運行的進程
查看全部 -
標(biāo)準(zhǔn)輸入流 ---> 鍵盤輸入
標(biāo)準(zhǔn)輸出流 --> 終端輸出
標(biāo)準(zhǔn)錯誤流 --> 錯誤輸出
重定向機制
>>重定向到該文件,無覆蓋
>重定向到該文件,最新
<重定向輸入文件
1>正確結(jié)果導(dǎo)入 2>錯誤結(jié)果導(dǎo)入
查看全部 -
stdin 標(biāo)準(zhǔn)輸入流 鍵盤
stdout標(biāo)準(zhǔn)輸出流 顯示器
stderr標(biāo)準(zhǔn)錯誤流
printf是對fprintf的封裝
fprintf(stdout, ?);
scanf是對fscanf的封裝
fscanf(stdin,"%d",&a);
fprintf(stderr," ");
查看全部 -
#include<stdio.h>
int
?main(
int
?argv,
char
*?argc[])
{
??
printf
(
"argv?is?%d\n"
,argv);
?
? int
?i;
?
for
(i=0;i<argv;i++){
??
printf
(
"argc[%d]is?%s\n"
,i,argc[i]);
?
? }
?
?
return
?0;
}
main 函數(shù)中 argv參數(shù) 表示執(zhí)行該程序時 輸入的有效項(程序名+參數(shù))個數(shù);
???????????????? argc[] 參數(shù) 表示執(zhí)行該程序時輸入的有效項內(nèi)容(程序名, 參數(shù));
main 中 argv 和 argc 的作用:
?? ?argv 表示參數(shù)的個數(shù);
?? ?argc 存放參數(shù)的內(nèi)容;
查看全部 -
輸出重定向:> 和 >>? ? ? ? ? ? ? ? ? ? ? ? ? >表示覆蓋,>>表示追加?
輸入重定向:<
./a.out >> a.txt
?>> 追加內(nèi)容
> 單箭頭 不覆蓋,保持最新
./aout < input.txt 輸入流
輸出流、錯誤流、輸入流
./a.out 1>t.txt 2>f.txt <input.txt
查看全部 -
stdin輸入流
stdout輸出流
stderr錯誤流
查看全部 -
ls -l -a:詳細(xì)顯示隱藏內(nèi)容
cp 文件名 文件名 拷貝
\n換行
查看全部
舉報