内容整理自菜鸟教程和c语言中文网的Linux教程
Linux vi/vim
vi是Liunx系统自带的文书编辑器,但目前使用较多的是vim编辑器,vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
vi/vim的使用
基本上vi/vim共分为3中模式,分别为命令模式(Command mode)、输入模式(Insert mode)和底线模式(Last line mode)。
命令模式:
用户启动vi/vim,初始状态便为命令模式。在命令模式下键盘上的动作会被识别为命令,而非输入字符。
以下是常用的命令:
移动光标的方法 | |
h或向左箭头键(←) | 光标向左移动一个字符 |
j或向下箭头键(↓) | 光标向下移动一个字符 |
k或向上箭头键(↑) | 光标向上移动一个字符 |
l或向右箭头键(→) | 光标向右移动一个字符 |
如果需要需要移动多行,可以在字符前加数字。例如向下移动5行就输入5j。
移动光标的方法 | |
ctrl+f | 屏幕向下移动一页 |
ctrl+b | 屏幕向上移动一页 |
ctrl+d | 屏幕向下移动半页 |
ctrl+u | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | n表示数字,space为空格。光标向右移动n的字符 |
0或Home | 移动到当前行的最前面的字符处 |
$或End | 移动到当前行的最后面的字符处 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到当前屏幕中央的那一行的第一个字符 |
L | 光标移动到当前屏幕最下方的那一行的第一个字符 |
G | 移动到当前文件的最后一行 |
nG | n表示数字,移动到当前文件的第n行 |
gg | 移动到当前文件的第一行,相当于1g |
n<Enter> | n为数字。光标向下移动n行。 |
搜索与替换 | |
/word | 向光标之下寻找名为“word”的字符串 |
?word | 向光标之上寻找名为“word”的字符串 |
n | 重复前一个搜寻的动作 |
N | 和n刚好相反,为反向进行前一个搜索动作 |
使用/word配合n和N。可以重复的找到一些搜寻的关键词。
搜索与替换 | ||||
:n1,n2s/word1/word2/g | n1和n2为数字。将n1和n2之间的word1替换为word2 | |||
:1,$s/word1/word2/g | 从第一行到最后一行将n1和n2之间的word1替换为word2, | |||
:%s/word1/word2/g | 同上 | |||
:1,$s/word1/word2/gc | 从第一行到最后一行将n1和n2之间的word1替换为word2,并询问用户 | |||
:%s/word1/word2/gc | 同上 |
删除、复制与粘贴 | |
x | 向后删除一个字符 |
X | 向前删除一个字符 |
nx | n为数字,连续向后删除n个字符。 |
dd | 删除游标所在的一整行 |
ndd | 删除游标所在的向下n行 |
d1G | 删除光标所在位置到第一行的所有数据 |
dG | 删除光标所在位置到最后一行的所有数据 |
d$ | 删除光标所在位置到该行的最后一个字符 |
d0 | 删除光标所在位置到该行的最前面的一个字符 |
复制和删除的操作差不多就是将d换成y | |
yy | 复制光标所在那一行(其他类似) |
p(小) | 将以复制的数据在光标的下一行粘贴 |
P(大) | 将以复制的数据在光标的上一行粘贴 |
J | 将光标所在行与下一行结合为同一行 |
u | 复原前一个动作 |
ctrl+r | 重做上一个动作 |
.(小数点) | 重复前一个动作 |
输入模式:
在命令模式下按下“i”就会进入输入模式。在输入模式中将相当于进入了windows中的记事本。
进入输入或取代编辑模式 | |
i | 进入输入模式:从目前光标所在位置输入 |
I | 进入输入模式:从目前光标所在行的第一个非空格字符除开始输入 |
a | 进入输入模式:从目前光标的所在位置的下一个字符开始输入 |
A | 进入输入模式:从目前光标的所在行的最后一个字符处开始输入 |
o | 进入输入模式:从目前光标所在行的下一行处输入新的一行 |
O | 进入输入模式:从目前光标所在行的上一行处输入新的一行 |
r | 进入取代模式:r只会取代光标所在位置的那一个字符一次 |
R | 进入取代模式:R一直取代光标所在位置的字符,直到按下Esc为止 |
Esc | 退出编辑模式,回到一般模式。 |
在输入模式中vi/vim左下角会显示【INSERT】(输入)或【REPLACE】(替换)的字样。
底线命令模式:
在命令模式下按下“:(英文冒号)”就会进入底线命令模式。底线命令模式可以输入单个或者多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有:
指令行的存储、离开、等指令 | |
w | 保存 |
w! | 强制保存,一般需要管理员权限 |
q | 退出(不保存) |
q! | 强制退出,不保存 |
wq | 退出并保存 |
ZZ(大写) | 若文件没有更改,则不存储离开,若文件已经被改动则存储后离开 |
w[filename] | 另存为 |
r[filename] | 将另一个文件的数据追加到游标所在行的后面 |
n1,n2w[filename] | 将n1到n2的内容存储成filename这个文件 |
!command | 暂时离开vi到 指令模式执行command的显示结果 |
set nu | 显示行号 |
set nonu | 取消行号 |
创建文件
vim 文件名
如果存在该文件则打开,如果不存在该文件则创建该文件。
查看文件内容
cat filename
cat -b filename //加上-b会显示行号
统计单词数目
wc filename
用于显示文件中的行数、单词数、和字符数。
第一行为行数、第二行为单词数、第三行为字符数、第四行为文件名。
复制文件
cp source_file destination_file
将source_file的内容复制到destination_file中。
文件重命名
mv oleFileName newFileName
mv命令还是一个移动文件命令,不但可以更改文件的路径,也可以更改文件名。
删除文件
rm 文件名1 文件名2 ......
可以和删除一个或者多个文件。
元字符
元字符是具有特殊含义的字符。*和?都是元字符:
(1)*可以匹配0个或者多个任意字符。
(2)?匹配一个字符。
和正则表达式是一样的。
ls ch*.doc//显示当前目录下所由一ch开头以.doc结尾的文件。
隐藏文件
隐藏文件的第一个字符为英文句号或者点号(.),Linux程序(包括Shell)通常使用隐藏文件来保存配置信息。
ls -a //显示当前目录的下所有文件
一个点号(.)表示当前目录,两个点号表示(..)上一层目录。
标准的Linux流
一般情况下,每个linux程序运行时,都会创建三个文件流(三个文件):
(1)标准输入流(stdin):stdin的文件描述符为0,Linux程序默认从stdin读取数据。
(2)标准输出流(stdout):stdout的文件描述符为1,Linux程序默认向stdout输出数据。
(3)标准错误流(stderr):stderr的文件描述符为2,Linux程序会向stderr流中写入错误信息。