title: 04LinuxVim
tags:
- linux
date: 2019-11-08
0x01 vim
vim是一个全屏幕纯文本编辑器,是vi编辑器的增强版,可以使用别名代替vi
# alias vi='vim'
永久生效放入到环境变量~/bashrc
0x011 基本使用
0x0111 vim的三种工作模式
命令模式:
命令 作用 a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标字符前插入 I 在光标所在行行首前插入 o 在光标下插入新行 O 在光标上插入新行 输入模式:
主要用于文本编辑,就是记事本怎么输入就怎么来
编辑模式:
只要输入一个
:
即可进入编辑模式:w #保存不退出 :w 新文件名 #把文件另存为 :q #不保存退出 :wq #保存退出 :q! #强制不保存退出,用于修改文件之后,不保存数据退出 :wq! #强制保存退出,当文件所有者或者root对用户没有写权限的时候,强制写入数据使用
0x0112 命令模式操作
0x01121 移动光标
移动光标
左,下,上,右 H,J,K,L
把光标移动到文件头或尾
gg 移动到文件头 G 移动到文件尾巴(shift+g 也可以)
移动到行首或者行尾
^ 移动到行首 $ 移动到行尾
移动到指定行数
:n 移动到第n行
0x01122 删除或剪切
删除字母(少用)
x 删除单个字母 nx 删除n个字母 如从光标 连续删除10个字母则 10x即可
删除整行或剪切
dd 删除单行 ndd 删除多行 :n1,n2d 删除n1到n2的行
dd其实是剪切的内容,如果不粘贴则是删除。
p 粘贴到光标后 P(大) 粘贴到光标前
从光标所在行一直删除到文件尾
dG 从光标所在行删除到文件尾 d是删除行,G是文件尾。
0x01123 撤销
u 撤销 相当于windows的 "ctrl+z"
Ctrl+r 反撤销 相当于windows的 "ctrl+y"
0x01124 复制
yy 复制单行
nyy 复制多行
#粘贴还是P和p
0x01125 替换(少用输入模式比命令行替换方便多)
r 替换光标所在处的字符
R 从光标所在处开始替换字符,按ESC结束
0x0113 Vim配置文件
下面的指令多数只在Vim中才能生效
设置参数 | 含义 |
---|---|
:set nu/nonu | 显示与取消行号 默认不显示 |
:syntax on/off | 是否根据语法显示相关的颜色帮助。在Vim中修改相关的配置文件或Shell脚本时默认人会显示相应的颜色,用来帮助排错。如果颜色干扰可以取消 |
:set hlsearch/nohlsearch | 是否将查找的字符串显示高亮,默认高亮 |
:set showmode/noshowmode | 设置是否在做小脚显示如”–INSTER–”之类的状态栏,默认是开启 |
:set ruler/noruler | 设置是否显示右下角的状态栏,默认是开启 |
:set list/nolist | 设置是否显示隐藏字符(Tab用”^I”表示,回车用”$”表示,)默认是不显示 |
上面的指令在命令模式只是临时生效
如果需要长期设置可以~/.vimrc
中写入,默认不会有这个文件,可以新建即可
补充
Windows回车在linux下是用”^M$”显示这就导致Linux下写的脚本无法在Llinux下运行,这是可以通过命令dos2unix
把Windows格式转为Linux格式,放过来就是unix2dos
把Linux格式转Windows格式。者两个命令都没有安装需要手动安装
0x0114 编辑模式
0x01141 查找
/查找内容 从光标所在行向下查找
?查找内容 从光标所在行向上查找
n 下一个
N 上一个
0x01142 替换
:1,10s/old/new/g #替换1-10行的所有old为new 不加g则只替换一次
:%s/lod/new/g #替换整个文件中的old为New
有一个常用的 把n行将注释
:1,10s/^/#/g 注释1-10行
:1,10s/^#//g 删除注释
C++和go都是//注释
:1,10s/^/\/\//g 1-10行首加入//
:1,10s/^\/\///g 取消1-10行的//
0x012 使用技巧
0x0121 在Vim中导入其他文件和系统命令结果
:r 文件名 把文件内容导入光标位置
:!命令 #这样会暂时退出Vim直接显示结果
:r !命令 #可以把运行结果导入到光标位置
0x0122 设定快捷键
:map 快捷键 快捷键命令 #自定义快捷键
例如
:map ^P I#<ESC> #按住"Ctrl+P"时,在行首加入注释
:map ^B ^x #按住"Ctrl+b"时,删除行首第一个字母(删除注释)
注意:^B并不是打出来的而是 Ctrl+B出来的
永久生效还是要写入Vim配置文件
0x0123 字符串替换
:ab 原字符 替换字符 #注意原子符最好不要太短。
例如
:ab mail xxx@qq.com
0x0124 多文件同时打开
#vim -o abc bdc 同时打开文件
-o 上下分屏
-O 左右分屏