vi简介

vi:Visual Interface,是一种功能强大的文本编辑器,工作在字符模式下,它可执行输出、输出、查找、替换、块等众多文本操作,不需要图形界面,因此执行起来效率会非常高,主要用来编辑纯文本文件,常见的编码有,ASCII,Unicode等等

文本编辑器的种类:

行编辑器:逐行来对文本进行处理的工具,如sed

全屏编辑器:占据整个屏幕进行编辑,如nano,vi

vim工作模式

输入模式:在文本文件当中输入内容

命令模式:可执行一些编辑命令

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

vim的使用

打开文件

vim [OPTIONS] FILE…

+#:打开文件光标处在第#行

+:打开文件光标处在最后一行

+/pattern:打开文件光标处在第一次被pattern所匹配到的行

-b:二进制方式打开文件

-d:比较两个文件的不同之处

-m:制度方式打开文件

模式转换

默认为命令模式

命令模式 –> 输入模式

-i:在当前光标处输入

-a:在当前光标后方输入

-o:在当前光标下方新建一行转为输入

-I:在当前光标所在行的行首输入

-A:在当前光标所在行的行尾输入

-O:在当前光标上方新建一行转为输入

锁定和解锁:

ctrl+s:锁定

ctrl+q:解锁

输入模式 –> 命令模式

编辑模式 –> 末行模式

:

末行模式 –> 编辑模式

Esc、Esc

注意:输入模式需要先转为命令模式然后再转为末行模式

关闭保存文件:

命令模式

ZZ:保存并退出

ZQ:不保存退出

末行模式:

w:保存文本不退出

q:不保存退出

wq:保存并退出

wq!:强制保存并退出

x:保存并退出

w /PATH/TO/SOMEFILE:将文件内容保存至指定文件中

r /PATH/TO/SOMEFILE:将指定文件的内容读取至当前文件中

! COMMAND:可临时执行shell命令

r! COMMAND:将命令的执行结果添加至当前光标下方

光标跳转:

字符间跳转:

h:左

j:下

k:上

l:右

#COMMAND:跳转#个字符

单词间跳转:

w:跳转至下个单词的词首

e:跳转至下个单词的词尾

b:跳转至上个单词的词首

#COMMAND:跳转#个单词

行尾行首跳转:

^:非空白字符行首

0:绝对行首

$:跳转至行尾

当前页面跳转

H:页首

M:页中

L:页尾

行间跳转:

#G:跳转至第#行

G:跳转至尾行

gg:跳转至首行

句间跳转:以.为分隔

):跳转下一句

(:跳转上一句

段落跳转:以空行为分隔符

}:跳转至下一段落

