Linux-vim使用操作大全

1. vim简介

Vi是Vim的早期版本,现在我们使用的Vim(Viimproved)是Vi的增强版。
vim是文本编辑工具软件,一个基于图形化编辑工具,使用简单且功能强大。增加了一些正则表达式的查找、多窗口的编辑等功能,使得Vim对于程序开发来说更加方便
ps: vi 内置在Linux系统中,是vim的简化版编辑器,vim需要进行安装使用

2. vim的三种模式说明

三种模式:命令模式,编辑模式,底行模式

命令模式:

Vim 启动后,默认进入命令模式,在任何模式下,都可以按 Esc 键返回到命令模式,可以多按几次 Esc 键,保证顺利返回到命令模式。
在此模式下,可以使用上、下、左、右键进行光标移动,也可以键入不同的命令完成选择、复制、粘贴、删除等操作。

编辑模式

在编辑模式下可以编辑文本内容。在命令模式下按 i、 a 、o等键可以进入编辑模式,在此模式下可以输入文本,但命令执行后的字符插入位置不同

底行模式

命令模式下按:键进入底行模式。这时光标会移到屏幕底部,在这里可以输入相关指令保存修改或退出 Vim,也可以设置编辑环境、寻找字符串、列出行号等。指令执行后会自动返回命令模式。

3. vim编辑器操作

vim编辑器相当于Windows的notepad++编辑器,相比vi的功能强大,注意点:centos7使用vi实测调用了是vim编辑器

命令模式移动光标方式

# 纵向移动
G			# 快速移动到文本行尾
gg			# 快速移动到文本行首
2gg			# 快速移动第二行
2G			# 快速移动第二行
shitf+ 0	# 快速移动空行

# 横向移动  
$			#快速移动到一行的行尾
0 或 ^		#快速移动到一行的行首

命令模式复制内容方式

dd			# 默认剪切一行内容
2dd			# 从当前光标往下剪切2行内容
yy			# 默认复制一行内容  copy
2yy			# 从当前光标往下复制2行内容
p			# 从当前光标下黏贴一遍内容
2p			# 从当前光标下黏贴2遍内容
u			# 撤销文本的操作
ctrl+r		# 撤回文本的操作
dG			# 表示从光标位置到文本末尾内容删除
r			# 表示替换单个字符

如何命令模式进入编辑模式

i			# 表示当前光标位置前插入,进入编辑模式
a			# 表示当前光标位置后插入,进入编辑模式
o			# 表示当前光标位置另起下一行插入,进入编辑模式
O			# 表示当前光标位置另起上一行插入,进入编辑模式
I			# 表示当前光标位置所在行的行首,进入编辑模式
A			# 表示当前光标位置所在行的行尾,进入编辑模式
C(大写)		        # 表示从光标所在位置到行尾内容剪切,进入编辑模式
cc			# 表示剪切光标所在行,进入编辑模式

末行模式命令操作

:			# 从命令模式进入末行模式
:q			# 未编辑时,退出
:q!			# 强制退出vim
:wq			# w 保存内容

:set nu		        # 显示行号
:set nonu	        # 取消显示行号

/xxx		        # /表示从当前光标下搜索内容		按n 向下继续搜索 
?xxx		        # ?表示从当前光标下搜索内容		按n 向下继续搜索 

/xxxc		        # 搜索内容后加c 表示搜索忽略大小写
:set ic		        # 表示在此次编辑,搜索忽略大小写
:set noic	        # 表示在此次编辑,取消忽略大小写

ps:vim搜索内容高亮显示搜索的内容信息

如何取消vim搜索后的高亮显示?

  1. 搜索文本没有的内容信息

  2. 输入指令 :noh

3.vim特殊用法

快速的移动多行内容

格式是 :1,3move4 表示把第一行到第三行的信息移动到第四行内容另起一行

快速的复制多行内容到某一行

格式是 :1,3cpoy4 表示把第一行到第三行的信息复制单四行内容另起一行

文件信息进行替换内容

vim替换格式是 :%s# 替换的内容 # 替换成的内容 #g

如:%s#oldboy#oldgirl#g # 表示把文件中的oldboy全部替换修改为oldgirl
替换参数说明

% 表示文件的全部信息

s 表示substitute 替换 %s 表示全部信息进行替换

### 表示替换内容和修改内容的分隔符,可以是任意三个相同的符号。比如 %s/oldboy/oldgirl/g

g 表示 global(全局的),把整行符合替换条件的内容进行替换

具体操作

[root @controller /old ]# vi oldboy.txt 		# 文件原有的内容
oldboy
oldgirl
olddog
[root @controller /old ]# vi oldboy.txt 
aldbay
aldgirl
alddag
~                                                                                                                    
~                                                                                                                                                                                                                                  
:%s#o#a#g			表示把文件全部字母o替换为a	g表示把整行字母o替换为字母a

[root @controller /old ]# vi oldboy.txt 
oldbay
oldgirl
olddag
~                                                                                                                    
~                                                                                                                                                                                                                                
:%s#a#o#			表示把文件每行首个字母a替换为字母o

批量的编辑修改多行内容信息

如何快速的四行内容进行注释(在每行开始添加符号 #)

第一步:进入批量编辑的视图模式

按键盘的 Ctrl + v 进入批量模式,在底行出现标志信息 -- VISUAL BLOCK -- (可视块)

第二步:选择需要批量编辑的行:按方向上下进行选择编辑的行

第三步:进行编写内容

第四步:退出批量编辑模式,自动补全其他选择的行:按键盘的 esc 退出批量编辑模式

如何批量删除文件多行信息

第一步:进入批量编辑的视图模式

按键盘的 Ctrl + v 进入批量模式,在底行出现标志信息 -- VISUAL BLOCK -- (可视块)

第二步:选择需要批量编辑的行

按方向上下进行选择行,按方向左右选择删除信息

第三步:直接删除信息:按键盘的 字母d 或字母x 直接删除

问题:如何在test.txt每行前添加12345?

方法一:利用视图模式批量编辑文件

方法二:vim的替换信息方法

方法三:三剑客命令sed???

[root @compute /old ]# sed 's#o#12345o#' test.txt

12345oldboy

12345oldgirl

12345olddog

4.vim查看目录数据

[root @compute / ]# vim old

" ============================================================================

" Netrw Directory Listing (netrw v149)

" /old

" Sorted by name

" Sort sequence: [/]$,<core%(.d+)=>,.h$,.c$,.cpp$,~=*$,*,.o$,.obj$,.info$,.swp$,.bak$,~$

" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:exec

" ============================================================================

../

./

oldboy/

oldboy.txt*

ago.txt

services

xuanxuan.txt

.swp

~

"old" is a directory

显示信息说明: :help -:go up dir D:delete R:rename s:sort-by x:exec
F1 查看帮助

- 返回上级目录

回车 选择子目录,回车可以进入子目录。选择文件,直接编辑。

D 键盘上下选择删除文件

R 文件重命名

s 表示文件名称进行排序。默认按照文件名称排序,按一次:按照文件修改时间排序。按二次:按照文件size数据大小排序。按三次:默认名称排序

x 不明白???

原文地址:https://www.cnblogs.com/xuanxuan360/p/13370043.html