[Linux] Vim 和 Tmux使用

[Acwing] Linux基础课(二)

Vim使用

Linux常用基础
tmuxvim使用

tmuxvim对于Linux用户来说可真的是太方便了,可谓是左膀右臂啊!

1.tmux教程

1.功能:
  • (1) 分屏
  • (2) 允许断开Terminal连接后,继续进行进程。
2.结构:
  • 一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane

    tmux:
    	session 0:
    		window 0:
    			pane 0
    			pane 1 
    			pane 2
    			...
    		window 1
    		window 2
    		...
    	session 1
    	session 2
    	...
    
3.操作:
  • (1) tmux:新建一个session,其中包含一个windowwindow中包含一个panepane里打开了一个shell对话框。
  • (2) 按下Ctrl + a后手指松开,然后按%: 将当前pane左右平分成两个pane
  • (3)按下Ctrl + a后手指松开,然后按“ ”[注意是双引号]: 将当前pane上下平分成两个pane
  • (4)Ctrl + d:关闭当前pane; 如果当前window的所有pane均已关闭,则自动关闭window;如果当前session的所有window均已关闭,则自动关闭session
  • (5)鼠标点击可以选pane
  • (6)按下Ctrl + a后手指松开,然后按方向键:选择相邻的pane
  • (7)鼠标拖动pane之间的分割线,可以调整分割线的位置。
  • (8)按下Ctrl + a的同时按方向键,可以调整pane之间分割线的位置。
  • (9)按下Ctrl + a后手指松开,然后按z:将当前pane全屏/取消全屏。
  • (10)按下Ctrl + a后手指松开,然后按d:挂起当前session
  • (11)tmux a: 打开之前挂起的session
  • (12)按下 Ctrl + a后手指松开,然后按s:选择其它session
    • 方向上键:选择上一项session/window/pane
    • 方向下键:选择下一项 session/window/pane
    • 方向右键:展开当前项 session/window
    • 方向左键:闭合当前项 session/window
  • (13)按下Ctrl + a后手指松开,然后按c:在当前session中创建一个新的window
  • (14)按下Ctrl + a后手指松开,然后w:选择其他window,操作方法与(12)完全相同。
  • (15)按下Ctrl + a后手指松开,然后PageUp:翻阅当前pane内的内容。
  • (16)鼠标滚轮:翻阅当前pane内的内容。
  • (17)在tmux中选中文本时,需要按住shift键。(仅支持windowsLinux,不支持Mac,不过操作并不必须的,影响不大)
  • (18)tmux中复制/粘贴文本的通用方式:
    • 按下Ctrl + a后松开手指,然后按 [
    • 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪切板
    • 按下Ctrl + a后松开手指,然后按],会将剪切板中的内容粘贴到光标处

2.vim教程

1.功能:
  • (1) 命令行模式下的文本编辑器
  • (2) 根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能。
  • (3)使用方式:vim filename
    • 如果已有该文件,则打开它
    • 如果没有该文件,则打开一个新的文件,并命名为filename
2.模式:
  • (1)一般命令模式
    • 默认模式。命令输入方式:根据输入的不同指令进行不同的操作。
  • (2)编辑模式
    • 在一般命令模式里按下i,会进入编辑模式。
    • 按下ESC会退出编辑模式,返回到一般命令模式
  • (3)命令行模式
    • 在一般命令模式里按下: / ?三个字母中的任意一个,会进入命令行模式。可以进行查找、替换、保存、退出、配置编辑器等。
