VI/VIM编辑器

vi/vim

文本编辑器
vi是linux系统中一款著名的编辑软件
Vim基于vi发展而来,功能更强大
是基于命令交互的方式

启动vi/vim
vi 文件名
vim 文件名
例:vi 1.txt

通过打开多个
vi -oN 2.txt 3.txt //竖向两个窗口编辑
vi -ON 2.txt 3.txt //水平两个窗口编辑

常用的三种模式

命令模式
默认的模式"
控制屏幕光标的移动、字符、字或者行的删除,移动,复制某区:

编辑(插入)模式:
点击i键,进入编辑模式
用于文本的编辑,在此模式下,用户可以进行输入、查找等基本的文本操作

行底(末行)模式:
命令或编辑模式下,按esc键,模式切换
然后输入:(冒号),进入行底模式

将文本保存或退出编辑器,也可以设置编辑环境,如查找字符串,列出行号等。

案例:

:wq #写入文件并退出,w(write),q(quit)

插入模式切换为命令行模式
只需按"ESC"键即可
命令行模式切换到插入模式
一般用"i"键即可
命令行模式切换末行模式
只需按":"键即可

环境变量
#代表系统默认的搜索目录
echo $PATH

#代表工作目录
echo $PWD

#当前用户的家目录
echo $HOME
echo $VIM

编辑文件
sudo vi vimrc

行底模式
:wq //保存退出 w(write),q(quit)
:wq!//强制保存退出
:q //退出vi
:q! // 强制退出vi

命令行模式(快捷键)
h 左
j 下
k 上
l 右
0 行首
^ 行首
$ 行尾
gg 回到文件首行

G 回到文件末尾行
H 回到文件首行

M 回到文件中间(假设3行,回到第2行首)

L 回到文件末尾行
I 进入插入模式,并且跳到当前行首
i 进入插入模式,在当前位置直接插入
A 进入插入模式,并且跳到当前行尾
a 进入插入模式,并且跳到下一个字符
O 进入插入模式,并且在当前行上面新建一行,跳到行首开始编辑
o 进入插入模式,并且在当前行下面新建一行,跳到行首开始编辑

:n 跳转到第n行
:10 跳转到第10行
:-10 从当前向上跳10行

x 删除光标处的字符
nx 删除光标处及以后的n个字符
u 撤销
ctrl+r 反撤销
dd 删除光标所在行
dG 删除光标所在行到末尾的所有内容
d1G 删除光标所在到第一行的所有数据
D 删除光标处到行尾的内容

nl:光标位置向后移动n个位置
3l:向后移动3个字符

nh:光标位置向后移动n个位置
3l:向前移动3个字符

删除多行(行底模式)
10,16d 删除从10行到16行的所有内容

复制
yw:将光标所在之处到字尾的字符复制到缓冲区中
nyw:复制n个字符到缓冲区中
yy:复制光标所在行到缓冲区中
nyy:复制从光标所在行开始的n个字符
p:将缓冲区内的字符写到光标所在的位置

实际使用:
直接通过鼠标拖动来选中要复制的内容,然后按"y"键
进行复制,之后,按"ESC"键进入命令行模式,按"p"键
进行粘贴

剪切

  1. 常用剪切命令:
    dd 剪切游标所在行整行
    d^ 剪切至行首,或d0
    d$ 剪切至行尾
    dw 剪切一个word
    dG 剪切至文件尾
  2. 选中文本进行剪切:
    要选中内容进行复制,先在命令模式下按 v 进入 Visual Mode,然后用
    方向键 或 hjkl 选择文本,再按 d 进行剪切。

末行(行底)模式(快捷键)
:set nu 设置行号(nu=number)
:set nonu 取消行号

#实际编程使用(重要)
运行shell命令
!cmd:运行shell命令cmd

案例:
常用于编辑源代码时,查看帮助,
执行命令去查看网络状态等等

!ls -l

!man socket

:noh 取消查找后的高亮显示

#查找
/word 从上而下在文件中查找字符串”word”
?word 从下而上在文件中查找字符串”word”

