梭梭喊你学Vi

Vim 快捷按键

搜索:

- :\[chars]   # 按 n 向下翻 ,  N 向上 翻

删除

- x          # 删除当前光标所在字符
- nx         # 删除之后 n 个字符(包含当前字符) 
- X          # 删除当前光标 前一个 字符
- nX         # 删除光标所在位置前面 n 个字符(不包含当前字符)
- Shift  + (d + $)   # 删除 当前行 光标所在字符及之后 所有 字符
- Shift  + (d + ^)   # 删除 当前行 光标之前  所有 字符
- dw                 # 除从光标所在位置到下一个单词的字符
- dd                 # 删除当前行
- 光标置于首行, 按 d + G # 删除所有内容

移动

0                 --- 移动光标 到 行首
Shift + ^         --- 移动光标到行首第一个非空字符上去
Shift + $         --- 行尾
n$                --- 到第 n 行的行尾
G  或  ]]         --- 移动光标到 最后一行 行首
ngg               --- 指定的行 的行首

n<space>   --- n 表示“数字”,例如 20.按下数字后再按空格键,光标会向右移动这一行 n 个字符。
        		例如 20<space> 则光标会向后面移动 20 个字符距离
		0 这是数字 “0”:移动到这一行的最前面字符处(常用)
		$ 移动到这一行的最后面字符处(常用)
		H 光标移动到这个屏幕的最上方哪一行
		M 光标移动到这个屏幕的中央哪一行
		L 光标移动到这个屏幕的最下方哪一行
		G 移动到这个文件的最后一行(常用)
		nG n为数字。移动到这个文件的第n行。
				例如20G则会移动到这个文件的第20行(可配合:set nu)
		gg 移动到这个文件的第一行,相当于1G(常用)
		n<Enter> n为数字。光标向下移动n行(常用)
  • 光标在单词间移动

    - Shift + 左键   # 当光标位于 单词内部, 快速移动光标 到单词头 
    - Shift + 左键   # 当光标位于 单词头, 快速移动到前一个单词头
    - Shift + 右键   # 无论光标位置, 快速移动到下一个单词头, 
    

粘贴

p    --- 当前光标行的 下 一行
P    --- 当前光标行的 上 一行

注释

  • 第一种方法

    在命令模式下:
    插入注释: 	
            在命令模式下按  v  进入 virtual  模式: 块模式
            用上下键选中需要注释的行数	---行的范围		
            按 ctrl + v  进入 列模式
            按 大写的 I  进入 插入模式, 
            输入  #  或者是 '//'
            立刻 按 两下 ESC用上下键选中需要注释的行数
    删除注释:
            在命令模式下 按  ctrl + v 进入列模式
            用 上下 左右 键 选中 所要批量的 列数,
            按 小写的  d  
    
  • 第二种方法

    在扩展模式下 敲 字符串 替换命令:
      插入注释:
          :起始行号,结束行号s/^/#/g
          :起始行号,结束行号s#^#//#g
      删除注释:
          :起始行号,结束行号s/^#//g
          :起始行号,结束行号s#^//##g
    
  • 记忆方法

    对于 '#' 注释:  s/^/#/g
    		 类似 与 sed 命令, '/' : 为分隔符, 三个斜杠两个间隙
    			前两个 斜杠之间的为匹配模式,支持正则
    			后两个斜杠 之间的 为 所要替换的字符串
    		 '^' : 表示 开头
    		 '^#' : 表示 每行 以 '#' 开头的
    对于 '//' 注释: s#^#//#g  
    		原理 也是 sed 命令, 只不过分隔符 变为了 '#' , 三个
    		不论什么字符,紧跟着s命令的都被认为是新的分隔符
    

翻页

- Shift + 上下键

执行命令

暂时离开vi到命令模式下执行command的显示结果
:!command      ---  回车返回到 vi 编辑器
:w [filename]  ---  将编辑的数据存储成另一个文件(类似另存新文件)
:r [filename] ---  加文件内容 到光标所在行之后
:e!            ---  将文件还原到最原始的状态, 刚打开的 状态

匹配

Shift + %   # 快速匹配 大, 中 , 小 括号的另一半

分屏

- :sp filename    # 水平分屏打开另一个文件
- :vsp filename   # 垂直分屏打开另一个文件

保存和退出

- :w:  # 保存文件
- :q   # 退出VI编辑器
- :q!  # 强制退出VI编辑器,放弃未保存的修改
- :wq  # 保存文件并退出VI编辑器
- :x   # 等价于 :wq 

撤销和重做

- u       # 撤销上一次编辑操作
- Ctrl+r  # 重做上一次撤销的操作

参考网址

Vim的基本使用

Vim的基本配置

Vim的配置选项查询手册

vim编辑器使用手册

Vim - 扩展命令(末行命令)模式

