linux 之 vim 命令使用(详细总结)
在vim的普通模式下,可以使用“ggdG”命令删除全部内容。其他相关命令包括:
- 全选(高亮显示):按esc后,然后ggvG或者ggVG
- 全部复制:按esc后,然后ggyG
- 全部删除:按esc后,然后dG
- 单行复制:按esc后,然后yy
- 单行删除:按esc后,然后dd
- 粘贴:按esc后,然后p
- 在vim编辑器中,可以使用“:%d”命令删除全部内容
1、vim 编辑器简介
vim 是一个全屏幕纯文本编辑器,是 vi 编辑器的增强版。你可以利用别名让输入 vi 命令的时候,实际上执行 vim 编辑器,vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的工具,vim编辑器成为Linux运维不可或的工具之一。
[root@hepingfly ~]# alias vi='vim'
但是这样定义别名是临时生效,如果需要永久生效,请放置环境变量配置文件 ~/.bashrc 中
2、vim 基本使用
1)、vim 的工作模式
命令模式:是主要输入快捷键的模式。命名模式要想进入输入模式,可以使用 a i o 等快捷键来进入。
插入命令:
输入模式:主要用于文本编辑,和记事本类似,输入数据就好
末行模式(编辑模式):
- :w 保存不退出
- :w 新文件名 把文件另存为新文件
- :q 不保存退出
- :wq 保存退出
- :! 强制
- :q! 强制不保存退出,用于修改文件之后,不保存数据退出
- :wq! 强制保存退出,当文件的所有者或 root 用户,对文件没有写权限的时候,强制写入数据使用
3、命令模式操作
1、移动光标
1)、上下左右移动光标
上、下、左、右方向键 移动光标
h(左) j(下) k(上) l(右) 移动光标
2)、光标移动到文件头或文件尾
gg 移动到文件头
G 移动到文件尾(shift + g)
3)、光标移动到行首或行尾
^ 移动到行首
$ 移动到行尾
4)、移动到指定行
:n 移动到第几行(这里的 n 是数字)
2、删除或剪切
1)、删除字母
x 删除单个字母
nx 删除 n 个字母(n 是数字,如果打算从光标位置连续删除 10 个字母,可以使用 10x 即可)
2)、删除整行或剪切
dd 删除单行
ndd 删除多行
:n1,n2d 删除指定范围的行
删除行或多行,是比较常用的删除方法。这里的 dd 快捷键既是删除也是剪切。删除内容放入了剪切板,如果不粘贴就是删除,粘贴就是剪切。粘贴方法:
p 粘贴到光标下面一行
P 粘贴到光标上面一行
3)、从光标所在行删除到文件尾
dG 从光标所在行删除到文件尾(d 是删除行,G 是文件尾,连起来就是从光标行删除到文件尾)
3、复制
vi/vim复制粘贴命令
yy(复制整行)
nyy(nyy复制多行)
Linux/Unix/BSD
1. 选定文本块。使用v进入可视模式,移动光标键选定内容。
2.复制的命令是y,即yank(提起) ,常用的命令如下:
y 在使用v模式选定了某一块的时候,复制选定块到缓冲区用;
yy 复制整行(nyy或者yny ,复制n行,n为数字);
y^ 复制当前到行头的内容;
y$ 复制当前到行尾的内容;
yw 复制一个word (nyw或者ynw,复制n个word,n为数字);
yG 复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)
3. 剪切的命令是d,即delete,d与y命令基本类似,所以两个命令用法一样,包括含有数字的用法.
d 剪切选定块到缓冲区;
dd 剪切整行
d^ 剪切至行首
d$ 剪切至行尾
dw 剪切一个word
dG 剪切至档尾
4. 粘贴的命令式p,即put(放下)
p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
P 大写P代表贴至游标前(上)
整行的复制粘贴在游标的上(下)一行,非整行的复制则是粘贴在游标的前(后)
注:
在正则表达式中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。
命令前面加数字表示重复的次数,加字母表示使用的缓冲区名称。使用英文句号"."可以重复上一个命令。
在复制粘贴时,另一组常用的命令是u(撤销操作),U(撤销某一行最近所有修改),Ctrl+R(重做),这些功能主要是vim中的,vi中略有差别
复制之后的粘贴依然可以使用 p 键或 P 键
4、撤销
u 撤销
ctrl + r 反撤销
u 键能一直撤销到文件打开时的状态,ctrl + r 能一直反撤销到最后一次操作状态
5、替换
r 替换光标所在处的字符
R 从光标所在处开始替换字符,按 esc 键结束
4、末行模式操作
1、一些设置操作
设置参数含义:set nu
:set nonu显示与取消行号:syntax on
:syntax off是否依据语法显示相关颜色帮助。默认会显示相关颜色来帮助排错:set hlsearch
:set nohlsearch设置是否将查找的字符串高亮显示。默认是高亮显示:set showmode
:set noshowmode设置是否在左下角显示如“-INSERT-” 之类的状态栏。默认是开启的:set list
:set nolist设置是否显示隐藏字符。(tab 键用 "^I" 表示,回车符用 "$" 键表示)
注:
- 上面设置的参数都只是临时生效,一旦关闭文件再打开,又需要重新输入。如果想要永久生效,需要手动建立 vim 的配置文件 ==“~/vimrc”== ,把你需要的参数写入配置文件就永久生效了。
- Windows 下回车符在 Linux 中是用 “^M$” 显示的,而不是 “$” 。这样会导致 Windows 下编辑的程序脚本(如 shell 脚本),无法在 Linux 中执行。这时可以通过命令 ==「dos2unix」==,把 windows 格式转换为 Linux 格式。同样可以使用 ==「unix2dos」== ,把 Linux 格式转换为 Windows 格式。这两个命令默认没有安装,需要手动安装才能使用。
2、查找
/查找内容 从光标所在行向下查找
?查找内容 从光标所在行向上查找
n 下一个
N 上一个
3、替换
:1,10s/old/new/g 替换 1 到 10 行所有 old 为 new(s 表示替换)
:%s/old/new/g 替换整个文件的 old 为 new(% 是一个变量,在这里代表整篇文档)
在 shell 中 "#" 开头是注释,假如说我想注释文件前 10 行,如果手工一个一个注释会很麻烦,可以使用替换来解决。
:1,10s/^/#/g 注释 1 到 10 行
:1,10s/^#//g 取消 1 到 10 行的注释
5、vim 使用技巧
1、导入其他文件的内容
:r 文件名 把文件内容导入到光标位置
:r /root/aa.txt #末行模式下,输入这个会把 /root/aa.txt 文件的内容加到你光标所在处
2、在 vim 中执行系统命令
:!命令 在 vim 中执行系统命令
这里只是在 vim 中执行系统命令,但并不把系统命令的结果写入到文件中。主要用于在文件编辑中,查看系统信息,如时间。
3、导入命令结果
:r !命令 在 vim 中执行系统命令,并把命令结果导入光标所在行
4、多文件打开
在 vim 中可以同时打开两个文件
[root@hepingfly ~]# vim -o aa.txt abcd 上下分屏打开两个文件(小 o)
[root@hepingfly ~]# vim -O aa.txt abcd 左右分屏打开两个文件(大 O)
如果是上下打开两个文件,可以通过先按 「ctrl + w」再按上下箭头的方式在两个文件之间切换。
如果是左右打开两个文件,可以通过先按 「ctrl + w」再按左右箭头的方式在两个文件之间切换。