3.操作:
  • (1) i:进入编辑模式
  • (2) ESC:进入一般命令模式
  • (3)h或左箭头:光标向左移动一个字符
  • (4)j或向下箭头:光标向下移动一个字符
  • (5)k或向上箭头:光标向上移动一个字符
  • (6)l或向右箭头:光标向右移动一个字符。
  • (7)n<Space>n表示数字,按下数字后再按空格,光标会向右移动这一行的n个字符
  • (8)0或功能键[Home]:光标移动到本行开头
  • (9)$或功能键[End]:光标移动到本行末尾
  • (10)G:光标移动到最后一行
  • (11):nnG: n为数字,光标移动到第n
  • (12)gg:光标移动到第一行,相当于1G
  • (13)n<Enter>: n为数字,光标向下移动n
  • (14)/word: 向光标之下寻找第一个值为word的字符串
  • (15)?word: 向光标之上寻找第一个值为word的字符串
  • (16)n: 重复前一个查找操作
  • (17) N: 反向重复前一个查找操作
  • (18):n1,n2s/word1/word2/g: n1n2为数字,在第n1n2行之间寻找word1这个字符串,并将该字符串替换为word2
  • (19):1, $s/word1/word2/g:将全文的word1替换为word2
  • (20) :1, $s/word1/word2/gc:将全文的word1替换为 word2,且在替换前要求用户确认
  • (21) v:选中文本
  • (22) d: 删除选中的文本
  • (23) dd:删除当前行
  • (24) y:复制选中的文本
  • (25) yy: 复制当前行
  • (26) p:将复制的数据在光标的下一行/下一个位置粘贴
  • (27) u:撤销
  • (28) Ctrl + r:取消撤销
  • (29) 大于号 >:将选中的文本整体向右缩进一次
  • (30)小于号<:将选中的文本整体向左缩进一次
  • (31) :w保存
  • (32) :w!强制保存
  • (33) :q退出
  • (34) :q!强制退出
  • (35) :wq保存并退出
  • (36) :set paste设置成粘贴模式,取消代码自动缩进
  • (37) :set nopaste取消粘贴模式,开启代码自动缩进
  • (38) :set nu显示行号
  • (39) :set nonu隐藏行号
  • (40) :gg=G将全文代码格式化
  • (41) :noh关闭查找关键词高亮
  • (42) Ctrl + q: 当 vim卡死时,可以取消当前正在执行的命令
练习
question
创建好作业后,先进入文件夹/home/acs/homework/lesson_2/,然后:
(0) 进入homework_0文件夹,创建文件names.txt,并顺次将下列姓名写入该文件,每个名字占一行。
    AcWing、yxc、Bob、张强、李明、Alice
(1) 进入homework_1文件夹,打开problem.txt,并依次删除下列字符:
    [1] 最后一行第101个字符
    [2] 第3行第8个字符
    [3] 第1行第30个字符
    [4] 第16行第55个字符
    [5] 第9行第80个字符
    最后保存文件并退出。
(2) 进入homework_2文件夹,打开problem.txt,并依次执行如下操作:
    [1] 在第1个"two"的后面添加"abc"
    [2] 在第2个"two"的前面添加"def"
    [3] 将第3个"two"后面的连续12个字符删掉
    [4] 将第4个"two"所在的行删掉
    最后保存文件并退出。
(3) 进入homework_3文件夹,打开problem.txt,并依次执行如下操作:
    [1] 将第5行至第15行中所有of替换成OF。
    [2] 将全文中所有的the替换成THE。
    [3] 将第偶数个is替换成IS,第奇数个is不变。下标从1开始。
(4) 进入homework_4文件夹,打开problem.txt,并依次执行如下操作:
    [1] 删除第11行
    [2] 将所删除的行粘贴到文件最后一行的下一行
    [3] 复制第5行
    [4] 将所复制的行粘贴到文件当前最后一行的下一行
(5) 进入homework_5文件夹,打开problem.txt,并依次执行如下操作:
    [1] 删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)
    [2] 将所删除的内容粘贴到文件末尾(注意不要另起一行)
    [3] 复制第5行第88个字符(包含该字符)至第7行第6个字符(包含该字符)
    [4] 将所复制的内容粘贴到当前文件末尾(注意不要另起一行)
(6) 进入homework_6文件夹,并依次执行如下操作:
    [1] 清空source0.cpp
    [2] 将source1.cpp中的第1-3行和第12-24行复制到source0.cpp中
(7) 进入homework_7文件夹,格式化source.cpp
(8) 进入homework_8文件夹,打开source.cpp,并依次执行如下操作:
    [1] 将第15-21行向右缩进2次。
    [2] 将第22-23行向左缩进1次。