#替换
?/old/new 将当前行中查找到的第一个字符串”old”替换为”new”
?/old/new/g 将当前行中查找到的所有字符串”old”替换为”new”

#常用
:#,#s/old/new/g 在行号”#,#”范围内替换所有的字符串”old”为”new”

:%s/old/new/g 在整个文件范围内替换所有的字符创”old”为”new”

:%s/int/double/g

注释和反注释(了解)

注释:
方法1:
将光标定位到开始设置注释的行
ctrl+v,进入VB
向下移动光标,选择要注释的行
按下大写I,进入插入模式,此时按下//
按两次ESC,完成注释

反注释:
方法1:
将光标定位到开始撤销注释的行
ctrl+v,进入VB
向下移动光标,选择要撤销注释的行
按下d
完成撤销注释

分屏
:new,新建文件并分屏, 快捷键,Ctrl+W,然后马上按n键
:split 水平分屏,将当前屏分为两个,水平的。 Ctrl + w, s
:vsplit 垂直分屏,将当前屏分为两个,垂直的。 Ctrl + w, v
:only 取消分屏,取消当前的屏,当前屏指的是光标所在屏。

:vsp test1.c

(1)在shell里打开几个文件并且分屏:
  vim -On file1 file2 …
  vim -on file1 file2 …
大O表示垂直分割(vertical),小o表示水平分割(默认horizontal),后面的n表示分几个屏,实际上我觉得不用写,默认按后面要分割的文件数来决定分几个屏。

Shell(用户和系统内核交互的接口工具)

shell编程,就是linux命令和linux命令的组合

shell脚本,是解释执行(不需要编译),不需要像C、C++一样执行前要编译

案例:(重要)

test1.sh

#中括号内侧必须有空格
while [ True ]
do
echo “shenlan welcome to you!”
sleep 2
done

#设置权限
chmod u+x test1.sh

#执行
./test1.sh

#查看本机支持的shell
cat /etc/shells

默认是bash shell

echo 显示一行文本
echo -e “shenlan\n”

-e:代表转义

echo $SHELL #当前使用的shell
echo $PATH #命令搜索路径。一个由冒号分隔的目录列表,shell用它来搜索命令,一个普通值为 /usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin
echo $HOME #家目录

echo $PPID #父进程ID
例如:2487

ps -ef | grep 2487

在这里插入图片描述
echo $PWD #当前工作目录

date
date “+%Y%m%d %H:%M:%S”
date “+%y%m%d”
date -d “-1 day” “+%Y%m%d” //当前日期的前一天
date -d “+1 day” “+%Y%m%d” //当前日期的后一天
在这里插入图片描述

date -d “-1 month” “+%Y%m%d” //当前日期的前一月
date -d “+1 year” “+%Y%m%d” //当前日期的后一年
date +%W

反引号``,中的内容当做命令处理
echo “date +%F” #输出当前的日期

计算两个和
a=1
b=2
sum= [ [ [a+$b]
echo “sum is $sum”

expr 计算表达式的值

expr 1 + 2 #注意运算符两侧的空格

注意通配符,需要转义
expr 1 * 2
expr 1 “*” 2
在这里插入图片描述

echo “scale=2;5/2”|bc #输出2.50

变量(shell中默认把变量值当作字符串)

a=10 #等号两侧不能有空格

使用变量
$a
${a}

建议使用${a},原因:
$abc

${a}bc
不一样

read
read -p “please input a number:” x

操作字符串
例:
#注意字符串下标从零开始,截取时是闭合
name=“xiaoguo”
echo $name
echo ${name}
echo ${#name} #获取字符串长度
在这里插入图片描述

name=“xiao kong”
echo ${name:4} #注意空格问题,如果开始截取的位置是空格,则丢弃

echo ${name:4:4} #从索引位置4开始截取4个字符

name=“shenlan”
url=“http://www.shenlancode.com”
echo KaTeX parse error: Expected '}', got '#' at position 5: {url#̲*{name}} #删除url中的string(实际的值)左侧的内容

echo ${url#*/}
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值