Linux不得不掌握的开发工具 —— vim

Posted 不一样的烟火a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux不得不掌握的开发工具 —— vim相关的知识,希望对你有一定的参考价值。

文章目录

 🌵前言

🌳一、Linux开发工具

🌳二、vim的基本概念

🌳三、vim的基本操作

🌳四、vim正常模式命令集

🌱1.进入/退出插入模式

🌱2.移动光标

🌱3.删除文字

🌱4.复制粘贴

🌱5.替换

🌱6.撤销与恢复

🌱7.更改

🌱8.跳转

🌱9.批量注释与删除

🌳五、vim底行模式命令集

☘️1.温馨提示

☘️2.列出与取消行号

☘️3.跳转

☘️4.查找

☘️5.替换字符

☘️6.分屏操作

☘️7.不退出vim执行其他命令

☘️8.保存退出

🌳六、vim操作总结

🌳七、简单vim配置

🍀1.简单介绍

🍀2.配置原理

🍀3.快速配置vim的安装包

🌳八、vim高清键盘图

💧1.英文版

🔥2.中文版

🎄总结


 🌵前言

大家好啊,我是不一样的烟火a,今天我将为大家讲解一下Linux中不得不掌握的开发工具 —— vim。文章将会为大家详细讲解vim中常用的命令,相信看完的小伙伴都能快速掌握vim的使用,由于vim的命令比较多,所以建议大家收藏反复观看。那么废话不多说,开始我们今天的内容。


🌳一、Linux开发工具

小故事:

        在开始讲之前,先给大家讲个故事。从前有个人叫张三,他是刚接触计算机不久的一个小白,他平时写C/C++代码都是在vs2019这个软件上写的。一天,他的学长问他,张三啊,你平时写C/C++代码一般都是在什么环境下写的啊,张三毫不犹豫的回答说是vs2019;学长又问他,那你调试代码一般用的什么工具呢?张三想了想说,不就是vs2019吗;于是学长又问,那你一般编译代码用什么工具呢?张三这时心里想,这学长脑子不是被门夹了吧,这不还是vs2019吗;当学长又问,那你编译链接用的......,学长这时话还没说完,张三就抢先说vs2019,并告诉学长说都是vs2019,别再问了,于是张三用看傻子的目光送走了学长。(但是张三殊不知,学长这时也把张三当傻子在看了)

其实像vs2019这样的程序被叫做集成开发环境。

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

虽然集成开发环境能让我们用起来更舒服,但是它给我们带来好处的同时也带来了很多问题,比如我们下载安装的时候特别慢,有可能我们下载的一些组件到我们电脑报废了都没用过一次。所以Linux下就是把这些工具都裁开,一个工具只负责一个功能。所以在Linux下编写代码就用vim,编译代码就用gcc/g++,调试代码就用gdb,运行或者自动化构建程序就用make和makefile。(这些软件我后面的文章里面都会一一讲解,今天主要讲解编写代码的工具——vim)

🌳二、vim的基本概念

简单介绍:vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

强调:vim是一个编辑器,意思就是说vim只能写代码,其他的什么都干不了。所以vim工具的功能重点就是如何让我们能更快更好的写出代码。至于这个代码在编译时能否通过,就跟vim没有任何关系了。

vim下最重要的三种模式:

  • 正常/普通/命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode):只有在Insert mode下,才可以做文字输入,按 [ESC ] 键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 底行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift + " : " 即可进入该模式。如果要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

查看vim所有的模式:

先输入命令进入vim。

命令:vim

如果你出现跟我一样的界面,那么就说明,你的Linux下是存在vim的,vim一般都会被默认安装。

我们在底行模式下输入下面指令。

命令:help vim-modes

在这里就可以查看所有的模式了。后面我会教大家如何退出vim,这里先不急。

🌳三、vim的基本操作

进入vim:在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面。

命令:vim [文件名]

提示:如果要用vim进入的文件不存在的话,vim会自动帮你创建这个文件。

进入vim后就是这样的界面。不过有一点要特别注意,就是你进入vim之后,是处于 [正常模式],你要切换到 [插入模式] 才能够输入文字。

[正常模式] 切换至 [插入模式]:

  • 输入a
  • 输入i
  • 输入o
  • 按下这几个字母中任意一个就可以进入 [插入模式]。

我们按下i后就进入了[插入模式]。

在插入模式下我们就可以写代码了。