{:上一段落

翻屏操作:

Ctrl+d:向文件尾部翻半屏

Ctrl+f:向文件尾部翻一屏

Ctrl+u:向文件首部翻半屏

Ctrl+b:向文件首部翻一屏

Enter:逐行向后翻

命令模式操作:

字符编辑:

x:删除光标处的字符

#x:删除光标以右的#个字符

xp:当前光标所在处的字符与光标后的字符做交换

~:转换大小写

替换命令:

r:替换光标所在处的字符

R:开启替换模式

删除命令:

d:删除,可结合光标跳转字符,实现范围删除

d^:删除当前光标所在行以左的所有字符

d$:删除当前光标所在行以右的所有字符

dw:删除当前光标所在处下一个单词

de:删除当前光标所在处的下一个单词

db:删除当前光标所在处的上个单词

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

#dd:删除光标所在行开始向下#行

D:等于d$

复制命令:

y:复制,可结合光标跳转字符

y$:复制光标所在行以右的所有字符

y^:复制光标所在行以左的所有字符

yw:复制光标所在处下个单词

ye:复制光标所在处下个单词

yb:复制光标所在处上个单词

y0:复制光标所在行以左的所有字符,包含空白字符

yy:复制当前光标所在行

#yy:复制光标所在行向下#行

Y:复制光标所在行

粘贴命令:

p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,粘贴至当前光标所在处的后方

P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,粘贴至当前光标所在处的前方

改变命令:

c:编辑模式 –> 输入命令,实现删除操作

c$:删除光标所在处以右的所有字符并转为输入模式

c^:删除光标所在处以左的所有字符并转为输入模式

c0:删除光标所在处以左的所有字符并转为输入模式,包含空白字符

cw:删除光标所在处下一个单词并转为输入模式

ce:删除光标所在处下一个单词并转为输入模式

cb:删除光标所在处上一个单词并转为输入模式

cc:删除光标所在行并转为输入模式

#cc:删除当前光标所在行向下#行并转为输入模式

C:删除当前光标至行尾并转为输入模式

一次性复制粘贴多次内容:

100i zhai Esc:zhai可粘贴100次

可视化模式:

v:按字符选定

V:按行选定

可结合编辑命令:d,c,p,y

Ctrl+v:面向块

撤销操作:

u:撤销前一次操作

#u:撤销前#次操作

U:撤销光标所在行所有此行的更改操作

.:重复前一次操作

n.:重复前n次操作

末行模式:

地址定界

:start_line,end_line

#:指定的单个行

#,#:从左侧的#行开始,到右侧之间的所有行

#,+n:从左侧的#行开始向后加n行

.:当前行

$:最后一行

$-1:表示倒数第二行

%:表示全文,相当于1,$

/pat1/,/pat2/:第一次被pat1所匹配到的行到第一次被pat2所匹配到的行结束,之间的所有内容

#,/pat/:从指定的行开始到被第一次被pat匹配到的行结束,之间的所有内容

/pat/,#:从第一次被pat匹配到的行开始到第#行结束,之间的所有内容

后面可跟编辑命令:

d:删除

y:复制

w /PATH/TO/FILE:将范围内的行保存至指定文件中

r /PATH/TO/FILE:将指定文件的内容插入指定的所有行处

查找:

/PATTERN:从当前光标所在处向文件尾部查找

?PATTERN:从当前光标所在处向文件首部查找

n:光标跳转至下一个被查找到的内容

N:与n相反

vim寄存器:

有26个命名寄存器和1个无命名寄存器,存放至不同剪切板中

a,b,…,z用"寄存器表示,存放在数字和命令之间

如:3"ayy表示复制3行达到a寄存器中

"ap:表示将a寄存器中的内容粘贴

编辑二进制文件:

vim -b BINFILE

扩展命令模式下,利用xxd命令转换为可读的十六进制

:%!xxd

编辑二进制文件

扩展命令模式下,利用xxd命令转换回二进制

:%!xxd –r

多文件模式:

vim FILE1 FILE2 FILE3 …

:next 下一个文件

:prev 上一个文件

:last 最后一个文件

:first 第一个文件

:wall 保存所有

:qall 不保存退出所有

:wqall 保存所有并退出

使用多窗口:

多文件分割

vim -o|O FILE1 FILE2 FILE3 …

-o:水平分割

-O:垂直分割

在窗口间切换:Ctrl+w,左右箭头

单个文件:

Ctrl+w,s:水平分割

Ctrl+w,v:垂直分割

Ctrl+w,q:取消相邻窗口

Ctrl+w,o:取消全部窗口

:qall 退出所有

定义vim工作特性:

配置文件:永久有效

全局:/etc/vimrc

用户:~/.vimrc

扩展模式:当前vim进程有效

(1)行号

显示行号:set number可简写为set nu

取消行号:set nonumber可简写为set nonu

(2)括号成对匹配

匹配:set showmatch可简写为set sm

取消匹配:set noshowmatch可简写为set nosm

(3)自动缩进

缩进:set ai

取消:set noai

(4)高亮搜索

启用:set hlsearch

禁用:set nohlsearch

(5)语法高亮

启用:syntax on

禁用:syntax off

(6)忽略字符大小写

启用:set ic

禁用:set noic

(7)文件格式

启用:fileformat=unix

禁用:fileformat=dos

vim内置帮助

:help

vimtutor

练习及作业:

1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

47 HOSTNAME=`/bin/hostname 2>/dev/null`

48 HISTSIZE=1000

49 if [ "$HISTCONTROL" = "ignorespace" ] ; then

50 export HISTCONTROL=ignoreboth

51 else

52 export HISTCONTROL=ignoredups

53 fi

54

55 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

56

57 # By default, we want umask to get set. This sets it for login shell

58 # Current threshold for system reserved uid/gids is 200

59 # You could check uidgid reservation validity in

60 # /usr/share/doc/setup-*/uidgid file

61 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

62 umask 002

63 else

64 umask 022

65 fi

66

67 for i in /etc/profile.d/*.sh ; do

68 if [ -r "$i" ]; then

69 if [ "${-#*i}" != "$-" ]; then

70 . "$i"

71 else

72 . "$i" >/dev/null 2>&1

73 fi

74 fi

75 done

76

77 unset i

78 unset -f pathmunge

:%s@^[[:space:]]\+@@

2.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号

949 #       [ -z "$key" ] && plymouth --hide-splash

950 #       /sbin/cryptsetup $params ${key:+-d $key} create "$dst" "$src" /dev/null && success || failure

951 #       rc=$?

952 #       [ -z "$key" ] && plymouth --show-splash

953 #   fi

954 #   if [ $rc -ne 0 ]; then

955 #       ret=1

956 #       continue

957 #   fi

958 #   if [ -b "/dev/mapper/$dst" ]; then

959 #       if [ "$makeswap" = "yes" ]; then

960 #       mkswap "/dev/mapper/$dst" 2>/dev/null >/dev/null

961 #       fi

962 #       if [ "$mke2fs" = "yes" ]; then

963 #       if mke2fs "/dev/mapper/$dst" 2>/dev/null >/dev/null \

964 #           && mdir=$(mktemp -d /tmp/mountXXXXXX); then

965 #           mount "/dev/mapper/$dst" "$mdir" && chmod 1777 "$mdir"

966 #           umount "$mdir"

967 #           rmdir "$mdir"

968 #       fi

969 #       fi

970 #   fi

971 #    done

972 #    return $ret

973 }

974

975 # A sed expression to filter out the files that is_ignored_file recognizes

976 __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'

977

978 #if we have privileges lets log to kmsg, otherwise to stderr

979 if strstr "$(cat /proc/cmdline)" "rc.debug"; then

980 #        [ -w /dev/kmsg ] && exec 30>/dev/kmsg && BASH_XTRACEFD=30

981 #        set -x

982 fi

:%s@^[[:space:]]\+@#&@

作业题:

1.如何设置tab缩进为4个字符?

在末行模式输入set ts=4即可

2.复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

3.删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号

原创文章,作者:zhai796898,如若转载,请注明出处:http://www.178linux.com/32859

linux vim拷贝if tab,vim文本编辑器相关推荐

  1. 常见的Linux查看检索归档文件及vi文本编辑器操作大全

    常见的Linux查看检索归档文件及vi文本编辑器操作大全 一.Linux目录结构 1.1 树形目录结构 1.2 根目录 1.3 常见的子目录 二.查看及检索文件 2.1 查看文件内容 -- cat命令 ...

  2. 《Linux指令从入门到精通》——4.2 Linux下的简单文字模式文本编辑器

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.2节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. vim删除多行_vim文本编辑器

    vim文本编辑器是我们使用最多的编辑工具,它类似于我们windows系统的记事本一样,有着强大的文本编辑能力,是Linux系统不可缺少的工具,也是我们初学Linux时必须要掌握的命令之一. 在学习vi ...

  4. vim复制单个字符_vim文本编辑器——删除、复制、剪切、更改某一个字符、替换、撤销、关键字搜索...

    1.删除: (1)删除光标所在处的字符: 如上图所示:点击一次x键只能删除一个字符. (2)删除光标所在处后的n个字符(nx): 删除前: 输入6x: (3)删除光标所在的行(dd): 删除前: 输入 ...

  5. linux操作系统 第03章 vi文本编辑器

    第3章    vi文本编辑器 3.1  vi文本编辑器概述 与Unix相同,Linux本质上是一个文本驱动(text-driven)的操作系统.文本文件就是全部由ASCII码字符及某种语言的编码字符构 ...

  6. linux用文本器打文件命令行,Linux 命令行下的最佳文本编辑器

    文本编辑软件在任何操作系统上都是必备的软件.我们在 Linux 上不缺乏非常现代化的编辑软件,但是它们都是基于 GUI(图形界面)的编辑软件. 正如你所了解的,Linux 真正的魅力在于命令行.当你正 ...

  7. mac与linux文本转换_适用于Windows,Linux和Mac的最佳免费文本编辑器

    mac与linux文本转换 We all use text editors to take notes, save web addresses, write code, as well as othe ...

  8. Windows和Manjaro Linux配置Kate作为Python等文本编辑器

    文章目录 Kate优缺点 kate相关网站 Windows配置效果 Windows下载与配置 下载 配置 运行Python脚本 运行bat文件(类似Python的配置),关键之处: 编译运行C++单文 ...

  9. linux系统kate,Manjaro Linux 19.0 系统正式发布 对文本编辑器Kate进行补充

    Manjaro Linux 19.0发布了,这是一个稳定版本,代号"Kyria". Xfce版本仍然是主打,此版本Xfce更新到4.14,并且主要致力于在桌面和窗口管理器上完善用户 ...

最新文章

  1. MRCTF2020]你传你码呢
  2. C语言实现-双链表练习
  3. producer send源码_RocketMq系列之Producer顺序消息发送源码分析(四)
  4. BT5 设置Ubuntu主题和字体
  5. sqlserver慕课_SqlServer 操作 JSON
  6. php中的method是什么意思,HTML中的form标签的method属性怎么用?这里有method属性的用法介绍...
  7. Microsoft Office Interactive Developer Map
  8. 黑莓 7290 快捷键
  9. bootstrap,layui,elementui vantui的区别
  10. Microsoft Excel 教程:如何在 Excel 中创建自定义数字格式?
  11. Java用HttpClient爬大学英语四六级考试成绩查询接口
  12. 学生管理数据库,及相关查询
  13. android手机截图,安卓手机怎么截屏,安卓手机怎么截屏幕图OPPO
  14. vue工程,高德地图信息窗体模块化插入,及信息窗口点击事件
  15. 平凉锅盔西北美食的文化的传承之一
  16. [教程] KGFMapSystem - 快速创建游戏中的迷你地图
  17. Shell脚本之免交互
  18. Windows服务器时间不断修改(时间不同步已解决)
  19. Airpods连接到windows10没有声音(其他办法都试过最后这样才行)
  20. linux 服务器下查看防火墙

热门文章

  1. 为什么我对中国充满信心
  2. 销售技巧之绕过前台的31法
  3. 单考单招计算机试卷及答案,高职单考单招计算机模拟试卷一模板.doc
  4. 我的Android前生今世之缘-学习经验-安卓入门教程(六)
  5. 通过Opencv打开指定摄像头的方法
  6. 【FAQ】【HarmonyOS】鸿蒙java开发关于蓝牙通信api的传输数据大小设置
  7. 股价被爆炒市值依旧不高,宝盛集团和同行们还要迈过两座大山
  8. 芝诺数解|「十」渝味之城,愉味无穷——重庆十一旅游数据分析报告
  9. 【漫漫转码路】Python Day 15
  10. pop3 imap 地址