• vim的学习和使用


    Vim简介

    Vim 是什么?

    Vim是一个高度可配置的文本编辑器,用于创建和更改任何类型的文本非常高效。与大多数UNIX系统Apple OS X一起,它被包含为“vi”。Vim是稳定的,并且不断发展,变得更好。其特点是:持久的多级撤消树;广泛的插件系统;支持数百种编程语言和文件格式;强大的搜索和替换;与许多工具集成。

    VimVi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员、运维)习惯的编辑器。如果你是一名职业的SE,那么一定在寻找一款出色的能够自由定制、满足灵活编辑功能的编辑器。那么答案,就是vim或者Emacsvim最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘的各种巧妙组合操作却能带来极为大幅的效率提升。

    Linux系统中,RHEL和CentOS的配置文件是/etc/vimrc,Debian和Ubuntu的配置文件是/usr/share/vim/vimrc

    那么vimRC中的RC是什么意思?

    一般在运行某个软件、环境或工具之初,要初始执行的一些命令,称为Run Commands,即RC。根据Wikipedia.org的记载,RC缩写的用法源自MIT的相容分时操作系统(Compatible Time-Sharing System,CTSS),有兴趣的话请自行了解。

    为什么要学 Vim ?

    作为一个程序员,不管是前端还是后端,工作中基本上都要跟服务器打交道,现在服务器里面运行的操作系统基本上都是 Linux,当你远程跟服务器通信的时候,基本上都要通过终端来跟服务器建立连接,当你要修改服务器的某个配置文件的时候,在一个黑漆漆的终端里,你能用的几乎只有 Vim,所以不会 Vim 的话,你就没办法工作;

    vim三种基本模式

    基本上vi/vim可以分为三种状态,分别是普通模式、插入模式和命令模式,各模式的功能区分如下:

    1. 普通模式

    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段。

    1. 插入模式

    只有在插入下,才可以做文字输入、删除,按「ESC」键可回到普通模式。可以按i、I、a、A、o、O、r、R即可。其中i和I表示插入(Insert),r和R表示替换(replace)。

    1. 命令模式

    将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号等……可以按“:”、“/”、“?”。其中“:”表示输入vim命令,“/”表示后面输入要向下搜索的字符串,“?”表示后面输入要向上搜索字符串。

    其实,可以把普通模式理解为常态,进入其它任何一种模式,需要某种特殊方式,而从其它特殊模式回到普通模式,就按「ESC」键即可。

    vim最常用的配置

    为了使以下参数永久有效,那你可以把以下参数写进/etc/vimrc配置文件里,当然,有一些参数已经存在配置文件中了。

    颜色设置

    指令作用
    syntax on开启代码高亮
    syntax off关闭代码高亮
    syntax enable开启代码高亮

    搜索设置

    指令作用
    set hlsearch开启搜索高亮
    set nohlsearch关闭搜索高亮
    set incsearch输入搜索字符串的同时进行搜索
    set ignorecase搜索时忽略大小写

    用户界面

    指令作用
    set ruler开启光标位置提示
    set number显示行号
    set nonu不显示行号
    set cmdheight=1命令部分高度为1

    编辑辅助配置

    指令作用
    set autoindent自动缩进
    set noautoindent不自动缩进
    set smartindent智能缩进
    set autoread当文件在外部被改变时,vim自动更新载入
    set showmatch显示匹配的括号

    常用的状态切换按键

    普通模式 → 插入模式

    指令作用
    i   小写字母i在光标位置插入
    a  小写字母a在光标的下一个位置插入
    I   大写字母I在光标所在行的第一个非空格处插入
    A  大写字母A在光标所在行的最后一个字符处插入
    o  小写字母o在光标所在行的下一行处插入新行
    O  大写字母O在光标所在行的上一行处插入新航
    r   小写字母r替换光标所在处的字符一次
    R  大写字母R持续替换光标所在处的字符,直到按下「ESC」键

    普通模式 → 命令模式

    指令作用
    :w保存文件
    :w!强制保存文件(前提是用户有修改文件访问权限的权限)
    :q退出缓冲区
    :q!强制退出缓冲区而不保存
    :wq保存文件并退出缓冲区
    :wq!强制保存文件并退出缓冲区(前提是用户有修改文件访问权限的权限)
    :w [filename]另存为名为filename文件
    :r [filename]将另外一个文件读入到正在编辑的文件
    :n1,n2 w [filename]将n1行到n2行的数据另存为名为filename文件
    :x保存并退出
    ZZ保存并退出
    ZQ不保存退出

    插入模式 → 视图模式

    按下「ESC」键

    命令模式 → 视图模式

    按下「ESC」键

    常用的光标移动按键

    光标字符操作

    指令作用
    h向左箭头键(←) 光标向左移动一个字符
    l向右箭头键(→) 光标向右移动一个字符
    j向下箭头键(↓) 光标向下移动一个字符
    k向上箭头键(↑) 光标向上移动一个字符
    $光标移动到行尾(End),注意要按「Shift」键
    0光标移动到行首(Home)
    ^光标移动到行首第一个非空白字符(Home),注意要按「Shift」键

    光标词操作

    指令作用
    w光标移动到后一词的词首
    W光标移动到后一词的词首且忽略标点符号
    e光标移动到后一词的词尾
    E光标移动到后一词的词尾且忽略标点符号
    b光标移动到前一词的词首
    B光标移动到前一词的词首且忽略标点符号

    光标行操作

    指令作用
    G光标移动到文件的最后一行的第一个非空白字符
    nG/ngg光标移动到文件的第n行,相当于”:n”
    gg光标移动到文件的第1行的第一个非空白字符

    光标页操作

    指令作用
    Ctrl + f向下翻页(Pagedown)
    Ctrl + b向上翻页(Pageup)
    Ctrl + d向下翻半页
    Ctrl + u向上翻半页
    「H」光标移动到目前显示页的第一行
    「M」光标移动到目前显示页的中间行
    「L」光标移动到目前显示页的最后一行

    光标自由操作

    指令作用
    Ctrl + o回到光标的上一位置

    常用编辑操作按键

    删除操作(delete)

    指令作用
    dd删除光标所在行
    ndd删除从光标所在行开始,向下的n行
    d1G删除从光标所在行开始,到第一行的所有行
    dG删除从光标所在行开始,到最后一行的所有行
    d$删除从光标所在位置,到行尾的所有字符
    d0删除从光标所在位置,到行首的所有字符
    x每按一次,删除光标所在位置的“后面”一个字符
    nx删除光标所在位置的“后面”n个字符
    X大写的X,每按一次,删除光标所在位置的“前面”一个字符
    nX删除光标所在位置的“前面”n个字符

    复制操作(yank)

    指令作用
    yy复制光标所在行
    nyy复制从光标所在行开始,向下的n行
    y1G复制从光标所在行开始,到第一行的所有行
    yG复制从光标所在行开始,到最后一行的所有行
    y$复制从光标所在位置,到行尾的所有字符
    y0复制从光标所在位置,到行首的所有字符
    J将光标所在行与下一行合并成一行
    yw复制当前光标所在的字母到该单词的最后一个字母
    yaw复制当前光标所在的单词

    粘贴操作(paste)

    指令作用
    p  小写字母p粘贴剪贴板中的数据,从光标所在行的下一行开始
    P  大写字母P粘贴剪贴板中的数据,从光标所在行的上一行开始~

    撤销与重做操作(undo)

    指令作用
    u撤销上一个操作

    重复操作

    指令作用
    .重复上一操作

    替换操作(replace)

    指令作用
    r替换光标所在处字符
    R进入替换模式,直至按ESC退出
    cc替换光标所在行
    cw替换光标所在的英文单词
    ~转换大小写
    :n1,n2s/old/new/g从n1到n2行将old替换成new,g表示全部替换
    :1,$s/old/new/g将整个文件的old替换成new
    :1,$s/old/new/gcc表示确认

    排版操作

    指令作用
    :le光标所在行左对齐
    :ri光标所在行右对齐
    :ce光标所在行居中

    查看历史

    指令作用
    :history显示最近在vim里面输入的历史

    常用的搜索快捷键

    搜索字符串

    指令作用
    /string向下搜索字符串“string”
    ?string向上搜索字符串“string”

    重复上次搜索

    指令作用
    n根据上次搜索条件找到下一个匹配的字符串
    N根据上次搜索条件找到上一个匹配的字符串

    常用多缓冲区操作按键

    单一缓冲区打开多个文件

    指令作用
    :files显示目前打开了哪些文件
    :n切换到下一个缓冲区内容
    :N切换到上一个缓冲区内容
    :2n切换到下下个缓冲区内容
    :bn下一个缓冲区内容(buffer next)
    :bp上一个缓冲区内容(buffer previous)

    多个缓冲区打开多个文件

    指令作用
    :sp [filename]打开一个新的缓冲区,如果有filename则内容为该文件,否则为当前文件
    Ctrl+w n新建一个缓冲区
    Ctrl+w q退出光标所在的缓冲区
    Ctrl+w j光标移动到下一缓冲区
    Ctrl+w k光标移动到上一缓冲区
    Ctrl+w l光标移动到右一缓冲区
    Ctrl+w h光标移动到左一缓冲区
    Ctrl+w v左右切割窗口新建缓冲区
    Ctrl+w s上下切割窗口新建缓冲区
    Ctrl+w o使光标所在缓冲区最大化,其他缓冲区隐藏

    关于加密

    加密文本文件

    当你用vim打开或新建一个文件时,如果加上-x参数,即:

    # vim -x test.txt  --打开你要加密的文本文件

    那么vim会提示你:

    Enter entryption key:

    当你输入了密码后,vim会提示你重复输入以确认:

    Enter same key again:

    当你在设置密码的时候,是以*来显示的,非明文。打开文件之后,:wq保存退出,密码才生效。
    当下次有人(包括你自己)打开该文件的时候,vim就会提示:

    Enter encryption key:

    这时你只要输入你之前所设置的密码就可以了。如果你输入的密码是错误的,vim并不会提示你密码错误,而是显示一堆无意义的垃圾代码。

    解除加密与重设密码

    打开你已经加密的文件,然后输入:

    # vim test.txt   --打开加密文件之后,输入下面内容

    :set key=

    这样,你的密码就被设置为空了,今后进入就不再需要输入密码了。而如果你向重设密码的话,你可以输入:

    :X

    注意是个大写字母X。这时vim会提示你,只要反复输入两次新的密码就可以了:

    Enter entryption key: *****

    Enter sanme key again: *****

    如果是清除密码,连续敲两次键盘就可以了

    注意

    加密、解除密码、重设密码之后,一定要保存之后才能生效。
    如果密码输入错误,vim不会拒绝访问者编辑文件。在这种显示乱码的情况下编辑文件并保存,整个文件就会变得混乱不堪,无法辨识。今后即使使用正确的密码打开文件,也看不到正确的文档了。

    参考

    1. Linux vi/vim|菜鸟教程
    2. Vim命令&笔记
  • 相关阅读:
    python使用mongoDB
    40_内部类
    Java Stream流详解
    pandas使用dataframe中的两列时间对象数据列作差生成时间差数据列、筛选dataframe数据中时间差(timedelta对象)大于指定阈值的数据行
    react native 0.70版本使用ant-design-mobile-rn及icons字体图标库
    第十四届蓝桥杯ABD题
    ICDE2023 | VEND:基于点编码的边存在性判定
    2023年高教社杯数学建模国赛 赛题浅析
    几何角度理解线性代数(3):点积与叉积
    以太坊「合并」将如何影响Web3世界?
  • 原文地址:https://blog.csdn.net/u014297502/article/details/126411921