@

08_Linux基础-vim-tmux-字符编码


一. vim

文本编辑器-vim(编辑文本)

Windows:记事本、word、sublime、pycharm

能编辑音乐、视频、图片?答:不能,只能编辑文本

Linux:

  vi(==字符界面==),vim(==字符界面==),gedit(==图形化==)

unix 都会安装vi

vim 是vi的加强版(在vi基础上添加其他功能)

vim编辑器作用

vim编辑器作用:

1、编写脚本、程序

2、修改配置文件

3、做一些文本处理

vim模式

vim有三种最常用最基本的模式:命令模式、编辑模式(插入模式)、末行模式、可视模式,替换模式

vim有三种最常用最基本的模式:

命令模式

编辑模式

末行模式

还有另外两种不常用模式:

视图模式

替换模式

vim命令模式

命令模式:vim a / ESC

  ==无法编辑==,只允许删除、复制、粘贴、撤销等快捷操作,打开文件时==默认==进行此模式

yy 复制

p 粘贴

dd 删除

u 撤销

命令模式 相当于一个中间介

每个模式退出 都会回到命令模式,命令模式可以进入所有模式

vim编辑模式

编辑模式 ESC i

-- 插入 --

  插入模式,进行==文本编辑==

-----------------------------------------------------------------------

操作键 功能

  ==i==	光标在==当前==位置进入插入模式

  I	光标==跳到行首==并进入插入模式

  a	光标==后退一格==并进入插入模式

  A	光标==退到行尾==并进入插入模式

  ==o==	在光标所在==行下新起一行==并进入插入模式

  ==O==	在光标所在==行上新起一行==并进入插入模式

  s	==删除==光标==所在字符==并进入插入模式

  S	==删除==光标所在==行==并进入插入模式

vim末行模式

末行模式 ESC :

:

输入命令,设置环境,保存文件,查找替换

----------------------------------------------------

操作键 功能

  ==:q==	如果未对文件做改动则==退出==

  ==:q!==	==放弃保存==并==退出==

  ==:wq	保存==当前文件并==退出==

  ==:wq!	强制保存==当前文件并==退出==

  ==:x	保存==当前文件并==退出==

  ==:x!	强制保存==当前文件并==退出==

  ==ZZ	保存==当前文件并==退出==

vim视图模式

视图模式 ESC v、V、ctrl+v

-- 可视 行 --

  选择特定的块文本,进行复制,修改等

小v:选择行指定的部分

大V:选择整个行

Ctrl + v :选择块 插入按I 退出模式进人命令模式(Esc),这个时候就全部加上

vim替换模式

替换模式 ESC R

-- 替换 --

-----------------------------------

123 hello456 789

xxx helloyyy zzz

xxx yyy zzz

练习

课堂练习1 插入模式

123 456

123 4

xyz 789

4

xyz 789

---------------------------------------------------------

步骤:

v 小v 可视模式 visual ---》选择一部分

y 按y复制

o 按o另起一行,进入插入模式

P 再按esc,再p,按p粘贴

课堂练习2

123 TEST 456 789

xxx TEST yyy zzz

---------------------------------------------------------

选择块插入

ctrl + v:选择块

插入按大I

ESC 退出模式进入命令模式,这个时候就全部加上

vim常用快捷方式

vim 常用快捷方式

vim打开文件:

# vim e

# vim +5 e

表示打开文件e,并且将光标移动到第3行

# vim +/aa e

打开文件e,并且高亮显示aa字符

退出vim编辑器的方法

vim保存退出:

操作键 功能

  ==:q==	如果未对文件做改动则==退出==

  ==:q!==	放弃保存并==退出==

  ==:wq==	==保存==当前文件并==退出==

  ==:wq!==	==强制保存==当前文件并==退出==

  ==:x==	==保存==当前文件并==退出==

  ==:x!==	==强制保存==当前文件并==退出==

  ==ZZ==	==保存==当前文件并==退出== (注:命令模式退出)

光标移动