[插入模式] 切换至 [正常模式]:

  • 目前处于 [插入模式],就只能一直输入或者删除文字,如果想要转到[正常模式],只用按一下 [ ESC ] 键即可。

  

[正常模式] 切换至 [底行模式]:

  • [shift + ;], 其实就是输入 [:]

退出vim并保存文件,在 [正常模式] 下,按一下 [:] 冒号键进入 [Last line mode] ,输入:

  • : w (保存当前文件)
  • :q(退出当前文件)
  • :wq  (输入 [wq] ,存盘并退出vim)
  • :q!  (输入q!,不存盘强制退出vim)
  • 这里的!表示强制的意思,如果是w!,就表示强制保存。

我们这里输入 :wq 回车一下,保存并退出文件。

我们用cat命令打印出文件内容,证明保存成功。(并且,vim自动为我们创建了这个文件)

🌳四、vim正常模式命令集

🌱1.进入/退出插入模式

提示:进入vim,默认处于正常模式。

插入模式:

  • 按 [ i ] 切换进入插入模式 [ insert mode ],按“i”进入插入模式后是从光标当前位置开始输入文件。
  • 按 [ a ] 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
  • 按 [ o ] 进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式:

  • 按 [ ESC ] 键。

🌱2.移动光标

移动光标:

  • vim 可以直接用键盘来上下左右移动,但是正规的 vim  是用小写英文字母 [ h ]、[ j ]、[ k ]、 [ l ],分别控制光标左、下、上、右移一格。但是要注意,只有在普通模式下才可以通过字母来移动光标哦。(这里提供一个记忆方法, [ h ]、[ j ]、[ k ]、 [ l ] 这四个字母是顺序排列在一行的,[ h ]是最左边的那个字母,所以就对应左移;[ l ]是最右边的那个字母,所以就对应右移;[ j ]可以看成单词jump(跳)的首字母,而跳是往下跳,所以就对应下移;[ k ]可以看成单词king(国王)的首字母,而国王是高高在上的,所以就对应上移)
  • 按 [ G ]:移动到文章的最后。
  • 按 [ $ ]:移动到光标所在行的“行尾”。
  • 按「^」:移动到光标所在行的“行首”。
  • 按「w」:光标跳到下个字的开头。
  • 按「e」:光标跳到下个字的字尾。
  • 按「b」:光标回到上个字的开头。
  • 按「#l」:光标移到该行的第#个位置,如:5l
  • 按[gg]:进入到文本开始。
  • 按[shift+g]:进入文本末端。
  • 按 [ ctrl ] + [ b ] :屏幕往“后”移动一页。
  • 按 [ ctrl ] + [ f ] :屏幕往“前”移动一页。
  • 按 [ ctrl ] + [ u ] :屏幕往“后”移动半页。
  • 按 [ ctrl ] + [ d ] :屏幕往“前”移动半页。
  • 提示:一定要看清是大写还是小写字母哦。

🌱3.删除文字

