热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Linux】(vi、vim)gvim的使用学习:

本文主要介绍关于linux,vim,gvim,vi,IC的知识点,对【【Linux】(vi、vim)gvim的使用学习】和【】有兴趣的朋友可以看下由【仰天倀笑】投稿的技术文章,希望该技术和经验能帮

本文主要介绍关于linux,vim,gvim,vi,IC的知识点,对【【Linux】(vi、vim) gvim 的使用学习】和【】有兴趣的朋友可以看下由【仰天倀笑】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的数字IC与芯片相关技术问题。

Title: gvim学习

前言

实习后发现都是用 linux的;用linux很少在IDE里编程而是直接用 vim 进行编程。

由于vim太丑,在初期我都倔强的用gedit;后来同事说,你得学着用vim,这样才显得专业 ( ̄▽ ̄)"…

随着vim快捷键逐渐熟悉,慢慢明白vim的方便之处了~

一般都用 gvim,好看点.

1 介绍

是什么

vim是linux里的文本编辑器,但是比“记事本”(linux里是gedit)多了很多功能,而且支持很多功能、命令、快捷键,用熟了以后会大大提高文本编辑的便捷性。

特点

vim里进行文本查看、编辑是不同的模式:命令行模式(仅查看、输入各种功能命令)、编辑模式.

编辑模式,和gedit是一样的,写文本
命令行模式,可以使用vim提供的各色功能,方便的完成自己想要实现的目的——正则表达式的字符串替换、查找、分屏等。( ̄▽ ̄)"

命令行模式,分成 直接按键盘字母(大写小写功能不同)来使用快捷键功能、输入冒号:加指令来启动指令功能,两种办法,

另外,除去vim下的 命令模式(command-mode)、插入模式(insert-mode),vim还有 正常模式(normal-mode)——啥也没选中的正常情况、可视模式(visual-mode)——选中了一些文本的高亮情况,感觉专门称呼为一个"mode"有点随便哈…

vi、vim、gvim的关系

vi是早期版本,功能有限;

vim是vi的功能丰富、特性增强版;

vim中加入gui以及更多的特性功能,就产生了gvim;

本篇全文都默认是gvim哈!

如何安装 gvim

apt-get install vim-gtk

2 快捷键一栏图 Vim 的快捷键一栏图

网图1

【Linux】(vi、vim) gvim 的使用学习:

网图2

【Linux】(vi、vim) gvim 的使用学习:

3 个人使用习惯 3.1 最基础+最核心

记住加粗的就行了…

进入文本编辑模式

i ,从此行开始编辑;

还有别的按法,如I,此行非空位置开始写;;
o,在下一行换行开始写新的一行;
O,从上一行换行开始写新的一行;
a,从下个字符开始写;
A,从此行末尾开始写;
r,进入replace mode,但只覆盖后面1个字;
R,进入replace mode,一直覆盖后面的字;

退回到命令行状态

Esc.

保存 —— :w

强制保存 :w!
:w filename 另存为;
:file1,file2 w [file3] 文件合并为…
追加文件 :r file

关闭文件 —— :q

强制退出不保存 :q!,也可以用 ZQ
保存后退出 :wq,也可以用 ZZ

撤销是u;重做redo是ctrl+r

复制是y,或者ctrl+c;粘贴是"鼠标中键",或p(但p仅限于此文本内复制内容进行粘贴,“鼠标中键”支持跨文本粘贴);
s 是剪切;

跳转到文本第一行 gg

跳转到文本末尾 G

跳到第几行 :lines

查找 /内容
然后按 n,是下一个;
N,是上一个;
按两下',回到上一次跳转的位置(来回跳);

/str\c表示不区分大小写.

自动补全

向上查找来补全:ctrl+p

向上查找来补全:ctrl+n

3.2 Vim的显示格式设置

每次设置太麻烦了,可以在~/.vimrc 中写,每次打开vim会自动执行;.vimrc中的注释用";在.vimrc中配置vim显示格式的话,就不需要敲冒号:了~

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

要是打全,nu写number也行.

换主题 :colorscheme 款式
我比较喜欢 desert 款式,( ̄▽ ̄)"

没有set哈…

改字体和大小 :set guifOnt=款式\风格\大小
默认字体是 :set guifOnt=Monospace\\10 ,风格就是加粗、斜体什么的.
我个人喜欢 :set guifOnt=Monospace\\13,不然要瞎了…