光标移动:上下左右方向键(k,j,h,l)

-------------------------------------------------

操作类型 操作键 功能

光标方向移动 k,j,h,l 上、下、左、右

==============================================================

翻页 Page Down或Ctrl+F 向下翻动一整页内容

  			 Page Up或Ctrl+B		向==上==翻动一整页内容

==============================================================

行内快速跳转 Home键或“^”、数字“0” 跳转至行首 (注:“^”尖符号)

  					End键或“$”键					跳转到==行尾==

==============================================================

行间快速跳转

1G或者gg 跳转到文件的首行

G 跳转到文件的末尾行

#G 跳转到文件中的第#行

(末行模式):40 跳转到40行

w 每个单词的首字母跳转

e 每个单词的尾字母跳转

vim设置

vim设置

(末行模式):set number 设置行数

(末行模式):set nonumber 取消设置

--------------------------------------

:set number

1 aa bb cc
2 dd ee ff
1 aa bb cc
2 dd ee ff
3 aa bb cc

删除(剪切)、复制、粘贴

操作类型

操作键 功能

--------------------------------------

删除 (*注:一般^行首,$行尾)

x或d或Del 删除光标处的单个字符

dd 删除当前光标所在行

#dd 删除从光标处开始的#行内容

d^ 删除当前光标之前到行首的所有字符

d$ 删除当前光标处到行尾的所有字符

dw 删除一个单词(word),以空格、冒号等 符号

------------------------------------------------------

复制

yy 复制当前行整行的内容到剪贴板

#yy 复制从光标处开始的#行内容

------------------------------------------------------

粘贴

小p 将缓冲区中的内容粘贴到光标位置处之后

大P 粘贴到光标位置处之前

文件内容查找

文件内容查找

操作键 功能

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

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

小n 定位下一个匹配的被查找字符串

大N 定位上一个匹配的被查找字符串

(注:/word 和 ?word 不同点:方向相反)

取消高亮、设置行数、取消行数设置

取消高亮 :noh
设置行数:set nu
取消:set nonu

二. vim-tmux及字符编码问题

文件内容替换

文件内容替换(末行模式)

命令 功能

/old/new 将当前行中查找到的第一个字符“old”串替换为“new”

/old/new/g 将当前行中查找到的所有字符串“old”替换为“new”

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

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

/old/new/gc 在替换命令末尾加入c命令,将对每个替换动作提示用 户进行确认 Confirm

:%s/feng//g 将所有的feng删除

