且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Linux文本处理---文本编译器vim

更新时间:2022-09-16 21:17:55

  vim:(visual interface improved),是一款全屏的纯文本ASSCII的编辑器,是 vi 的增强版,相比较 vi 来说,vim支持语法高亮等特点。

    vim是一种模式化的编辑器,常见的模式有编辑模式(命令模式),输入模式,末行模式,可视化模式,多文件模式,多窗口模式等。

    Usage: vim [option]... [FILE]...

    vim 选项+

    vim + file 打开文件时光标处在最后一行的行首

    vim +3 file  打开文件时光标处在第三行的行首


一、各个模式的介绍

    编辑模式(命令模式):这个模式下键盘操作通常被理解为编辑命令

    输入模式:此模式下用户可以输入文本内容

    末行模式:vim内置命令行接口,执行vim内置变量

    可视化模式:此模式下用户可以高亮选择文本的内容

    多文件模式:此模式下用户一次可以打开多个文件

    多窗口模式:此模式下在全屏下可显示多个窗口来编辑文件

    

二、各个模式之间的切换

模式切换类型 切换方法
编辑模式 -> 输入模式 i,a 在光标所在处的前方,后方转换为输入模式
I,A 在光标所在处的行首,行尾转换为输入模式
o,O 在光标所在行的上一行,下一行转换为输入模式
输入模式 -> 编辑模式 ESC
编辑模式 -> 末行模式 :
末行模式-->编辑模式 ESC


三、编辑模式(命令模式)下的文本操作

操作分类 具体方法及意义
光标移动 字符间移动 j,k j:向下移动光标      k:向下移动光标
h,l h:向左移动光标      l:向右移动光标
#{h|j|k|l} 3h:向左跳跃光标3个字符   4j:向下跳跃光标4行
单词间移动 w w:光标移动到下一个单词词尾
e,b

e:光标跳跃到当前或下一个单词词尾

b:光标跳跃到当前或上一个单词词首

#{w|e|b}

3w:光标跳跃到下3个单词的词尾

4b:光标跳跃到上3或4(光标恰好在词首)个单词的词首

行内移动 0,$

0:光标跳跃到绝对行首

$:光标跳跃到绝对行尾

^ ^:光标跳跃到行首第一个非空白字符开头处

Ctrl+f

Ctrl+b

Ctrl+u

Ctrl+d

向文件尾部翻一屏

向文件首部翻一屏

向文件尾部翻半屏

向文件首部翻半屏

行间移动 #G 5G:将光标跳跃到第5行行首第一个非空白字符开头处
G,gg

G:将光标跳跃到行尾第一个非空白字符开头处

gg:将光标跳跃到行首第一个非空白字符开头处

编辑命令 x类 x,#x

x:删除光标所在处的字符

4x:删除光标所在处以及之后的共4个字符

d类 dd D #dd d#d

dd:删除光标所在处的一整行

D:同 d$ 一样,删除光标所在处行向后的所有内容

d结合w,e,b,^,$,0,G,gg一起使用

dgg:删除光标处以及光标处到行首的所有内容

db:删除光标处到光标处前单词的单词首部的内容

y类 yy,Y,y#y,#yy

yy Y:复制光标所在处的整行

y3y 3yy:复制光标所在处的及以下共3行

结合w,e,b,^,$,0,G,gg一起使用

yw:复制光标所在处向后一个单词首部的的字符

y$:复制光标所在处向后这行所有的的字符

yG:复制光标所在处向后文件尾部行所有的的字符

p类 p P

行级别:

    p: 粘贴于当前行下方

    P:  粘贴于当前行上方      

小于行级别:

    p: 粘贴于当前光标所在处的后方

    P:粘贴于当前光标所在处的前方

c类 cc,#c cc C:删除光标所在处的一整行,并进入输入模式
结合w,e,b,^,$,0,G,gg一起使用

cgg:删除光标所在处到文件行首的所有内容,并进入输入模式

c0:删除光标所在处到行首的所有内容,并进入输入模式

撤消编辑
u,#u

u:撤销上一次操作

3u:撤销前3次操作

ctrl+r 撤销上一次撤销操作
重复
. 重复上一条命令


四、末行模式

    末行模式是执行一些vim的内置变量,以及问搜索、替换、删除等操作。在这里要引入内容定界。

    内容定界的格式是:startpos,endpos。说明在末行模式下操作的范围。   


内容定界符 具体意义
#

#:第#行

3:表示第三行

. .:表示当前行
$ $:表示最后一行
% %:表示全文 等价于 1,$
$-#    .+#

支持像$-2, .+2等内容定界 .+1,$-1 表示当前行的下一行至倒数第二行

    下面介绍末行模式的的操作方法以及意义,这些操作都是结合内容定界符一起使用的。


种类 具体意义
c d y 

:%y 复制整个文本内容

:.,30d 删除当前行道30行的内容

100c:删除100的内容,并变为输入模式,在100行的行首

w r 

w /path/to/somefile: 将选定范围内的内容保存至某文件

r /path/from/somefile: 将指定的文件中的内容读取到指定位置中

`例如:

:1,100w /tmp/test.txt 将1,100的内容保存到/tmp/test.txt文件中

:54r /etc/passwd 将/etc/passwd文件内容加入到54行的下面

s///gi

s/要查找内容的模式/要替换的字符串或者引用/gi

其中g: global, 全行替换  i: 不区分字符大小写

:%s@^[[:space:]]\{1,\}@@g 删除整个文本的空白行

/ ?

/ ? 是命令行搜索,支持正则表达式

/pattern 向下搜索

?pattern 向上搜索

N n 使用n,N上下查看

命令

:set nu    显示行号

:set nonu   取消显示行号

:set ai   自动缩进

:set noai  取消自动缩进

:set ic   设置忽略大小写

:set noic 取消设置忽略大小写

:set sm  设置括号匹配

:set nosm 取消设置括号匹配

:syntax on|off 设置语法高亮

:set hlsearch 设置搜索高亮

:set nohlsearch 取消设置搜索高亮


五、可视化模式,多文件模式,多窗口模式

1)可视化

    v:指的是国标所走过的字符

    V:指的是国标所走过的行

    例如:在某些连续的行首加入#号。编辑模式下:V-->选中行--->I--->#---->ESC就可完成此功能。

2)多文件模式

    vi file1 file2 file3... 在末行模式下可以使用next,previous,last,first关键字打开下一个,上一个,最后一个,第一个文件。使用wqall可以保存全部文件。

3)多窗口模式

    多文件模式:vim -o:水平分割窗口

                    -O:垂直分割窗口

    单文件模式:

        Ctrl+w, s: 水平分割

        Ctrl+w, v: 垂直分割

六、配置文件

    /etc/vimrc:全局的

    ~/.vimrc:用户模式下的配置文件



补充:

1.设置制表符宽度
:set tabstop=4
:set softtabstop=4
2.设置缩进的空格数
:set shiftwidth=4
3.每行的缩进值与上一行相等
:set autoindent
4.使用 C/C++ 语言的自动缩进方式
:
set cindent
5.显示行号
:set nu
6.将搜索内容反白
:set hlsearch
7.可以删除任意值
:set backspace=2


本文侧重介绍的是vim文本编辑器的使用。










本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1435451,如需转载请自行联系原作者