2 tmux 和 vim
2.1 tmux 教程
功能:
ㅤㅤ(1):分屏
ㅤㅤ(2):允许断开Terminal
连接后,继续运行进程
结构:
ㅤㅤ一个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
...
操作:
ㅤㅤ1. tmux
:新建一个session
,其中包含一个window
,window
中包含一个pane
,pane
里打开了一个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
或tmux attach
:打开之前挂起的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
后手指松开,然后按Page Up
:翻阅当前pane
内的内容
ㅤㅤ16. 鼠标滚轮:翻阅当前pane
内的内容
ㅤㅤ17. 在tmux
中选中文本时,需要按住Shift
键(仅支持Windows
和Linux
,不支持Mac
,不过该操作并不是必须的,因此影响不大)
ㅤㅤ18. tmux
中复制/粘贴文本的通用方式:
ㅤㅤㅤ●ㅤ按下Ctrl + a
后松开手指,然后按[
ㅤㅤㅤ●ㅤ用鼠标选中文本,被 按下Ctrl + a
后松开手指,然后按]
,会将剪贴板中的内容粘贴到光标处
2.2 vim 教程
功能:
ㅤㅤ(1):命令行模式下的文本编辑器
ㅤㅤ(2):根据文件扩展名自动判别编程语言。支持代码缩进、代码高亮等功能
ㅤㅤ(3):使用方式:vim filename
ㅤㅤㅤㅤ如果已有该文件,则打开它
ㅤㅤㅤㅤ如果没有该文件,则打开一个新的文件,并命名位filename
模式:
ㅤㅤ(1):一般命令模式
ㅤㅤㅤㅤ默认模式。命令输入方式:类似于打游戏放技能,按不同字符,即可进行不同操作。可以复制、粘贴、删除文本等
ㅤㅤ(2):编辑模式
ㅤㅤㅤㅤ在一般命令模式下按i
,会进入编辑模式
ㅤㅤㅤㅤ按下ESC
会退出编辑模式,返回到一般命令模式
ㅤㅤ(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. :n
或nG
:n
为数字,光标移动到第n
行
ㅤㅤ12. gg
:光标移动到第一行,相当于1G
ㅤㅤㅤ●ㅤ删除组合键:gg + d + G
gg + d + nG
ㅤㅤ13. n<Enter>
:n
为数字,光标向下移动n
行
ㅤㅤ
ㅤㅤ14. /word
:向光标之下寻找第一个值为word
的字符串
ㅤㅤ
ㅤㅤ15. ?word
:向光标之上寻找第一个值为word
的字符串
ㅤㅤ16. n
:重复前一个查找操作
ㅤㅤ17. N
:反向重复前一个查找操作
ㅤㅤ
ㅤㅤ18. :n1, n2s/word1/word2/g
:n1
与n2
为数字,在n1
行与n2
行之间寻找word1
这个字符串,并将该字符串替换为word2
ㅤㅤ
ㅤㅤ19. :1, $s/word1/word2/g
:将全文的word1
替换为word2
ㅤㅤ20. :1, $s/word1/word2/gc
:将全文的word1
替换为word2
,且在替换前要求用户确认
ㅤㅤ21. v
:选中文本,按两下ESC
取消选中状态
ㅤㅤ22. d
:删除选中的文本
ㅤㅤ23. dd
:删除当前行
ㅤㅤ24. y
:复制选中的文本
ㅤㅤ25. yy
:复制当前行
ㅤㅤ26. p
:将复制的数据在光标的下一行(yy
)/下一个位置(y
)粘贴
ㅤㅤ27. u
:撤销
ㅤㅤ28. Ctrl + r
:取消撤销
ㅤㅤ29. Shift + >
:将选中的文本整体向右缩进一次 n Shift + >
向右缩进n
次
ㅤㅤ30. Shift + <
:将选中的文本整体向左缩进一次 n Shift + <
向左缩进n
次
ㅤㅤ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
卡死时,可以取消当前正在执行的命令
ㅤㅤ43. 异常处理:
ㅤㅤㅤ●ㅤ每次用vim
编辑文件时,会自动创建一个.filename.swp
的临时文件
ㅤㅤㅤ●ㅤ如果打开某个文件时,该文件的swp
文件已存在,则会报错。此时解决办法有两种:
ㅤㅤㅤㅤㅤ1.ㅤ找到正在打开该文件的程序,并退出
ㅤㅤㅤㅤㅤ2.ㅤ直接删除掉该swp
文件即可
2.3 习题课
homework_0
ㅤㅤ进入 homework_0
文件夹,创建文件 names.txt
,并顺次将下列姓名写入该文件,每个名字占一行。AcWing
、yxc
、Bob
、张强
、李明
、Alice
cd homework_0
vim names.txt
i
AcWing
yxc
Bob
张强
李明
Alice
Esc
:wq
homework_1
ㅤㅤ进入 homework_1
文件夹,打开 problem.txt
,并依次删除下列字符:
ㅤㅤ[1] 最后一行第 101
个字符
ㅤㅤ[2] 第 3
行第 8
个字符
ㅤㅤ[3] 第 1
行第 30
个字符
ㅤㅤ[4] 第 16
行第 55
个字符
ㅤㅤ[5] 第 9
行第 80
个字符
ㅤㅤ最后保存文件并退出。
cd homework_1
vim problem.txt
[1] G 101<Space> i <BackSpace> <Esc>
[2] 3G 8<Space> i <BackSpace> <Esc>
[3] 1G 30<Space> i <BackSpace> <Esc>
[4] 16G 55<Space> i <BackSpace> <Esc>
[5] 9G 80<Space> i <BackSpace> <Esc>
:wq
homework_2
ㅤㅤ进入 homework_2
文件夹,打开 problem.txt
,并依次执行如下操作:
ㅤㅤ[1] 在第1个 two
的后面添加 abc
ㅤㅤ[2] 在第2个 two
的前面添加 def
ㅤㅤ[3] 将第3个 two
后面的连续 12
个字符删掉
ㅤㅤ[4] 将第4个 two
所在的行删掉
ㅤㅤ最后保存文件并退出。
cd homework_2
vim problem.txt
[1] gg /two <Enter> 3<Space> i abc <Esc>
[2] n i def <Esc>
[3] nn 3<Space> d 12<Space>
[4] n dd
:wq
homework_3
ㅤㅤ进入 homework_3
文件夹,打开 problem.txt
,并依次执行如下操作:
ㅤㅤ[1] 将第 5
行至第 15
行中所有 of
替换成 OF
。
ㅤㅤ[2] 将全文中所有的 the
替换成 THE
。
ㅤㅤ[3] 将第偶数个 is
替换成 IS
,第奇数个 is
不变。下标从 1
开始。
cd homework_3
vim problem.txt
[1] :5,15s/of/OF/g
[2] :1,$s/the/THE/g
[3] :1,$s/is/IS/gc nynynynynynyny
:wq
homework_4
ㅤㅤ进入 homework_4
文件夹,打开 problem.txt
,并依次执行如下操作:
ㅤㅤ[1] 删除第 11
行
ㅤㅤ[2] 将所删除的行粘贴到文件最后一行的下一行
ㅤㅤ[3] 复制第 5
行
ㅤㅤ[4] 将所复制的行粘贴到文件当前最后一行的下一行
cd homework_4
vim problem.txt
[1] 11G dd
[2] G p
[3] 5G yy
[4] G p
:wq
homework_5
ㅤㅤ进入 homework_5
文件夹,打开 problem.txt
,并依次执行如下操作:
ㅤㅤ[1] 删除第 11
行第 15
个字符(包含该字符)至第 13
行第 5
个字符(包含该字符)
ㅤㅤ[2] 将所删除的内容粘贴到文件末尾(注意不要另起一行)
ㅤㅤ[3] 复制第 5
行第 88
个字符(包含该字符)至第 7
行第 6
个字符(包含该字符)
ㅤㅤ[4] 将所复制的内容粘贴到当前文件末(注意不要另起一行)
cd homework_5
vim problem.txt
[1] 11G 14<Space> v 13G 5<Space> d
[2] G <End> p
[3] 5G 87<Space> v 7G 6<Space> y
[4] G <End> p
:wq
homework_6
ㅤㅤ进入 homework_6
文件夹,并依次执行如下操作:
ㅤㅤ[1] 清空 source0.cpp
ㅤㅤ[2] 将 source1.cpp
中的第 1-3
行和第 12-24
行复制到 source0.cpp
中
cd homework_6
Ctrl + a + "
开上下两个pane
[1] vim source0.cpp gg d G
[2] vim source1.cpp
set nonu
Ctrl + a + z Shift 选中1到3行 Ctrl + insert Ctrl + a + z
回到 source0 set paste i Shift + insert
回到 source1 Ctrl + a + z 选中12到24行 Ctrl + insert Ctrl + a + z
回到 source0 Shift + insert
:wq
homework_7
ㅤㅤ进入 homework_7
文件夹,格式化 source.cpp
cd homework_7
vim source.cpp
gg=G
:wq
homework_8
ㅤㅤ进入 homework_8
文件夹,打开 source.cpp
,并依次执行如下操作:
ㅤㅤ[1] 将第 15-21
行向右缩进 2
次。
ㅤㅤ[2] 将第 22-23
行向左缩进 1
次。
cd homework_8
vim source.cpp
15G v 21G Shift + > 15G v 21G Shift + >
22G v 23G Shift + <
:wq
homework_9
ㅤㅤ进入 homework_9
文件夹,
ㅤㅤ打开链接:https://www.acwing.com/activity/content/code/content/1694465/
ㅤㅤ新建文件 source.cpp
,将链接中的代码抄进 source.cpp
文件中。
cd homework_9
vim source.cpp
i
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
<Esc>
:wq
跟着炸薯条学完了软考又在acwing上相遇了!!!哇啊啊啊啊啊啊啊啊啊啊啊
我也是!
这个跟其他地方的操作一样吗大佬
我这个向右缩进一直不对,它会把最后得给删除,有大佬知道为什么吗?
这个homework5的,这样操作不都是另起一行粘贴的吗
并不是,p是紧跟的,你可以操作看看。我这里是可以AC的
我这边也可以了
homework_2中第三点让删除two后面12个字母。你这个是连着two一起删除的,删除的开端是错的。
感谢指正,已修改
这里homework_9里面
int a, b
这里把英文的逗号打成中文了感谢指正,已修改
问下如果作业中的某一章的某一节写错了,但是这一章的其他节是没问题的,难道只能将这一章作业全部重置了吗?
这个的话,是可以单独重置某一章作业的某一小节的,不用全部重置。
我记得作业里面是有这个操作的提示的,你可以去看一下
感谢大佬整理
homework_5第三步最后是不是少了复制指令y
应该是的 感谢指正~