(注:/…/… 当前行 第一个str

  	:s/…/…/g当前行 所有str

  	:#,#s/…/…/g 行号#,# 所有str

  	:%s/…/…/g 整个文档 所有str

  	:s/…/…/gc 整个文档 所有str 确认提示

  	:%s/…//g 整个文档 所有str 删除)

(注:s —— 替换

  	 :s	 —— 当前行替换

  	\#,#  —— 行号#到#

  	%	 —— 整个文档

  	g	 —— 所有字符串

  	c	 —— 确认提示

  	:%s/…//g —— 整个文档 所有str 删除)

缓存:swp文件

编写文件时 1.txt

先把1.txt文件拷贝一份,拷贝成.1.txt.swp文件,真正编辑的是这个文件

保存时,会将.1.txt.swp覆盖1.txt

-------------------------------------------------------------------------------------------

相关操作

一个终端下# vim 2.txt,另一个终端敲# ls -al,提示如下

[root@sanchuang-linux cp]# ls -al

总用量 88

-rw-r--r--. 1 root root 4096 10月 15 15:05 .2.txt.swp

===========================================================================================

在另一个终端# vim 2.txt,提示如下

发现交换文件 ".2.txt.swp"
所有者: root 日期: Thu Oct 15 15:05:45 2020
文件名: ~root/cp/2.txt
修改过: 否
用户名: root 主机名: sanchuang-linux
进程 ID: 3129 (仍在运行)
正在打开文件 "2.txt"
日期: Thu Oct 15 15:05:22 2020 (1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
如果是这样,请用 ":recover" 或 "vim -r 2.txt"
恢复修改的内容 (请见 ":help recovery")。
如果你已经进行了恢复,请删除交换文件 ".2.txt.swp"
以避免再看到此消息。 交换文件 ".2.txt.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 退出((Q)), 中止((A)):

===========================================================================================

:wq 写入时,提示如下

"2.txt"
警告: 此文件自读入后已发生变动!!!
确实要写入吗 (y/n)?

* 注意:进入命令模式,按数字键,之后再进入插入模式的话,会将输入内容按照之前按的数字大小复制成多份

(注:步骤

  	vim 1.txt ——> 先按数字3 ——> 按i进入插入模式 ——> abc ——> Esc ——> abcabcabc)

打开新文件或读入其他文件内容 && 撤销和另存为

打开新文件 :e 或 读入其他文件内容 :r

命令 功能

:e ~/install.log 打开新的文件进行编辑

:r /etc/filesystems 在当前文件中读入其他文件内容 (注:即追加内容)

撤销和另存为 :w

:w /tmp/hello.txt 把当前文件另存为/tmp目录下的hello.txt

同时编辑多个文件

# vim 1.txt 2.txt

:n 编辑上一个

:N 编辑下一个

===========================================================================================

例:

# vim 2.txt

:e 1.txt

(注:进入1.txt进行编辑)

--------------------------

# vim 2.txt

:r 1.txt

(注:读入1.txt文件的内容。在当前光标下一行插入1.txt文件内容)

===========================================================================================

撤销和另存为 :w

命令 功能

:w /tmp/hello.txt 把当前文件另存为/tmp目录下的hello.txt

===========================================================================================

例:

# vim 1.txt

:w /root/cp/test.txt

(注:将文件1.txt另存为在/root/cp/目录下,改名为test.txt)

vim的配置(3种)

--------------------------------------------------------------------------------------------

第一种

vim设置:(末行模式)

一次性设置行数:(只在当前编辑时生效)

:set number

取消

:set nonumber

--------------------------------------------------------------------------------------------

第二种

全局配置文件:

# vim /etc/vimrc

# cp /etc/vimrc{,.bak} (注:效果等同于 # cp /etc/vimrc /etc/vimrc.bak)

  							   (* 注↑:备份操作。修改全局配置文件前先备份。出错就回滚)

set number (注:设置行数)

set showcmd (注:显示当前键入命令)

set encoding=utf-8 (注:设置编码)

set tabstop=4 (注:设置tab键的空格数)

--------------------------------------------------------------------------------------------

第三种:(只针对当前用户生效)

编写 ~/.vimrc

[root@sanchuang-linux ~]# vim .vimrc

[root@sanchuang-linux ~]# cat .vimrc

set number

set showcmd

set encoding=utf-8

set tabstop=4

tmux

tmux shell里面多屏幕编辑
安装:
# yum install tmux -y
tmux
Ctrl+b 上下左右
Ctrl+b shift +"
Ctrl+b shift + %
Ctrl+b + c 创造新的一页
Ctrl+b + p 返回上一页
Ctrl+b + n 返回下一页
Ctrl+b + x 关闭当前小窗口
ctrl+d 关闭
Ctrl+b + b + ! 删除 Ctrl+b + d 暂存,保存当前的tmux状态并退出tmux

tmux:

安装:yum install tmux

tmux:

一:敲tmux 进入会话

窗口底部有绿杠表示进入了tmux

----------------------------------------------------------------------------------------------------------

左右分屏:先按ctrl + b,然后再按shift+%号

上下分屏:先按ctrl + b, 然后再按shift+"

上下左右移动光标: ctrl + b,再按上下左右方向键

删除一个分割: 光标移动到那个分割屏幕,然后按ctrl +d

新增一个新的窗口(新增一页):ctrl+b,然后按c

返回上一页: ctrl+b 然后按p

返回下一页: ctrl+b 然后按n

----------------------------------------------------------------------------------------------------------

保存当前的tmux状态,并退出tmux:

使用: ctrl+b 然后按d

----------------------------------------------------------------------------------------------------------

查看当前保存的会话状态

[root@mysql-binary ~]# tmux ls

0: 2 windows (created Thu Oct 15 16:31:27 2020) [139x22]

1: 2 windows (created Thu Oct 15 16:45:40 2020) [139x22]

-------------------------------------------------------------------------------------------------------------

进入第一个会话状态:

tmux a -t 0

-------------------------------------------------------------------------------------------------------------

设置tmux,跟vim的末行模式很像:

按ctrl+b ,然后按:(这时窗口底部就会有黄色的杠)

设置同步: ctrl+b 然后按: 然后输入set synchronize-panes on

        								   取消同步==set synchronize-panes off==

tmux终端关闭,执行的程序会继续执行 (* tmux的好处)

tmux 终端关闭,不是tmux会话关闭。tmux 终端关闭,那之前执行的程序都会继续执行。

不使用tmux,默认情况下,终端关闭,执行的程序也会关闭。 测试如下

================================================================

测试:

编写脚本:

# cat sleep.sh

echo "begin..........."

sleep 100

echo "end............."

=======================

运行脚本

# sh sleep.sh

begin...........

=======================

运行脚本:(放到后台运行)

# sh sleep.sh &

=======================

查看进程有没有运行

# ps -ef |grep sleep

root 13133 13112 0 17:12 pts/6 00:00:00 sh sleep.sh

root 13134 13133 0 17:12 pts/6 00:00:00 sleep 100

root 13190 13140 0 17:12 pts/16 00:00:00 grep --color=auto sleep

=======================

关闭终端之后再重新开启连接,查看进程有没有运行。

结果:没有运行

……

=======================

在tmux下 运行脚本

……

tmux关闭后 会话还在,程序还会一直运行

# ps -ef |grep sleep

root 13278 13003 0 17:17 pts/13 00:00:00 sh sleep.sh

root 13279 13278 0 17:17 pts/13 00:00:00 sleep 100

root 13284 13140 0 17:17 pts/16 00:00:00 grep --color=auto sleep

=======================

编码

编码

编码:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

文件编码一般2种方式:ascii 和 unicode

UTF-8 是 Unicode 的实现方式之一

转编码:

# iconv -f utf-8 -t gbk code_test.txt >code_test1.txt

ASCII 码 最多能表示256个字,不够用

unicode 万国码,每个字给你一个序号

UTF-8 是 Unicode 的实现方式之一,规定怎么存储在计算机。

(UTF-8对ascii码/英文码友好)

以什么编码方式存储,就要以什么编码方式解码

utf-8、utf-16

国内编码 gbk、gb2131

===============================================

系统语言设置环境:

# locale

LANG=zh_CN.UTF-8

LC_CTYPE="zh_CN.UTF-8"

LC_NUMERIC="zh_CN.UTF-8"

LC_TIME="zh_CN.UTF-8"

LC_COLLATE="zh_CN.UTF-8"

LC_MONETARY="zh_CN.UTF-8"

LC_MESSAGES="zh_CN.UTF-8"

LC_PAPER="zh_CN.UTF-8"

LC_NAME="zh_CN.UTF-8"

LC_ADDRESS="zh_CN.UTF-8"

LC_TELEPHONE="zh_CN.UTF-8"

LC_MEASUREMENT="zh_CN.UTF-8"

LC_IDENTIFICATION="zh_CN.UTF-8"

LC_ALL=

===============================================

file code_test.txt 注:查看文件编码类型

# locale 系统语言设置环境

# file code_test1.txt 看文件编码方式

系统、文件、shell 三者统一 ,不会乱码

===============================================

上课代码操作:

# mkdir vim_test

# cd vim_test/

# ls

# rz -E (注:将windows code_test.txt文件上传linux)

rz waiting to receive.

# ls

code_test.txt

# vim code_test.txt

# file code_test.txt (注:查看文件编码类型)

code_test.txt: UTF-8 Unicode text

# iconv -f utf-8 -t gbk code_test.txt >code_test1.txt (注:转国标码)

# file code_test1.txt

code_test1.txt: ISO-8859 text (注:国标码)

# vim code_test1.txt (注:显示乱码)

#

为什么出现乱码?答:以utf-8的方式打开gbk编码

以什么编码方式存储,就要以什么编码方式解码

总结(xmind)

vim文本编辑器
vi,vim
vim常见模式
命令模式
文件打开默认就是命令模式
ESC键到达
编辑模式
a,i,o,s(支持大写)
末行模式

可视模式
v
选中文本指定部分
V
选择文本指定行
ctrl+v
选择文本指定块
替换模式
R
基本使用
命令模式
删除
x 、d
dd
5dd
复制
yy
3yy
粘贴
p
撤销
u
查找
/
光标移动
上下左右方向键(k,j,h,l)
文件首
gg
文件尾
G
移动到特定行
5G
:5
行首
home键
0
^
行尾
end键
$
上翻页
page up, ctrl+b
下翻页
pagedowm, ctrl+f
编辑模式
i
I
o
O
a
A
s
S
可视模式
复制y
插入 I
末行模式
退出和保存
q
q!
wq
wq!
x
ZZ命令模式退出
替换
:s/old/new
:s/old/new/g
:%s/old/new
:%s/old/new/g
:3,5s/old/new/g
:%s/old/new/gc
设置
文件操作
:e 编辑新文件
:r 导入文件内容
:w 另存文件路径
vim 1.txt 2.txt
:n 编辑下一个
:N 编辑上一个
vim常见快捷方式使用
vim file1 file2 file3
vim +10 file
vim +/aa file
vim的配置
临时配置
末行模式
:set nu
全局配置
/etc/vimrc
用户配置
~/.vimrc
tmux
tmux:
安装:yum install tmux
tmux:
一:敲tmux 进入会话
窗口底部有绿杠表示进入了tmux 左右分屏:先按ctrl + b ,然后再按shift+% 号
上下分屏:先按ctrl + b, 然后再按 shift+"
上下左右移动光标: ctrl + b 再按上下左右方向键
删除一个分割: 光标移动到那个分割屏幕,然后按ctrl +d
新增一个新的窗口(新增一页): ctrl+b 然后按c
返回上一页: ctrl+b 然后按p
返回下一页: ctrl+b 然后按n 保存当前的tmux状态,并退出tmux:
使用: ctrl+b 然后按d 查看当前保存的会话状态
[root@mysql-binary ~]# tmux ls
0: 2 windows (created Thu Oct 15 16:31:27 2020) [139x22]
1: 2 windows (created Thu Oct 15 16:45:40 2020) [139x22] 进入第一个会话状态:
tmux a -t 0 设置tmux,跟vim的末行模式很像:
按ctrl+b ,然后按: (这时窗口底部就会有黄色的杠)
设置同步: ctrl+b 然后按: 然后输入set synchronize-panes on
取消同步set synchronize-panes off tmux 终端关闭,不是tmux会话关闭。那之前执行的程序都会继续执行。
不使用tmux,默认情况下,终端关闭,执行的程序也会关闭。
文件编码
iconv -f utf-8 -t gbk file.txt > file2.txt
查看系统语言环境
locale
ascii
unicode
utf-8
utf-16
gbk
gb2132

08_Linux基础-vim-tmux-字符编码的更多相关文章

  1. Java基础-二进制以及字符编码简介

    Java基础-二进制以及字符编码简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必计算机毕业的小伙伴或是从事IT的技术人员都知道数据存储都是以二进制的数字存储到硬盘的.从事开 ...

  2. VIM的字符编码设置

    vim 编码方式的设置和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux ...

  3. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  4. Python 基础篇:字符编码、函数

    字符编码 在python2默认编码是ASCII, python3里默认是utf-8 unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so ...

  5. java基础---->java中字符编码问题(一)

    这里面对java中的字符编码做一个总结,毕竟在项目中会经常遇到这个问题.爱不爱都可以,我怎样都依你,连借口我都帮你寻. 文件的编码格式 一.关于中文的二进制字节问题 public static Str ...

  6. python基础——6(字符编码,文件操作)

    今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 *****     2.字符与字节: 字符占多少字节,字符串转化 ***     3.文件操作: 操作硬盘中的一块区域:读写操作  ...

  7. Python基础之 一 字符编码及转换

    python2 / python3编码转换 先上图一张: 说明:python编码转换的流程是 先进行decode解码,然后进行encode编码 解释: u'你好'  -->带u表示为unicod ...

  8. python 学习之 基础篇二 字符编码

    声明: 博文参考1:字符编码发展历程(ASCII,Unicode,UTF-8) 博文参考2:Python常见字符编码间的转换 (1)为什么要用字符编码 早期的计算机使用的是通电与否的特性的真空管,如果 ...

  9. Python基础(变量、字符编码、数据类型)

    变量 变量名由字母.数字(不能为首字符).下划线组成,不能使用关键字 以下关键字不能声明为变量名 ['and', 'as', 'assert', 'break', 'class', 'continue ...

  10. Python基础3:字符编码

    http://www.jb51.net/article/64917.htm Python 编码为什么那么蛋疼? https://i.cnblogs.com/EditPosts.aspx?postid= ...

随机推荐

  1. SQL server设置连接数

    SQLServer查看及设置最大连接数   很多时候自己本地开发会遇到 ,打开几个连接正常访问 之后就报错误,这时候需要调整sqlserver 最大连接数. 1. 查询最大连接数 SELECT val ...

  2. 对互斥事件和条件概率的相互理解《考研概率论学习之我见》 -by zobol

    1.从条件概率来定义互斥和对立事件 2.互斥事件是独立事件吗? 3.每个样本点都可以看作是互斥事件,来重新看待条件概率 一.从条件概率来定义互斥和对立事件 根据古典概率-条件概率的定义,当在" ...

  3. 从开发一款基于Vue技术栈的全栈热重载生产环境脚手架,我学到了什么

    浏览文章前 这一期,我分享给大家三点看源码的小技巧,这也是从别的大佬那总结的. 被反复使用的代码 这样的代码是一个软件的重点函数,一个大神的写法有很多精华值得学习. 穿越时间的代码 如果一段代码10年 ...

  4. SAP Web Dynpro-调试应用程序

    您可以使用ABAP工作台中的各种工具来调试源代码. 您可以使用调试器测试Web Dynpro应用程序的所有源代码. 步骤1-要启动调试器,您必须在ABAP工作台中选择一个新的调试器. 步骤2-转到实用 ...

  5. centos7解决无法上网的问题

    问题:centos7出现无法进行联网,如下图所示,执行该命令: ping qq.com 出现如下情况: 解决方法: 首先cd到需要修改文件的所在目录下: [root@localhost ~]# cd ...

  6. 搭建企业级实时数据融合平台难吗?Tapdata + ES + MongoDB 就能搞定

      摘要:如何打造一套企业级的实时数据融合平台?Tapdata 已经找到了最佳实践,下文将以 Tapdata 的零售行业客户为例,与您分享:基于 ES 和 MongoDB 来快速构建一套企业级的实时数 ...

  7. JetBrains系列IDE创建文件模板

    #coding:utf-8 ''' @version: python3.6 @author: '$USER' @license: Apache Licence @contact: steinven@q ...

  8. 要想不踩SaaS那些坑,得先了解“SaaS架构”

    摘要:围绕当下许多企业青睐的SaaS应用开发,华为云开发者技术服务工程师程泽在DTT首期带来主题为 <SaaS云原生应用典型架构> 的DTT首期直播分享. 本文分享自华为云社区<DT ...

  9. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  10. 工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03

    作者:vivo 互联网服务器团队- Cheng Wangrong 本文是<vivo营销自动化技术解密>的第4篇文章,分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了 ...