`

第十章 vim 的额外功能

 
阅读更多
其实,目前大部分的 distributions 都以 vim 取代 vi 的功能了!如果你使用 vi 后,却看到画面的右下角有显示目前光标所在的行列号码,那么你的 vi 已经被 vim 所取代啰~ 为什么要用 vim 呢?因为 vim 具有颜色显示的功能,并且还支持许多的程序语法 (syntax), 因此,当你使用 vim 编辑程序时( 不论是 C 语言,还是 shell script ), 我们的 vim 将可帮你直接进行『程序除错 (debug)』的功能!真的很不赖吧!^_^

如果你在文本模式下,输入 alias 时,出现这样的画面:

[root@www ~]# alias
....其他省略....
alias vi='vim'  <==重点在这行啊!


这表示当你使用 vi 这个指令时,其实就是执行 vim 啦!如果你没有这一行,那么你就必须要使用 vim filename 来启动 vim 啰!基本上, vim 的一般用法与 vi 完全一模一样~没有不同啦!那么我们就来看看 vim 的画面是怎样啰!假设我想要编辑 /etc/man.config ,则输入『vim /etc/man.config』

tu

上面是 vim 的画面示意图,在这个画面中有几点特色要说明喔:

由于 man.config 是系统规划的配置文件,因此 vim 会进行语法检验,所以你会看到画面中1.内部主要为深蓝色, 且深蓝色那一行是以批注符号 (#) 为开头;
2.最底下一行的左边显示该档案的属性,包括 141行与 4617 字符;
3.最底下一行的右边出现的 1,1 表示光标所在为第一行, 第一个字符位置之意(请看一下上图中的游标所在);
所以,如果你向下移动到其他位置时,出现的非批注的数据就会有点像这样:

tu

看到了喔!除了批注之外,其他的行就会有特别的颜色显示呢!可以避免你打错字啊!而且, 最右下角的 30% 代表目前这个画面占整体档案的 30% 之意!这样瞭乎?

区块选择(Visual Block)

刚刚我们提到的简单的 vi 操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢? 举例来说,像底下这种格式的档案:

这个档案我将他放置到 http://vbird.dic.ksu.edu.tw/linux_basic/0310vi/hosts ,你可以自行下载来看一看这个档案啊!现在我们来玩一玩这个档案吧!假设我想要将 host1, host2... 等等复制起来, 并且加到每一行的后面,亦即每一行的结果要是『 192.168.1.2 host2.class.net host2 』这样的情况时, 在传统或现代的窗口型编辑器似乎不容易达到这个需求,但是咱们的 vim 是办的到的喔!那就使用区块选择 (Visual Block) 吧!当我们按下 v 或者 V 或者 [Ctrl]+v 时, 这个时候光标移动过的地方就会开始反白,这三个按键的意义分别是:

区块选择的按键意义

v	字符选择,会将光标经过的地方反白选择!
V	行选择,会将光标经过的行反白选择!
[Ctrl]+v	区块选择,可以用长方形的方式选择资料
y	将反白的地方复制起来
d	将反白的地方删除掉


来实际进行我们需要的动作吧!就是将 host 再加到每一行的最后面,你可以这样做:

1.使用 vim hosts 来开启该档案,记得该档案请由上述的连结下载先!
2.将光标移动到第一行的 host 那个 h 上头,然后按下 [ctrl]+v ,左下角出现区块示意字样:

tu

3.将光标移动到最底部,此时光标移动过的区域会反白!如下图所示:

tu

4.此时你可以按下『 y 』来进行复制,当你按下 y 之后,反白的区块就会消失不见啰!
5.最后,将光标移动到第一行的最右边,并且再用编辑模式向右按两个空格键,回到一般模式后, 再按下『 p 』后,你会发现很有趣!如下图所示:

tu

透过上述的功能,你可以复制一个区块,并且是贴在某个『区块的范围』内,而不是以行为单位来处理你的整份文件喔! 鸟哥个人是觉得这玩意儿非常的有帮助啦!至少在进行排列整齐的文本文件中复制/删除区块时,会是一个非常棒的功能!

多档案编辑

假设一个例子,你想要将刚刚我们的 hosts 内的 IP 复制到你的 /etc/hosts 这个档案去, 那么该如何编辑?我们知道在 vi 内可以使用 :r filename 来读入某个档案的内容, 不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。 我们可以使用 vim 后面同时接好几个档案来同时开启喔!相关的按键有:

多档案编辑的按键

:n	编辑下一个档案
:N	编辑上一个档案
:files	列出目前这个 vim 的开启的所有档案


在过去,鸟哥想要将 A 档案内的十条消息『移动』到 B 档案去,通常要开两个 vim 窗口来复制, 偏偏每个 vim 都是独立的,因此并没有办法在 A 档案下达『 nyy 』再跑到 B 档案去『 p 』啦! 在这种情况下最常用的方法就是透过鼠标圈选, 复制后贴上。不过这样一来还是有问题,因为鸟哥超级喜欢使用 [Tab] 按键进行编排对齐动作, 透过鼠标却会将 [Tab] 转成空格键,这样内容就不一样了!此时这个多档案编辑就派上用场了!

现在你可以做一下练习看看说!假设你要将刚刚鸟哥提供的 hosts 内的前四行 IP 数据复制到你的 /etc/hosts 档案内,那可以怎么进行呢?可以这样啊:

1.透过『 vim hosts /etc/hosts 』指令来使用一个 vim 开启两个档案;
2.在 vim 中先使用『 :files 』察看一下编辑的档案数据有啥?结果如下所示。 至于下图的最后一行显示的是『按下任意键』就会回到 vim 的一般模式中!

tu

3.在第一行输入『 4yy 』复制四行;
4.在 vim 的环境下输入『 :n 』会来到第二个编辑的档案,亦即 /etc/hosts 内;
5.在 /etc/hosts 下按『 G 』到最后一行,再输入『 p 』贴上;
6.按下多次的『 u 』来还原原本的档案数据;
7.最终按下『 :q 』来离开 vim 的多档案编辑吧!

看到了吧?利用多档案编辑的功能,可以让你很快速的就将需要的资料复制到正确的档案内。 当然啰,这个功能也可以利用窗口接口来达到,那就是底下要提到的多窗口功能。


多窗口功能

在开始这个小节前,先来想象两个情况:

当我有一个档案非常的大,我查阅到后面的数据时,想要『对照』前面的数据, 是否需要使用 [ctrl]+f 与 [ctrl]+b (或 pageup, pagedown 功能键) 来跑前跑后查阅?

我有两个需要对照着看的档案,不想使用前一小节提到的多档案编辑功能;
在一般窗口接口下的编辑软件大多有『分割窗口』或者是『冻结窗口』的功能来将一个档案分割成多个窗口的展现, 那么 vim 能不能达到这个功能啊?可以啊!但是如何分割窗口并放入档案呢? 很简单啊!在指令列模式输入『:sp {filename}』即可!那个 filename 可有可无, 如果想要在新窗口启动另一个档案,就加入档名,否则仅输入 :sp 时, 出现的则是同一个档案在两个窗口间!

让我们来测试一下,你先使用『 vim /etc/man.config 』打开这个档案,然后『 1G 』去到第一行,之后输入『 :sp 』 再次的打开这个档案一次,然后再输入『 G 』,结果会变成底下这样喔:

tu

万一你再输入『 :sp /etc/hosts 』时,就会变成下图这样喔:

tu

怎样?帅吧!两个档案同时在一个屏幕上面显示,你还可以利用『[ctrl]+w+↑』及『[ctrl]+w+↓』 在两个窗口之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单啰~ 分割窗口的相关指令功能有很多,不过你只要记得这几个就好了:

多窗口情况下的按键功能

:sp [filename]	开启一个新窗口,如果有加 filename, 表示在新窗口开启一个新档案,否则表示两个窗口为同一个档案内容(同步显示)。
[ctrl]+w+ j
[ctrl]+w+↓	按键的按法是:先按下 [ctrl] 不放, 再按下 w 后放开所有的按键,然后再按下 j (或向下箭头键),则光标可移动到下方的窗口。
[ctrl]+w+ k
[ctrl]+w+↑	同上,不过光标移动到上面的窗口。
[ctrl]+w+ q	其实就是 :q 结束离开啦! 举例来说,如果我想要结束下方的窗口,那么利用 [ctrl]+w+↓ 移动到下方窗口后,按下 :q 即可离开, 也可以按下 [ctrl]+w+q 啊!


鸟哥第一次玩 vim 的分割窗口时,真是很高兴啊!竟然有这种功能!太棒了! ^_^


vim 环境设定与记录: ~/.vimrc, ~/.viminfo

有没有发现,如果我们以 vim 软件来搜寻一个档案内部的某个字符串时,这个字符串会被反白, 而下次我们再次以 vim 编辑这个档案时,该搜寻的字符串反白情况还是存在呢!甚至于在编辑其他档案时, 如果其他档案内也存在这个字符串,哇!竟然还是主动反白耶!真神奇! 另外,当我们重复编辑同一个档案时,当第二次进入该档案时, 游标竟然就在上次离开的那一行上头呢!真是好方便啊~但是,怎么会这样呢?

这是因为我们的 vim 会主动的将你曾经做过的行为登录下来,好让你下次可以轻松的作业啊! 那个记录动作的档案就是: ~/.viminfo !如果你曾经使用过 vim, 那你的家目录应该会存在这个档案才对。这个档案是自动产生的, 你不必自行建立。而你在 vim 里头所做过的动作,就可以在这个档案内部查询到啰~ ^_^

此外,每个 distributions 对 vim 的预设环境都不太相同,举例来说,某些版本在搜寻到关键词时并不会高亮度反白, 有些版本则会主动的帮你进行缩排的行为。但这些其实都可以自行设定的,那就是 vim 的环境设定啰~ vim 的环境设定参数有很多,如果你想要知道目前的设定值,可以在一般模式时输入『 :set all 』 来查阅,不过.....设定项目实在太多了~所以,鸟哥在这里仅列出一些平时比较常用的一些简单的设定值, 提供给你参考啊。

vim 的环境设定参数

:set nu
:set nonu	就是设定与取消行号啊!
:set hlsearch
:set nohlsearch	hlsearch 就是 high light search(高亮度搜寻)。 这个就是设定是否将搜寻的字符串反白的设定值。默认值是 hlsearch
:set autoindent
:set noautoindent	是否自动缩排?autoindent 就是自动缩排。
:set backup	是否自动储存备份档?一般是 nobackup 的, 如果设定 backup 的话,那么当你更动任何一个档案时,则源文件会被另存成一个档名为 filename~ 的档案。 举例来说,我们编辑 hosts ,设定 :set backup ,那么当更动 hosts 时,在同目录下,就会产生 hosts~ 文件名的档案,记录原始的 hosts 档案内容
:set ruler	还记得我们提到的右下角的一些状态栏说明吗? 这个 ruler 就是在显示或不显示该设定值的啦!
:set showmode	这个则是,是否要显示 --INSERT-- 之类的字眼在左下角的状态栏。
:set backspace=(012)	一般来说, 如果我们按下 i 进入编辑模式后,可以利用退格键 (backspace) 来删除任意字符的。 但是,某些 distribution 则不许如此。此时,我们就可以透过 backspace 来设定啰~ 当 backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字了!
:set all	显示目前所有的环境参数设定值。
:set	显示与系统默认值不同的设定参数, 一般来说就是你有自行变动过的设定参数啦!
:syntax on
:syntax off	是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文本档时,如果开头是以 # 开始,那么该行就会变成蓝色。 如果你懂得写程序,那么这个 :syntax on 还会主动的帮你除错呢!但是, 如果你仅是编写纯文本档案,要避免颜色对你的屏幕产生的干扰,则可以取消这个设定 。
:set bg=dark
:set bg=light	可用以显示不同的颜色色调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看,会有不同的样式呢!


总之,这些设定值很有用处的啦!但是......我是否每次使用 vim 都要重新设定一次各个参数值? 这不太合理吧?没错啊!所以,我们可以透过配置文件来直接规定我们习惯的 vim 操作环境呢! 整体 vim 的设定值一般是放置在 /etc/vimrc 这个档案,不过,不建议你修改他! 你可以修改 ~/.vimrc 这个档案 (预设不存在,请你自行手动建立!),将你所希望的设定值写入! 举例来说,可以是这样的一个档案:

[root@www ~]# vim ~/.vimrc
"这个档案的双引号 (") 是批注
set hlsearch            "高亮度反白
set backspace=2         "可随时用退格键删除
set autoindent          "自动缩排
set ruler               "可显示最后一行的状态
set showmode            "左下角那一行的状态
set nu                  "可以在每一行的最前面显示行号啦!
set bg=dark             "显示不同的底色色调
syntax on               "进行语法检验,颜色显示。


在这个档案中,使用『 set hlsearch 』或『 :set hlsearch 』,亦即最前面有没有冒号『 : 』效果都是一样的! 至于双引号则是批注符号!不要用错批注符号,否则每次使用 vim 时都会发生警告讯息喔! 建立好这个档案后,当你下次重新以 vim 编辑某个档案时,该档案的预设环境设定就是上头写的啰~ 这样,是否很方便你的操作啊!多多利用 vim 的环境设定功能呢!^_^

vim 常用指令示意图

为了方便大家查询在不同的模式下可以使用的 vim 指令,鸟哥查询了一些 vim 与 Linux 教育训练手册, 发现底下这张图非常值得大家参考!可以更快速有效的查询到需要的功能喔!看看吧!

tu



转自:http://vbird.dic.ksu.edu.tw/linux_basic/0310vi_3.php
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    功能强大的vim脚本

    vim脚本 功能强大 vim脚本 功能强大 vim脚本 功能强大 vim脚本 功能强大

    vim-configure.tar.gz_vim_vim_configure

    "vim-configure.tar.gz_vim_vim_configure" 是一个包含了 Vim 配置文件的压缩包,旨在帮助用户优化 Vim 的使用体验,提供自动提示、补全功能以及代码高亮等特性。 在 Vim 中配置这些功能,可以使编辑效率大幅提升。...

    vim plugin vim changes to ide update

    【vim plugin vim changes to ide update】这一主题表明我们将探讨如何使用Vim插件来提升其作为集成开发环境(IDE)的功能。在这个过程中,我们将重点分析新增的三个插件:wintagexplorer.vim、echofunc.vim以及vimrc...

    ubuntu-ubuntu升级vim-安装指定版本vim.pdf

    Vim是一款功能强大的文本编辑器,因其高效性和可定制性受到广大开发者的喜爱。在Ubuntu系统中,默认安装的Vim版本可能无法满足某些用户的特定需求,比如需要使用最新版本的功能或者对某个特定版本有依赖关系。本文将...

    vim增强功能脚本 vim配置脚本使用与Windows Linux Unix

    标题和描述提到的"vim增强功能脚本"及"vim配置脚本"正是这种自定义性的体现。 首先,`vimrc`配置文件是Vim的核心,它包含了用户个性化设置的所有指令。当你启动Vim时,这个文件会被读取,使得编辑器按照你的偏好...

    vim7.4安装文件

    Vim(Vi IMproved)是一款强大的文本编辑器,被广泛...总之,Vim 7.4的安装文件涵盖了编辑器的基本源代码、额外功能组件和多语言支持,用户可以根据自己的需求进行选择性安装,以获得一个高度定制化的文本编辑环境。

    vim插件-配合数字电路systemverilog编程时使用

    其次,Vim的自动补全功能是提高编程效率的关键。`systemverilog.vim`可能包含了对SystemVerilog关键词和自定义函数的补全支持。在编写代码时,只需输入部分关键字,然后按特定快捷键(通常是`&lt;C-x&gt;&lt;C-o&gt;`),Vim就会...

    vim编译包安装vim8.2

    5. **插件系统** - 允许用户通过插件扩展Vim的功能,满足个性化需求。 6. **异步I/O** - 使用非阻塞I/O,使得后台任务如编译、查找等操作不会阻塞用户界面。 7. **更多API** - 提供了更多的Vimscript API,方便...

    我的一个vim脚本——增强closetag.vim自动闭合功能

    - **开启/关闭插件功能**:在Vim中,可以使用`:ClosetagEnable`和`:ClosetagDisable`命令来临时启用或禁用插件功能。 - **自定义快捷键**:默认情况下,`closetag.vim`使用`%`键来关闭当前标签或跳转到匹配的标签。...

    Linux中vim安装包

    6. **插件管理**: Vundle、Pathogen和NeoBundle是流行的Vim插件管理器,可以帮助安装和管理第三方插件,提升Vim功能。 7. **映射快捷键**: 可以自定义快捷键,例如:`map &lt;F2&gt; :w&lt;CR&gt;`使F2键保存文件。 8. **配置...

    开源项目-vim-vim.zip

    作为开源项目,Vim在全世界的开发者社区中享有极高的声誉,其设计理念是提供一个高效、可配置且功能丰富的文本操作环境。Vim 8.0版本的发布带来了许多新特性、改进和优化,旨在提高开发者的生产力和用户体验。 首先...

    ubuntu离线安装vim

    2. `vim-doc_8.2.1913-1ubuntu3_all.deb`:包含Vim的文档和帮助文件,对于学习和理解Vim的命令和功能非常有用。 3. `vim-tiny_8.2.1913-1ubuntu3_amd64.deb` 和 `vim-tiny_8.0.1453-1ubuntu1.4_amd64.deb`:这两个是...

    vim环境的配置——模仿sourceInsight功能的Tlist

    Tlist是Vim的一个插件,它能提供类似于Source Insight的功能,帮助用户在代码导航方面提高效率。本篇文章将详细介绍如何配置Vim和Tlist,以实现高效、便捷的代码浏览和跳转。 首先,我们需要安装Vim和Ctags。Ctags...

    Vimscript的经典教程

    Vimscript是一种专门用于定制和扩展Vim文本编辑器的功能的脚本语言。Vim,全称为Vi Improved,是一种高度可定制的文本编辑器,广泛应用于程序员中,尤其受那些追求效率和速度的用户的欢迎。Vimscript作为Vim的原生...

    Vim特别好看的主题全部

    而“plugin”目录则包含了可扩展Vim功能的插件,通过安装这些插件,Vim能集成代码补全、括号匹配、git集成等高级功能,从而将Vim转变成一个功能齐全的开发环境。 Vim主题和插件资源的丰富程度,往往决定了一个...

    Vim 8.2 PDF 中文用户手册(最新)

    由于提供的文件信息中包含了Vim 8.2的PDF用户手册的结构和内容概览,我们可以从提供的内容中提炼出关于Vim编辑器的知识点,这些知识点覆盖了Vim的基本使用、编辑技巧、高级功能以及如何在不同情况下高效使用Vim。...

    vim.zip vim安装包 解压可用

    Vim是Bill Joy的Vi编辑器的增强版本,它在保留了Vi原有的强大功能的基础上,增加了许多新的特性,如语法高亮、自动缩进、宏录制和播放、多窗口编辑、插件支持等。Vim以其高效、轻量级和高度可定制性而闻名,对于代码...

    超强配置带自动补全功能的vim

    在"超强配置带自动补全功能的vim"主题下,我们将深入探讨如何通过配置Vim来实现高效的代码补全功能。 首先,Vim的自动补全功能可以极大地提高开发效率,因为它允许我们在编写代码时快速查找和插入可能的语句、函数...

Global site tag (gtag.js) - Google Analytics