vim 常用功能大全
文章目录
- 1、搜索
- 1、配置
- 2、vim恢复以及乱码问题
- 3、管道命令,即竖杠 ' | '
- 4、find 搜寻文件或目录
- 5、字符串替换命令
- 6、重定向命令
- 7、删除
- 8. 行位定位
- 9、复制一行或多行
- 10、粘贴
- 11、撤销与重做
- 11、代码注释
- 7. 搜索
- 8. 把外部文件读入 Vim
- 9. 把命令的结果读入 Vim
- 10. 切换到上次修改的位置
- 11. 移动到文件顶部或底部
- 11、grep 的用法
- 12、ll或ls显示说明
- 13、lsof命令
- 14、创建用户以及查看当前用户
- 15、常用查看文件大小与Linux系统命令
- 16、查看内存情况
- 17、修改文件夹及其里面的内容的权限
- 18、查看某个端口链接状态的连接数
- 19、同步服务器的时间
- 20、不允许ssh登录如何配置
- 21、怎么看linux的防火墙是否阻止80端口**
- 22、查看文件编码以及修改文件编码
- 23、软连接
- 24、定位 IO 拼接的常用方法
1、搜索
- 先按ESC ,然后再输入一下命令: ’ 😕 ‘
:/查找内容
之后按 回车 就确定定位到当前高亮位置,如果不是你要找的,则可以按:“n”,意即寻找下一个输入关键字的内容。
1、配置
set number # 显示行号
set autoindent # 自动缩进
set nowrap # 不换行
2、vim恢复以及乱码问题
2.1 在vi和vim中恢复误删除的东西?
首先要按Esc键,之后再按 u 撤销之前的修改的内容。
u
2.2 打开一个文件中出现一些特殊符号或是乱码
vim -b mytest.php #其中-b一般是用来查看对应的二进制文件的
3、管道命令,即竖杠 ’ | ’
上面的意思是:将查询出来的内容交给管道后面的命令装饰之后再展示出来
例如:cat install.log | more (more的意思是将一屏放不下的内容以分页的形式显示)
ls -l /etc | more
如果想看上一页的内容,可以通过:Shift + PageUp 来查看
管道配合grep(过滤)可以达到很好用的组合例如:
cat -n hello.txt | grep "hello" #查看并过滤出来带有hello的内容, -n 表示显示出来第几行的内容
4、find 搜寻文件或目录
find /home -name hello* #查找home目录下的文件名或目录为hello的
find / -name h?m* #在跟目录下查找h开头第二个字符是任意的,第三个是m,后面的是任意的字符
find / -size +1000000k #表示在根目录下查询文件大于1000000K的文件
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l
5、字符串替换命令
:s/well/good/ #替换当前行第一个 well 为 good
:s/well/good/g #替换当前行所有 well 为 good
:n,$s/well/good/ #替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g #替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/well/good/ #等同于 :g/well/s//good/ 替换每一行的第一个well为good
:%s/well/good/g #等同于 :g/well/s//good/g 替换每一行中所有well为good
#特殊符号转义:可以使用 '#' 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# #替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g #可以把文件中所有路径/usr/bin换成/bin
6、重定向命令
ls -l /etc/ #显示
ls -l /etc > /home/myback.txt #覆盖重定向,把显示的结果覆盖到/home/myback.txt中去
ls -l /etc >> /home/myback.txt #追加重定向,把显示的结果追到/home/myback.txt中去
7、删除
7.2 删除单行
- 先按ESC,然后输入以下命令
dd 5dd #删除当前行开始的5行;
7.1 删除多行步骤如下
- 按Esc键退出,在命令行中输入
190,6233d (即[190 , 6233]都删除掉) dG :(先输入d,然后按 shift 键输入 g)删除当前行至最后一行的所以行。
- 如果想要清空整个文件内容,在直接运行以下命令
:> log.txt
7.3 删除光标后的数据
- 先按 ESC,然后再输入一下命令
d$
8. 行位定位
- 直接定位到第一行: 按Esc键退出,在命令行中输入:gg
- 直接定位到最后一行: 按Esc键退出,在命令行中输入:G
- 直接定位到某一行: 按Esc键退出,在命令行中输入:17G
9、复制一行或多行
yy #复制当前行
7yy #从当前行开始复制7行
10、粘贴
p #粘贴
按 Esc 切换到正常模式;
把光标移到你需要复制的代码行首;
按 V 选择整行,可移动光标选择多行;
按 d 剪切或按 y 复制选择的代码;
移动光标到你需要粘贴的位置,按 p 粘贴代码到光标后的位置,或按 P 粘贴到光标前。
11、撤销与重做
在使用 Vim 或其他编辑器的时候,你可能经常需要对某些修改进行撤销或重做。在 Vim 中,你可以切换到正常模式,按 u 来撤销操作,按 Ctrl+r 来重做。
11、代码注释
代码注释:
按 Ctrl+v 切换到可视化模式;
移动光标(j 或 k)选中需要注释的行的开头;
按大写 I,然后输入注释符,如 #; 最后按 Esc。
取消注释:
按 Ctrl+v 切换到可视化模式;
按 j 或 k 选择要删除的注释符;
按 d 或 x 删除注释符
如果使用 // 符号注释,则取消注释时需进行两遍操作。
7. 搜索
搜索在很多时候都是一个非常重要的功能。在文件中搜索一个特定的词,可以切换到正常模式,然后输入斜线( / ),之后跟上要搜索的词,回车即可。
/word-to-be-searched
按 n 显示下一个搜索结果,按 N 显示上一个搜索结果。
8. 把外部文件读入 Vim
我开始使用 Vim 的时候,经常会打开一个文件、复制内容、关闭文件、打开另一个文件、然后粘贴进去复制到内容。其实 Vim 中读取另一个文件的内容非常方便。切换到正常模式,然后按 :read。使用此快捷键你不需要手动打开文件来复制内容。
:read readme.md
9. 把命令的结果读入 Vim
有时候你需要把某个命令的结果复制到 Vim 中,这在 Vim 也非常简单。切换到正常模式,然后输入 :read !command 即可把 command 的结果输入到 vim 中。
:read !ls -l
10. 切换到上次修改的位置
想知道你在文件中做的最后一次修改是在什么位置?切换到正常模式,输入 g; 来即可切换到上次修改的位置。
11. 移动到文件顶部或底部
当需要移动到文件顶部或底部时,通过 j 或 k 来一行行的移动显得有点麻烦。Vim 提供了一个快捷键可直接实现此功能。切换到正常模式,输入 gg 返回文件顶部,输入 G 返回文件底部。
11、grep 的用法
grep -A n #显示匹配的后n行 (after)
grep -B n #显示匹配的前n行 (before)
grep -C n #显示匹配的前后n行 (context)
grep -i str # 忽略大小写
12、ll或ls显示说明
ll -ht #h会按照标准格式自动转换大小即:456M,1.2G等,t 表示显示内容按照时间倒序排列
应用案例:
清空8月份的日志文件:
rm -rf `ll -ht | awk '/8月/{print 6,6,NF}' | awk '{print $NF}'
说明:awk ‘/pattern/action’–> awk ‘/8月/{print 6,6,NF}’,只显示第六行与最后一行的内容且只保留8月的列表内容显示。
ls中文件颜色的显示代表的意义为:
- 蓝色 --> 目录
- 绿色 --> 可执行文件
- 红色 --> 压缩文件
- 浅蓝色 --> 链接文件
- 灰色 --> 其他文件
13、lsof命令
lsof solr.log #查看某文件被哪个进程所占用
lsof -i:8080 #查看端口被占用情况
14、创建用户以及查看当前用户
useradd redis #添加用户
passwd redis #给用户设置密码
adduser redis #添加用户,并在/home下创建用户目录
如果是Ubuntu系统则需要使用如下命令:
- useradd openstack -m -s /bin/bash
- userdel -r openstack
查看当前系统存在的用户组和用户
- /etc/group文件包含所有组
- /etc/shadow和/etc/passwd系统存在的所有用户名
15、常用查看文件大小与Linux系统命令
free -m #查看内存使用情况(m为MB,g为GB)
df -lh #查看对应磁盘使用情况
cat /proc/cpuinfo #查看对应CPU使用情况
cpuinfo会有32个大致相同的内容展示(下标是从0开始的),这就说明该服务器为8核操作系统
或者有更牛逼的命令:
- cat /proc/cpuinfo | grep “model name” | head -1 (只显示一行对应的CPU型号以及其他信息)
- cat /proc/cpuinfo | grep “model name” (系统有几个核就会显示几行)
- cat /proc/cpuinfo | grep “model name” | wc -l (统计出一共有多少核)
查看对应服务器版本当前操作系统发行版信息:
cat /etc/issue 或 cat /etc/redhat-release
查看更为底层的版本信息:cat /proc/version (例如:CentOS实际最根源为RetHat,此命令将会显示所采用RetHat的版本)
查看文件目录相关
du -h node #查看某个文件夹当前所占用的空间
du -sh * #如果想查看当前目录下的所有文件各个大小
16、查看内存情况
jstat -gc pid # 可以看到对应各个内存大小、使用状况以及GC处理情况
jmap -heap [pid] # 查看内存分布
jstat -gcutil [pid] 1000 # 每隔1s输出java进程的gc情况
17、修改文件夹及其里面的内容的权限
chown -R solr:solr /home/solr/lib
意思是将 /home/solr/lib 文件夹及其里面内容的用户所属权限修改为solr用户所属权限
18、查看某个端口链接状态的连接数
netstat -nlap | grep -i est | grep -i 6379 | awk '{print $4}'
netstat -nlap | grep -i est | grep -i 1121 | wc -l
平时使用总结,使用此命令如果实在记不住后面参数有哪些,那么直接记住为:-nlap 即可,大部分情况都可以满足我们的需求
netstat常见参数如下:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
grep -i # i表示忽略大小写
awk '{print $4}' # 表示只打印第4列
grep -i est # est表示:ESTABLISHED,即只显示ESTABLISHED即连接状态的端口
grep命令最后的那个显示出来的结果以它进行标红,即最后一个grep为:grep -i 6379, 那么打印出来的结果其中的6379标红,结果如下如所示:
19、同步服务器的时间
ntpdate pool.ntp.org
将这个命令启用为定时脚本执行,具体如下所示:
1 */2 * * * ntpdate pool.ntp.org
20、不允许ssh登录如何配置
修改vim /etc/sysconfig/sshd_config文件,增加一行:AllowUsers solr,具体如下所示:
使其生效运行如下命令:
service sshd reload
常用系统级配置总结:
- 限制登录:/etc/ssh/sshd_config 修改后需重启:service sshd restart
- 用户配置:/etc/passwd
- sudo权限:/etc/sudoers
21、怎么看linux的防火墙是否阻止80端口**
iptables -vnL | grep ":80 "
返回有内容说明开通,没返回内容,则说明阻止
22、查看文件编码以及修改文件编码
22.1 直接查看文件编码
file -i 文件
22.2 在 vim 中修改此文件编码格式
:set fileencoding=utf-8
22.3 修改 vim 的统一编码格式
vim ~/.vimrc
# 增加一句话
set encoding=utf-8 fileencoding=utf-8
23、软连接
23.1 创建一个软链接
ln -s /data/elastic/plugin/ik/custom myES
以上命令中的 /data/elastic/plugin/ik/custom 就是源文件,myES 是链接文件名, 其作用是当进入 myES 目录,实际上是链接进入了 /data/elastic/plugin/ik/custom 目录
23.2 删除软链接:
rm -rf myES
注意不是 rm -rf myES/ (此命令会将原始目录也一并删除,会造成很严重的后果,切记!!!)
24、定位 IO 拼接的常用方法
从网上找到了一篇很有用的使用方法,我通过这种方式也在实际工作中找到了有关 IO 的问题,可以参考如下链接:
定位IO瓶颈的一些方法(iotop工具具体查看IO负载主要是落在哪个进程上)