终端命令

  1. 清空文件

    >  filename   --- 使用输出重定向为空 , 覆盖 操作。
    
  2. firewalld 防火墙

    临时关闭防火墙         systemctl stop firewalld
    永久防火墙开机自关闭    systemctl disable firewalld
    临时打开防火墙         systemctl start firewalld
    防火墙开机启动         systemctl enable firewalld
    查看防火墙状态         systemctl status firewalld	
    
  3. 查看 计算机 信息

    查看 服务器 信息:   curl -I www.baidu.com
    内核信息:     uname -a   ===   cat /etc/issue
    网卡信息:     ifconfig 
    cpu 信息:     cat /proc/cpuinfo
    内存信息 :     free -m 
    硬盘分区信息:  fdisk -l 
    挂载目录:     df -h 
    	RedHat:  cat /etc/redhat-release
    	Ubuntu:  cat /proc/version
    
  4. 杀死进程

    pkill redis-server  --- 根据 进程名 杀死 所有此进程
    killall server_name
    kill -9  pid 
    
  5. 杂项

------>  ss –t –a 显示tcp连接

------>  pgrep redis-server | wc –l查看启动某个线程的数目。

------>  pstack可以用来查看Linux程序运行过程中的堆栈

------>   pwdx pid用来查看正在运行的线程所在的目录

------>  ulimit -n,我们可以得到一个进程所能够打开的fd的最大数.

------>  lsof -i:port 

------> 动态监控 某一个文件, 例如日志 文件;
		tail  -f  filename.log

------>:从 Google 上下载下来的配置文件往往都带有数字,现在需要删除所有行的首数字:
			sed  's/^[0-9][0-9]*//g'   sed.txt

Linux 三剑客

-----》  过滤出文件的空白行和注释行:  两次过滤 
			cat /etc/mysql/mariadb.conf.d/50-server.cnf | grep -v '^#' | grep -v '^$'
			等同于 
			grep -Eiv '^#|^$' /etc/mysql/mariadb.conf.d/50-server.cnf
------> 查找某一个 文件的位置:
		find   查找跟目录  文件名


----->  快速过滤 出某一文件中的 包含特定字符的 的 行:
		grep  ‘server’  /etc/mysql/mariadb.conf.d/50-server.cnf

----->  对输出内容 进行 全局替换 显示 : 
		sed 's/6377/6399/g' redis.conf
			s : 代表替换
			6377 : 被替换的字符
			6399 : 替换之后的字符 
			g : 全局替换  ---global 

感叹号 的 用法

'!'符号在Linux中不但可以用作否定符号,还可以用来从历史命令记录中取出命令或不加修改的执行之前运行的命令:

		如果!紧跟在一对方括号的左方括号之后,则表示不包括在方括号中列出的字符
	----->  rm -rf shi[!1234567890]  
			代表删除 当前目录下文件名为四个字符, 前三个为 'shi' , 第四个不为数字的 文件


	1、 !! 代表最近一条命令 , 可与其他命令 组合使用 构成新的命令
		>>  ./mariadb.conf
		>> cat !!   ==  cat mariadb.conf  

	2、  !$  : 最近一条命令的最后一个参数
		>> ls /etc/mysql
		>> cat !$/mariadb.conf  == cat /etc/mysql/mariadb.conf

	3、 	!xxx  :  最近一条 以次 字符串开头 的命令          **********************************
		>> mysql -h 192.168.0.106 -P 3306 -uroot -p 
		>> !mysql      
        
	4、  !?xxx  : 模糊匹配 最近一条命令,  指向最近一次包含此字符串(xxx)的命令
		>> ps -ef | grep nginx
		>> !?grep?      ====  ps -ef | grep nginx
			最近的命令: ps -ef | grep nginx , 匹配到了 grep 字符串。 

	5、 !500  : 执行history查询出来前面序号为500的命令

	6、 !-1  :  执行history查询出来的最后一条命令。 也就是最近一条命令。
linux内核与操作系统的区别:
	Linux操作系统是包含linux内核的。
	linux操作系统是将linux内核进行扩展,安装一些开发包和常用工具。
	比如ubuntu和centos可能会使用同一个版本的linux内核,
	但是他们给linux内核配套不同的工具和命令,比如管理工具,
	ubuntu采用apt-get,centos采用yum。 
	换言之,linux内核加上一些配套的系统命令就构成了一个linux操作系统


UFW 代表 Uncomplicated Firewall ,
	是用于管理 iptables(netfilter) 防火墙规则的对用户更加友好的前端工具。
		它是 Ubuntu 的默认防火墙配置工具

计算机网络协议——通信协议综述
		https://blog.csdn.net/ghw15221836342/article/details/100191924


sed  命令的 系统学习: 
			https://www.cnblogs.com/ginvip/p/6376049.html
			https://blog.csdn.net/qq_22172133/article/details/81637752
除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk

Linux 学习网站: http://c.biancheng.net/view/2845.html


posted @ 2019-10-28 02:32  梭梭666  阅读(156)  评论(0)    收藏  举报
返回顶部