识别当前语言类型为C语言来高亮 :set syntax=c
但这个没啥用,因为其他语言需要自己网上下好高亮的语法配置文件…

设置缩进的宽度

:set tabstop=4
:set shiftwidth=4
默认是8.

高亮当前行(找光标也方便)

:set cursorline

3.3 阅读文本的小习惯 双击括号的一边,如: { },可以直接跳转到另一边;可以用右键,来选中文本;
选中文本后,即为进入 vim的visual mode,此时 shift + v 可以选中目标的全行;按ctrl + v可以选中目标的全列; 3.4 Vim的重要使用技巧⭐️

vim分屏

在vim内,用 :sp filename实现上下分屏,用:vsp filename实现左右分屏

ctrl+w, r 实现上下分屏的位置互换

ctrl+w,w 实现光标轮流到下一个分屏;

ctrl+w,s 实现在当前文本内进行分屏;

光标的移动,用ctrl+w, ↑ 去上分屏,去其他方向则同理;

关闭此窗口,用ctrl+w, c,c是close;如果是ctrl + q 还有退出vim的作用。

关闭其他窗口,只保留此窗口,用ctrl+w,o,o是only;

统计一个文档中某个字符串出现多少次

:%s/string/&/gn
# string is what I want to search

搜索字符串时,关闭大小写敏感

/内容\c主要是后面这个\c,原来是这个意思…( ̄▽ ̄)"

复制粘贴相关

y是复制;p是粘贴;
yy是复制一行;
dd是删除一行

3.5 Vim 下的正则

前言

vim下的正则和perl内有不同,只能说相近吧,使用时注意…
此网站不错:vim Regular Expressions

基本格式

正则表达式中,/是表达式分界符,也可以用 #? 代替,其内夹着个正则表达式;
末尾加i 表忽略大小写、g是全局匹配m是多行匹配。

重要特点

vim的正则表达式语法和perl等有些许不同,其次有个重要特点,分成了四个mode: magic mode, very magic mode, no magic mode, very nomagic mode;啥意思呢,是这样的:

vim里的正则有个特点,很多“元字符”都是需要“手动转义”后才能具有正则的含义只有最常用的——^表行首、$表行尾、 .表1个任意字符、*表任意数量的前者字符——它们俩是不需要加转义符\,就很麻烦。这就是vim正则表达式的默认正则模式:magic mode. 手动声明,就是在正则表达式前加前缀\m

例子:查找以 “str0"或"str1” 开头的串,正则为 /\m\ (其中 \m可省略…)

那如果你的正则表达式语法熟练,又要用到很多元字符,一个个加转义符号超级烦,可以使用 very magic mode,在正则表达式前加前缀\v

例子:查找以 “str0"或"str1” 开头的串,正则为 /\v

对比一下magic mode,发现区别了吧~( ̄▽ ̄)"

所有元字符除了^$外,都按文本来翻译,就是 nomagic mode,在正则表达式前加前缀\M

只有反斜杠\才表示转义,不然统统当文本处理的正则mode,是是 very nomagic mode,在正则表达式前加前缀\V

详细可以参见此blog:VIM学习笔记 4种Magic模式 —— 知乎 YYQ

通用的正则元字符与转义字符

^	#匹配字符串的“开头”;vim中则表行首;
$	#匹配字符串的“末尾”;vim中则表行尾;
<	#匹配单词首。
>	#匹配单词尾。

\b	#匹配一个单词的边界。
\d 	#匹配任意数字。
\D	#匹配任意非数字字符。
x?	#匹配一个可选的 x 字符 (i.e.匹配 1次或 0次)。
x*	#匹配0次或者多次 x 字符。
x+	#匹配1次或者多次 x 字符。
x{
     n}	#匹配n个 x字符
x{
     n,m}	#匹配 x 字符,至少 n 次,至多 m 次。
(a|b|c)	#要么匹配 a,要么匹配 b,要么匹配 c。
(x)	#一般情况下表示一个记忆组 (remembered group)。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。
.	#匹配任意单个字符,换行符\n不算
\s	#匹配所有空白符,包括换行
\S	#匹配所有非空白符
\w	#匹配 字母|数字|下划线
\d\D 	#表示任意字符,包括换行符
\s\S	#也表示任意字符,包括换行符