删除文字 :

  • [ x ]:每按一次,删除光标所在位置的一个字符。
  • [ #x ]:例如,[ 6x ] 表示删除光标所在位置的“后面(包含自己在内)”6个字符。
  • [ X ]:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
  • [ #X ]:例如,[ 20X ] 表示删除光标所在位置的“前面”20个字符。
  • [ dd ]:删除光标所在行。
  • [ #dd ]:从光标所在行开始删除#行。

🌱4.复制粘贴

复制:

  • [ yw ]:将光标所在之处到字尾的字符复制到缓冲区中。

举例:

我在这个位置按下yw,就可以复制printf这个字了。

然后我们粘贴,就把我们复制的printf粘贴出来了。

  • [ #yw ]:复制#个字到缓冲区。

举例:

我们在这个位置按下2yw,就可以复制 hello 和 vim 这2个字了。

 

然后粘贴。

  • [ yy ]:复制光标所在行到缓冲区。
  • [ #yy ]:例如,[ 6yy ] 表示拷贝从光标所在的该行“往下数”6行文字。
  • [ p ]:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
  • [ #p ]:例如,[ 100p ] 表示将缓冲区内的所有内容粘贴100次到光标位置。

🌱5.替换

替换:

  • [ r ]:替换光标所在处的字符。

举例:

我们在光标这个位置先按下r,再按下w,就可以把字符p替换成字符w。

替换完成。

 

  • [ R ]:替换光标所到之处的字符,直到按下 [ ESC ] 键为止。(按下 [ R ] 进入替换模式,只要不退出就可以一直替换,按下 [ ESC ] 退出替换模式)

举例:

我们这个位置按下 [ R ] 就可以开始替换。

进入替换模式。

 替换完成,按下 [ ESC ] 返回普通模式。

  • [ shift + ~ ]:大小写相互转换,将光标位置当前的字母进行大小写转换,可以快速的转换大小写字母。

🌱6.撤销与恢复

撤销上一次操作:

  • [ u ]:如果您误执行一个命令,可以马上按下 [ u ],回到上一个操作。按多次“u”可以执行多次恢复。
  • [ ctrl + r ]: 撤销恢复。

注意:如果保存退出vim后,下次再进来就撤销不了上次的操作了,只能撤销当前进入vim的所有操作。

🌱7.更改

更改:

  • [ cw ]:更改光标所在处的字到字尾处。

举例:

在此处按下 [ cw ],vim就会把当前字删除,并且进入插入模式。

删除当前字,进入插入模式。

  • [ c#w ]:例如,[ c2w ] 表示更改2个字。

举例:

在此处按下 [ c2w ],vim就会删除2个字(包括当前字),并且进入插入模式。

删除2个字,进入插入模式。

🌱8.跳转

跳至指定的行:

[ #G ]:例如,[ 15G ],表示移动光标至文章的第15行行首。

🌱9.批量注释与删除

如何批量注释:

Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号,如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。

举例:

先Ctrl + v 进入块选择模式。

移动光标选择要注释的行。

按下大写的i进入行首插入模式。

输入注释符号。

按下两下ESC。

取消注释:

Ctrl + v 进入块选择模式,选中你要删除的行首的注释符号,注意 // 要选中两个,选好之后按 d 即可删除注释,ESC 保存退出。

Ctrl + v 进入块选择模式。

 

选中你要删除的行首的注释符号。

按 d 删除注释。

🌳五、vim底行模式命令集

☘️1.温馨提示

提示:在使用底行模式之前,请记住先按 [ ESC ] 键确定您已经处于正常模式,再按 [ : ]冒号即可进入底行模式。

☘️2.列出与取消行号

列出行号:

  • [ set nu ]:输入 [ set nu ] 后,会在文件中的每一行前面列出行号。

举例:

在底行输入 [ set nu ] 后,按下回车即可设置行号。

取消行号:

  • [ set nonu ]:输入 [ set nonu ] 后,将会取消设置的行号。

举例:

在底行输入 [ set nonu ] 后,按下回车即可取消设置的行号。

☘️3.跳转

跳到文件中的某一行:

  • [ # ]:[ # ] 号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字12, 再回车,就会跳到文章的第12行。

举例:

光标初始位置在第三行。

我们在底行输入12,即可将光标跳转到12行。

☘️4.查找

查找字符:

  • [ /关键字 ]:先按 [ / ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按  [ n ] 会往后寻找到您要的关键字为止。
  • [ ?关键字 ]:先按 [ ? ] 键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按 [ n ] 会往前寻找到您要的关键字为止。

☘️5.替换字符

替换字符:

格式:[ range ] [ s ] [ / ] [ pattern ] [ / ] [ string ] [ / ] [flags] [count]

解释:

  • [range] 表示区间,% 用于表示全文;2,3 表示从第2行开始到第3行。
  • [ s ] 表示substitute,也就是替换的意思。
  • [ / ] 表示分隔符。
  • [ pattern ] 表示字符串匹配规则,要匹配什么样的字符串 , 比如^a 表示以a字符起始的字符串。
  • [ string ] 表示要将匹配到的字符串替换为的新的string字符串。
  • [flags] s_flags中,g比较常用,通常使用g表示全部替换,默认如果不给的话,表示只替换一次。
  • [count] 表示在一行中匹配多少次,很少会用到....
  • 如果想要将文件中所有 Hello 替换为 abcdef 则命令为: %s/Hello/abcdef/g

举例:

初始状态。

将文件中第11行~12行的所有 Hello 替换为 abcdef。

 

如果想要将文件中所有 Hello 替换为 abcdef。则用%即可表示全文范围。

命令:%s/Hello/abcdef/g

☘️6.分屏操作

分屏操作:

  • [ vs ] [ 文件名 ]:在底行模式下输入[ vs ] [ 文件名 ],就可以实现分屏操作了。
  • 分屏后光标在哪个文件,就进行对哪个文件的操作
  • 分屏后进入底行,光标在哪个文件,就处于哪个文件的底行。
  • 如何切换屏幕(文件):[ctrl + 按2下w] 

举例:

底行输入要添加的文件。

实现分屏,如果file.c文件不存在,vim将会自动创建这个文件。

[ctrl + 按2下w] 切换文件。

还可以用 [#yy] 复制test.c文件的内容,然后切换文件,用 [p] 复制到file,c文件上。

 想要退出哪个文件就在哪个文件的底行输入 [wq] 即可保存退出。

☘️7.不退出vim执行其他命令

不退出vim执行其他命令:

  • [! + 对应命令]:可以不用退出vim就执行其他命令。
  • 按回车,即可快速重新回到vim。
  • 常见情形:执行命令行命令、编译、运行、查看man等。
  • 注意:这里的 [ ! ] 与强制符号 [ ! ] 不一样,这里的 [ ! ] 是放在命令首位,而强制符号是放在命令末尾。

举例:

查看man手册。

 按q退出man手册。

按下回车快速返回vim。

不退出vim,编译当前代码。

不退出vim,用ls查看当前目录下的文件。

发现当前目录下存在,刚才编译好的可执行文件。

不退出vim,运行编译好的可执行文件。

成功运行。

按下回车,快速返回vim。

☘️8.保存退出

[底行模式] 切换至 [正常模式]:

  • 按2下ESC。
  • 或者删除 [ : ] 冒号。
  • 执行完一条命令后自动返回正常模式。

保存文件:

  • [ w ]: 在冒号输入字母 [ w ] 就可以将文件保存起来。

离开vim:

  • [ q ]:按 [ q ] 就是退出,如果无法离开vim,可以在 [ q ] 后跟一个 [ ! ] 强制离开vim。
  • [ wq ]:一般建议离开时,[ q ] 搭配 [ w ] 一起使用,这样在退出的时候还可以保存文件。

🌳六、vim操作总结

最主要的三种模式

  • 正常模式
  • 插入模式
  • 底行模式
  • 一共有12种总模式,其他模式大家可以自信查阅,因为用得不多,这里就不过多讲述。

简略汇总图:

温馨提示:

vim的操作太多,我们是不可能完全记住,想要记住的话,只有我们每天不断的用vim,才能更好的让我们熟悉vim的操作。

🌳七、简单vim配置

🍀1.简单介绍

其实我们上面讲的这些都是在没有配置的vim下讲的,细心的小伙伴一定会发现,其实在这样的vim跟在记事本上写代码没有多大区别,既没有自动对齐,也没有自动补全功能。如果你想要让你的vim拥有这些功能,就必须给vim配置一下。

🍀2.配置原理

配置的时候我们需要在自己的用户家目录下创建一个 " .vimrc " 文件。

进入用户家目录命令:

命令:cd ~

一般没有配置过vim的用户,家目录下都没有 " .vimrc " 这个文件。所以需要我们自己创建一个。

       

 配置原理就是:当我们打开vim的时候,vim就会自动读取你配置的这个 " .vimrc " 这个文件,然后就可以实现你想要的效果了。

在我们配置之前先看看我们vim原始的效果。

下面我们开始配置我们的vim。

这是我提供给大家的一些简单的配置,需要哪个就把该命令复制到你的 " .vimrc " 文件,然后保存即可。(如果需要更多的配置命令,大家可以在网上搜索一下)

syntax on   "高亮代码"
set nu                        "显示行号"
set relativenumber   "以当前行号为基准显示行号"
set cursorline  "在当前光标位置显示一条线
set tabstop=4                  "tab长度设置为4"
""set softtabstop=4
set shiftwidth=4            "设置缩进空格数为4"
set autoindent           "设置自动缩进,每行缩进值与上一行相等"
set nobackup                "覆盖文件时不备份"
set cursorline              "突出显示当前行"
set ruler                    "在右下角显示光标位置的状态行"   
set autoindent             "自动缩进"
set noexpandtab          " 不要用空格代替制表符
set hlsearch                  "搜索逐字符高亮
set foldmethod=marker        "代码折叠
set cmdheight             " 命令行(在状态行下)的高度,默认为1,这里是2
set mouse=a                   " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set showmatch                 " 高亮显示匹配的括号

set enc=utf-8                 "编码设置
set langmenu=zh_CN.UTF-8      "语言设置
set helpheight=15             "帮助的行高
set helplang=cn               "帮助语言
set fillchars=vert:\\ ,stl:\\ ,stlnc:\\      " 在被分割的窗口间显示空白,便于阅读
set showmatch                 " 高亮显示匹配的括号
set scrolloff=3               " 光标移动到buffer的顶部和底部时保持3行距离
set smartindent               " 为C程序提供自动缩进

我们这里先来配置一下行号。

配置完后,从新进入vim,就可以自动显示行号了。

 如果还想配置其他的功能,只用把需要的功能对应的命令复制粘贴到你的 " .vimrc " 文件上,然后保存即可。这里就不过多讲解了。

如果你还想要让自己vim功能更加的强大,那么还需要再创建一个 " .vim " 目录,用于存放各种的插件。你可以在网上把你想要的插件下下来,然后放进 " .vim " 目录,就可以拥有对应的功能了。

🍀3.快速配置vim的安装包

虽然上面讲了vim配置的原理,也讲了该如何配置。但是如果自己去配置的话始终还是太麻烦了,自己需要的功能对应的命令还要一个一个的复制粘贴过来;如果你还要下插件的话,有可能你自己在网上找的插件下下来后,你自己都找不到它在哪。以至于让自己在配置vim上花费很多时间。

于是,我为了帮助大家节省时间,不想让大家花费太多的时间用在vim配置上,于是我花了3天3夜的时间在gitee上面帮大家找到了一个十分美观简洁,且方便好用的vim配置安装包(支持显示行号、自动补全、自动对齐等常用功能)

配置前的效果:

配置后的效果:

 如何安装:

在 shell 中执行指令(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令. 强烈 "不推荐" 直接在 root 下执行)

命令:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

注意:此安装包目前只支持 Centos7 x86_64,不支持Ubuntu。

举例:

复制上面的命令,粘贴到命令行,然后按回车,最后输入你的root密码后即可开始安装。

正在安装中。

安装完成。

安装完成后,执行以下命令后,配置就可以生效了。

命令;source ~/.bashrc

安装完后,用户家目录下就会多出这几个文件和目录。 其中install.sh是使用这些功能需要的脚本,不想用的时候删去即可。

如何卸载:

在安装了 VimForCpp 的用户执行以下命令即可卸载。

命令:bash ~/.VimForCpp/uninstall.sh

额外补充:

这个安装包里面vim的配置,默认是将缩进设置为2的,如果觉得用起来不习惯可以自己改成4。

下面为步骤:

还是在家目录下进入" .vimrc " 这个文件,安装包里面自己就会帮你创建。

找到第50行,将这三行的2都改成4即可。

更改完后保存退出即可。

安装包来源:VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

安装包里面的详细内容和所有功能可以在这里查看。

总结:

  • vim的具体配置我们不关心,因为比较麻烦。
  • 但是我们需要一个不错的配置,所以需要稍微了解一下vim配置的原理。
  • 一般在配置的时候,是你自己配置你自己的,在当前用户下配置完成后,只有在当前用户下能起作用,对其他用户是没有影响的。但是强烈建议不要在root用户下配置,因为如果在普通用户下配置错了,我们可以直接把普通用户删掉即可;但是如果在root下配置错了后,就会很麻烦了。

🌳八、vim高清键盘图

💧1.英文版

🔥2.中文版


🎄总结

到这里我们vim的讲解就结束了,相信大家都能够看懂,希望大家在学习vim的期间里一定要多使用vim,这样才能更快的让自己掌握vim的使用。如果大家有什么解决不了的问题,欢迎大家评论区留言或者私信告诉我。如果感觉对自己有用的话,可以点个赞或关注鼓励一下博主,我会越做越好的,感谢各位的支持。

Linux学习笔记——文件/目录/VIM

文件和目录管理 及 VI编辑器的使用

    文件和目录管理,刚开始学这块的时候感觉内容很多很杂,但是学完进行总结后,发现其实很有条理的而且没什么难度,只是熟练掌握这些常用的命令就行了。至于Vim编辑器,不得不说,用了这个编辑器之后,感觉windows的notepad很没有技术含量了。

  先简单总结一下文件和目录常用到的命令,简单的用法就略过。

     文件操作命令:touch、file、which、find、cp、rm、mv、ln

     文件内容操作命令:cat、more、less,head、tail,wc、grep

     目录操作命令:pwd、cd、ls、mkdir、du

     归档及压缩命令:gzip、bzip2、tar

复制代码
[jzhou@localhost ~]$ pwd  ==>显示当前目录
/home/jzhou
[jzhou@localhost ~]$ mkdir dirtest   ==>创建一个目录
[jzhou@localhost ~]$ cd dirtest      ==>进入这个目录
[jzhou@localhost dirtest]$ touch testfile    ==>创建一个文件
[jzhou@localhost dirtest]$ mkdir dirtest1    ==>创建子目录
[jzhou@localhost dirtest]$ ls    ==>列出当前目录内容
dirtest1  testfile
[jzhou@localhost dirtest]$ echo hello linux >>testfile  ==>追加内容到文件
[jzhou@localhost dirtest]$ cat testfile    ==>显示文件内容
hello linux
[jzhou@localhost dirtest]$ file testfile  ==>查看文件类型
testfile: ASCII text
[jzhou@localhost dirtest]$ du -sh testfile  ==>显示文件所占空间
8.0K    testfile
[jzhou@localhost dirtest]$ wc testfile  ==>统计文件行数、字数、字符数
 1  2 12 testfile
[jzhou@localhost dirtest]$ echo haha,I love Linux >> testfile   ==>追加内容
[jzhou@localhost dirtest]$ echo no,no ,I hate C plus plus >> testfile
[jzhou@localhost dirtest]$ echo OK,the end >> testfile
[jzhou@localhost dirtest]$ cat testfile   ==>查看内容
hello linux
haha,I love Linux
no,no ,I hate C plus plus
OK,the end
[jzhou@localhost dirtest]$ head -2 testfile  ==>查看文件前两行内容
hello linux
haha,I love Linux
[jzhou@localhost dirtest]$ tail -2 testfile  ==>查看文件最后两行内容
no,no ,I hate C plus plus
OK,the end
[jzhou@localhost dirtest]$ cat testfile | grep "Linux"  查找特定关键字
haha,I love Linux
[jzhou@localhost dirtest]$ 
复制代码

以上只是展示部分命令的简单用法,很多选项没有加入,head和tail命令默认是显示前10行和后10行记录,du是查看目录或文件所占的空间,通常比实际大小要大,且通常为4的整数倍。

more和less命令也是查看文件内容的方法,不过less已经渐渐取代more了,因为more的所有功能less都具有,而且less可以向上翻页查看,more则不可以,cat是直接将文件内容一屏显示出来,不管多长,所有如果文件很长时,则使用less命令,同样,也是按q键退出。

复制代码
[jzhou@localhost dirtest]$ cd dirtest1    ==>进入到刚才建的子目录
[jzhou@localhost dirtest1]$ touch testfile1   ==>在子目录中创建一个新文件
[jzhou@localhost dirtest1]$ echo haha >> testfile1
[jzhou@localhost dirtest1]$ cd .. ==>返回到上一目录
[jzhou@localhost dirtest]$ ls 
dirtest1  testfile
[jzhou@localhost dirtest]$ cp testfile ./dirtest1/ ==>把文件testfile复制到子目录dirtest1下
[jzhou@localhost dirtest]$ cd dirtest1/   ==>进入到子目录
[jzhou@localhost dirtest1]$ ls   ==>查看子目录下多了一个刚才复制过来的文件
testfile  testfile1
[jzhou@localhost dirtest1]$ cd ..
[jzhou@localhost dirtest]$ ls
dirtest1  testfile
[jzhou@localhost dirtest]$ rm -f testfile ==>强制删除dirtest目录下的testfile文件
[jzhou@localhost dirtest]$ ls  ==>testfile文件已经被删除
dirtest1
[jzhou@localhost dirtest]$ cd ./dirtest1/   ==>进入到子目录
[jzhou@localhost dirtest1]$ mv testfile ./testfile  ==>这里我尝试移动的目标目录错误
testfile   testfile1  
[jzhou@localhost dirtest1]$ pwd   ==>所以我要查看当前目录,以使用绝对路径
/home/jzhou/dirtest/dirtest1
[jzhou@localhost dirtest1]$ mv testfile /home/jzhou/dirtest/==>将testfile文件移到dirtest目录下
[jzhou@localhost dirtest1]$ cd ..
[jzhou@localhost dirtest]$ ls   ==>很好,testfile文件已经被移动过来了
dirtest1  testfile
[jzhou@localhost dirtest]$ ln -s testfile linkfile  ==>建立软链接
[jzhou@localhost dirtest]$ ls -l   ==>注意下面软链接文件的显示方式
总计 20
drwxrwxr-x 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou    8 03-05 22:45 linkfile -> testfile
-rw-rw-r-- 1 jzhou jzhou   67 03-05 22:40 testfile
[jzhou@localhost dirtest]$ 
复制代码

rm 文件作用在文件与目录的唯一区别就是是否带有-r选项,因为删除目录时,目录里面可能嵌套有文件和目录,所以必须要有-r选项,cp和rm的格式都是: cp/rm  原文件   目标文件(注意这里的路径问题)

ln链接文件:分为软链接和硬链接,软链接又称符号链接,即带有-s选项。软链接即相当于windows下的快捷方式,若原文件损坏,则快捷方式无效,而硬链接则相当于对原文件的一个拷贝,通常情况,硬链接用的很少。所以建立链接文件时,通常加-s选项即建立软链接。链接文件的文件类型位为:l,后续笔记文件权限中会介绍这个位。

  另外要注意的是:不能为目录建立硬链接文件,而且硬链接与原始文件必须位于同一分区(文件系统)中。

复制代码
[jzhou@localhost ~]$ cd dirtest/
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile
[jzhou@localhost dirtest]$ tar cf test.tar dirtest1 testfile  ==>归档目录和文件
[jzhou@localhost dirtest]$ ls  ==>多了一个刚新建的归档文件test.tar
dirtest1  linkfile  testfile  test.tar
[jzhou@localhost dirtest]$ rm -rf dirtest1 testfile   ==>删除原文件,方便后面确认文件是否归档
[jzhou@localhost dirtest]$ ls
linkfile  test.tar
[jzhou@localhost dirtest]$ pwd  ==>查看一下当前目录,后面要解归档在这个目录
/home/jzhou/dirtest
[jzhou@localhost dirtest]$ tar xf test.tar -C /home/jzhou/dirtest/   ==>解开归档,testfile文件释放了
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  test.tar
[jzhou@localhost dirtest]$ rm -f test.tar  ==>删除这个归档包,助于后面测试
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile
[jzhou@localhost dirtest]$ gzip -9 testfile   ==>将这个文件以gz格式压缩
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile.gz ==>这个就是压缩后自动生成的文件名
[jzhou@localhost dirtest]$ gzip -d testfile.gz   ==>将刚压缩的包解开
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile    ==>看,testfile被解压出来了
[jzhou@localhost dirtest]$ bzip2 -9 testfile    ==>将这个文件以bz2格式压缩
[jzhou@localhost dirtest]$ ls 
dirtest1  linkfile  testfile.bz2  ==>看,这个bz2就是刚生成的
[jzhou@localhost dirtest]$ bzip2 -d testfile.bz2   ==>解开这个压缩包
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  ==>看,它被释放出来了
[jzhou@localhost dirtest]$ tar jcf test.tar.bz2 testfile   ==>这个是bz2格式归档压缩,注意选项是j
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  test.tar.bz2
[jzhou@localhost dirtest]$ rm -r testfile
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  test.tar.bz2
[jzhou@localhost dirtest]$ tar jxf test.tar.bz2 -C /home/jzhou/dirtest/  ==>解开归档压缩
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  test.tar.bz2
[jzhou@localhost dirtest]$ tar zcf test.tar.gz dirtest1   ==>这个是gz格式归档压缩,注意选项是z
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  test.tar.bz2  test.tar.gz
[jzhou@localhost dirtest]$ rm -rf dirtest1
[jzhou@localhost dirtest]$ ls
linkfile  testfile  test.tar.bz2  test.tar.gz
[jzhou@localhost dirtest]$ tar zxf test.tar.gz -C /home/jzhou/dirtest/   ==>解开归档压缩
[jzhou@localhost dirtest]$ ls
dirtest1  linkfile  testfile  test.tar.bz2  test.tar.gz
[jzhou@localhost dirtest]$ 
复制代码

上面命令显示格式不太友好,因为在真实环境下,若删除原文件,软链接文件会处于不可用状态背景会变成红底。不过这个不影响理解呵呵。

  注意归档只是将文件或者目录打在一个包里,并不进行压缩,而gzip和bzip2是进行压缩,上述最后几行命令是将二者结合起来使用的,即先归档后压缩。

  tar和gzip  bzip2的命令格式如下:  

                 tar  [选项]...  归档文件名  源文件或目录    ==》制作归档文件

              tar  [选项]...  归档文件名  [-C 目标目录]   ==》解开归档文件

              gzip/bzip2 [-9] 文件名或目录                 ==》制作压缩文件

              gzip/bzip2  -d .gz/.bz2格式的压缩文件    ==》解开压缩文件

     对于上述命令,只是举出最简单的用法,至于要实现更强大的功能,使用时那就要去查每个命令带有哪些选项,或者直接找man命令帮助,那些选项太多,所以我认为只要知道有某个命令,至于具体用法用到时再去查而没必要记住所有的选项含义。

  

                                                       VIM编辑器的常用快捷编辑方式

    文本编辑器可用来创建或修改文本文件,以及维护Linux系统中的各种配置文件。首次接触这个编辑器时会由于不熟练而是影响编辑效率,但是掌握常用快捷键后,非常神速。下面只是简单介绍下Vim编辑器,至于更深入的用法大家可以网上找找。

     Unix和早期的Linux中默认使用的文本编辑器是Vi,现在用的都是vi的增强版vim,由于vi用的比较习惯了,所以现在仍然叫vi,其实是别名 alias vi=\'/usr/bin/vim\',这个可以通过命令which vi看到。

     Vim编辑器有3种工作模式:命令模式、输入模式、末行模式,在有的资料中可能说有2中工作模式,不将‘末行模式’列在其中,这个不重要,总之前两种模式确实很重要;因为在这两种模式下可以做很多事。各种模式之间的切换如下图:

      

       这几个模式的转换也要非常熟练。

   命令模式中的基本操作:

   (1)显示行号::set nu     取消行号: :set nonu

       (2)行间快速跳转:#G:跳转到文件中的第#行;G:跳转到文件的末尾行;1G或gg:跳转到文件的行首。

     (3)行内快速跳转:Home  End

   关于删除复制和粘贴:(命令模式下)

删除

x或Del

删除光标处的单个字符

dd

删除当前光标所在行

#dd

删除从光标处开始的#行内容

d^

删除当前光标之前到行首的所有字符

d$

删除当前光标处到行尾的所有字符

复制

yy

复制当前行整行的内容到剪贴板

#yy

复制从光标处开始的#行内容

粘贴

p

将缓冲区中的内容粘贴到光标位置处之后

P

粘贴到光标位置处之前

 在文件内容中查找:

操作键

功能

/word

从上而下在文件中查找字符串“word”

?word

从下而上在文件中查找字符串“word”

n

定位下一个匹配的被查找字符串

N

定位上一个匹配的被查找字符串

   撤销编辑及保存退出:

u

按一次取消最近的一次操作

多次重复按u键,恢复已进行的多步操作

U

用于取消对当前行所做的所有编辑

ZZ

保存当前的文件内容并退出vi编辑器

    保存文件及退出vi编辑器:(末行模式下)

保存文件

   

:w /root/newfile

另存为其它文件

退出vi

:q

未修改退出

:q!

放弃对文件内容的修改,并退出vi

保存文件退出vi

:wq

 

    文件内容替换:(末行模式下)

:s /old/new

将当前行中查找到的第一个字符“old” 串替换为“new”

:s /old/new/g

将当前行中查找到的所有字符串“old” 替换为“new”

:#,# s/old/new/g

在行号“#,#”范围内替换所有的字符串“old”为“new”

:% s/old/new/g

在整个文件范围内替换所有的字符串“old”为“new”

:s /old/new/c

在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

要想熟练操作Vim编辑器,首先得掌握这些快捷键,这些都是最基本的。

如有错误,欢迎指正,3Q!

以上是关于Linux不得不掌握的开发工具 —— vim的主要内容,如果未能解决你的问题,请参考以下文章

不得不掌握的数据可视化小工具——Excel切片器

你不得不掌握的thinkphp5

Linux系列之:9秒钟掌握多种实时查询日志的方法,再也不用cat命令了。

学习大数据需要掌握的知识(不得不看)

掌握这15种工具,Web开发事半功倍

gdb调试常用方法介绍