(9) 进入homework_9文件夹,打开链接:https://www.acwing.com/activity/content/code/content/1694465/
    新建文件source.cpp,将链接中的代码抄进source.cpp文件中。
Answer
(0)
cd homework_0
touch names.txt
vim names.txt
输入xxx
按```ESC``````ctrl + [```
:wq

(1)进入homework_1文件夹,打开problem.txt,并依次删除下列字符:
cd homework_1
vim problem.txt

[1] 最后一行第101个字符
G 100<Space> i<Delete>```ESC``````ctrl + [```
[2] 第3行第8个字符
:3 8<Space>i<Delete>```ESC``````ctrl + [```
[3]第1行第30个字符
gg 30<Space> i <Delete>```ESC``````ctrl + [```
[4]第16行第55个字符
:16 55<Space> i <Delete>```ESC``````ctrl + [```
[5] 第9行第80个字符
:9 80<Space> i <Delete>```ESC``````ctrl + [``````ESC``````ctrl + [```
:wq

(2) 进入homework_2文件夹,打开problem.txt,并依次执行如下操作:
cd homework_2
vim problem.txt

[1] 在第1个"two"的后面添加"abc": gg /two i 输入abc 按```ESC``````ctrl + [```
[2] 在第2个"two"的前面添加"def": n i 输入def 按```ESC``````ctrl + [```
[3] 将第3个"two"后面的连续12个字符删掉: nn i <Delete>按12次 按```ESC``````ctrl + [```
[4] 将第4个"two"所在的行删掉: nn dd
:wq

(3) 进入homework_3文件夹,打开problem.txt,并依次执行如下操作:
cd homework_3
vim problem.txt

[1] 将第5行至第15行中所有of替换成OF。```:5,15s/of/OF/g```
[2] 将全文中所有的the替换成THE。```:1,$s/the/THE/g```
[3] 将第偶数个is替换成IS,第奇数个is不变。下标从1开始。 ```:1,$s/is/IS/gc```然后 ny 交替执行

(4) 进入homework_4文件夹,打开problem.txt,并依次执行如下操作:
cd homework_4
vim problem.txt

[1] 删除第11行 ```11G dd```
[2] 将所删除的行粘贴到文件最后一行的下一行 ```G p```
[3] 复制第5行 ```5G yy```
[4] 将所复制的行粘贴到文件当前最后一行的下一行 ```G p```

(5) 进入homework_5文件夹,打开problem.txt,并依次执行如下操作:
cd homework_5
vim problem.txt

[1] 删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)```11G14<Space> 13G 5<Space> d```
[2] 将所删除的内容粘贴到文件末尾(注意不要另起一行)```Gp```
[3] 复制第5行第88个字符(包含该字符)至第7行第6个字符(包含该字符)```5G87<Space> 7G6<Space> y```
[4] 将所复制的内容粘贴到当前文件末尾(注意不要另起一行)```Gp```

(6) 进入homework_6文件夹,并依次执行如下操作:
cd homework_6
vim source0.cpp

[1] 清空source0.cpp  ```ggdG```
[2] 将source1.cpp中的第1-3行和第12-24行复制到source0.cpp中 
```ctrl+a " 新建一个上下的pane
在上面的pane中打开source0.cpp
在下面的pane中打开source1.cpp

在source1.cpp的pane中,ctrl + a, z 使得pane全屏,:set nonu,去掉行号,按住shift 选中1-3行,然后ctrl + insert复制
ctrl + a, ↓,切换到source0.cpp中的pane中,set paste, shift + insert粘贴

12-24行重复上面操作```

(7) 进入homework_7文件夹,格式化source.cpp
```cd homework_7 vim source.cpp gg=G :wq```

(8) 进入homework_8文件夹,打开source.cpp,并依次执行如下操作:
[1] 将第15-21行向右缩进2次。 ```15Gv21G > 重复上面```
[2] 将第22-23行向左缩进1次。 ```22Gv23G<```

(9) 进入homework_9文件夹,打开链接:https://www.acwing.com/activity/content/code/content/1694465/
    新建文件source.cpp,将链接中的代码抄进source.cpp文件中。
vim source.cpp
把代码抄进去
:wq

Result

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我姜同学

何其幸运遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值