# 以下是几个转义符
\n	#1个换行符
\r	#1个回车符
\t	#1个制表符
\f	#1个换页符s

# 以下vim不支持,perl才支持
# 以下是判断逻辑,需要和 () 联用,
# 来截取特定情境下的串,如(?!a|b),不要字符a或字符b.
# e.g. 我需要截取 aaabbbccc 中的bbb,则正则表达式为:(?<=aaa).*(?=ccc)
?!pattern	#需要后面 不跟pattern的
?!<pattern	#需要前面 不跟pattern的
?=pattern	#需要后面 跟pattern的
?<=pattern	#需要前面 跟着pattern的
?i		#后面字符忽略大小写
?-i		#前面字符忽略大小写

vim下特有的正则元字符与转义字符

\a		# 字母
\A		# 除了字母都行
\i		# 小写字母
\I		# 除了小写字母都行
\u		# 大写字母
\U		# 除了大写字母都行
\x		# 十六进制字符
\X		# 除了十六进制字符都行

\c		# 大小写不明干
\C		# 大小写敏感

方括号[] 、圆括号()、花(尖)括号{} 的区别

方括号表示一个字符的可能:[0-3],这1个字符可以是0~3之间的任意一个数字;[(a)],表这1个字符可以是 ‘(’ 或 ‘a’ 或 ‘)’.

圆括号可表一个连续串的可能:(abc|efg|kkk),要么匹配到连续串abc、要么是efg、要么是kkk;(abc)?,表示要么匹配到完整的连续串abc,要么算了;

花(尖)括号 表示重复次数:{n,m}

贪婪匹配懒惰匹配

同一个正则表达式,基于贪心(匹配越长越好)、懒惰(越短越好)效果不同,实施时的区分方式为:

懒惰:在元字符后?

贪婪:不加?

3.6 Vim下的文本替换

替换的基本使用

:s,s是subtitute的意思,有 “只在此行”替换、“全文替换” 两种用法。

:s 						#只在此行替换
:s/str1/str2/			#在此行把str1换成str2; (只替换首个)
:s/str1/str2/g			#在此行把str1换成str2; (替换所有)
:i,js/str1/str2/g		#i到j行内,把str1换成str2; (替换所有)

:%s						#替换全文
:%s/str1/str2/g			#全文替换,把str1统统换成str2; 
3.9999 好的例子(个人用到的)

把长空格都变成换行

\v {
     1,}/\r/g	#vim中的very magic mode,把长空格都变成换行.(贪婪)

自定义格式化文本高级替换

从第i行到文本末尾,把 “str” 文本内容替换为 “…str…”,一行有多个就全换.

:i,$s/str/\=printf("...%s...", submatch(0))/g	

本文《【Linux】(vi、vim) gvim 的使用学习》版权归仰天倀笑所有,引用【Linux】(vi、vim) gvim 的使用学习需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • d3dx9_26.dll极品飞车9修复工具下载及修复教程
    本文介绍了d3dx9_26.dll文件的修复工具下载和修复教程,解释了该dll文件的作用和安装方法,同时提供了其他dll文件下载安装的方法。文章涵盖了3d、windows、p2p、dll、visual studio等知识点,并由未来可期1212投稿。希望该技术和经验能帮到你解决dll文件相关技术问题。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 分享2款网站程序源码/主题等后门检测工具
    本文介绍了2款用于检测网站程序源码和主题中是否存在后门的工具,分别是WebShellkiller和D盾_Web查杀。WebShellkiller是一款支持webshell和暗链扫描的工具,采用多重检测引擎和智能检测模型,能够更精准地检测出已知和未知的后门文件。D盾_Web查杀则使用自行研发的代码分析引擎,能够分析更为隐藏的WebShell后门行为。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文讨论了在PHP中将空格转换为问号的问题,并提供了解决方案。文章指出,空格不是标准的空格,而是特殊的0xC2 0xA0字符。作者尝试使用mb_convert_encoding函数将utf8字符串转换为gbk编码,但未成功。文章建议检查编辑器是否对空格进行了特殊处理,并提供了使用base64_encode函数打印结果的方法。最后,给出了完整的代码示例。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
author-avatar
MwMw在不在_669_301_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有