怎样使用vi?

发布网友 发布时间:2022-04-23 06:05

我来回答

2个回答

懂视网 时间:2022-04-10 05:06

[20170617]vim中调用sqlplus.txt

--//以前写过一篇emacs下调用sqlplus的文章,一直想学emacs,受自己掌握vim,对学习它没有兴趣,原链接如下:
--//http://blog.itpub.net/267265/viewspace-1309032/

--//实际上vim也有插件连接数据库,我觉得不好用,一直没这样用.

--//今天在整理vim相关设置时,发现我自己以前也定义一些方法,自己也拿出来分享:

noremap  <Leader>q1 Yp!!sqlplus -s scott/btbtms@test01p<CR>
noremap  <Leader>q2 Yp!!sqlplus -s sys/btbtms@test01p as sysdba<CR>
vnoremap  ;q1       "ay<ESC>gv!sqlplus -s scott/btbtms@test01p<CR>
vnoremap  ;q2       "by<ESC>gv!sqlplus -s sys/btbtms@test01p as sysdba<CR>

--//将以上信息放在vim配置文件中,注意打入命令一定要正确,后面要有分号.当然错误不执行就是了.
--//根据自己需要修改数据库连接串以及用户,口令信息.当然这样存在安全问题.^_^.

select * from dept;
--//移动到哪一行,打入q1

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     DALLAS

@ checkpoint
--//打入q2

REDO:


                                                       检查点队列
  检查点队列                                           on disk rba                                        检查点队列
    脏块数量                                           时间戳              当前时间                       on disk rba scn    检查点心跳
       CPDRT low_rba              on_disk_rba          CPODT               SYSDATE              DIFF_DATE CPODS                   CPHBT  CURRENT_SCN     DIFF_SCN         INDX
------------ -------------------- -------------------- ------------------- ------------------- ---------- ---------------- ------------ ------------ ------------ ------------
          32 1470.13787.0         1470.13971.0         2017-06-17 22:08:11 2017-06-17 22:08:28      17.00 25428734            946961434     25428740            6            0


REDO ( Hexadecimal ):

                                                       检查点队列
  检查点队列                                           on disk rba                                        检查点队列
    脏块数量                                           时间戳              当前时间                       on disk rba scn    检查点心跳
       CPDRT low_rba16            on_disk_rba16        CPODT               SYSDATE              DIFF_DATE CPODS                   CPHBT  CURRENT_SCN     DIFF_SCN         INDX
------------ -------------------- -------------------- ------------------- ------------------- ---------- ---------------- ------------ ------------ ------------ ------------
          32 0x5be.35db.0         0x5be.3693.0         2017-06-17 22:08:11 2017-06-17 22:08:28      17.00 25428734            946961434     25428741            7            0


FULL CHECKPOINT:

rtckp_rba            RTCKP_SCN         CURRENT_SCN     DIFF_SCN RTCKP_TIM           SYSDATE              DIFF_DATE
-------------------- ---------------- ------------ ------------ ------------------- ------------------- ----------
1470.2.16            25426654             25428742         2088 2017-06-17 21:39:53 2017-06-17 22:08:28    1715.00


v$instance_recovery:

     INST_ID ACTUAL_REDO_BLKS TARGET_REDO_BLKS     90%_blks TIMEOUT_BLKS  TARGET_MTTR ESTIMATED_MTTR
------------ ---------------- ---------------- ------------ ------------ ------------ --------------
           1              183            30962       165888        30962            0             63


--//这种方式的缺点就是必须将sql语句写一行内.
--//也可以这样操作,按v或者V,选中文本,进入v模式,然后打入;q1.
--//提醒一下,如果使用shift+方向键选择的进入的是"选择模式",按ctrl+g就可以切换为"可视模式"

select
*
from
dept;

--//这样显示,缺点就是打入的sql语句消失了.你可以先copy 2份再执行.

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     DALLAS

--//另外我还把内容放在寄存器a,b,可以使用"ap ,"bp取出.

--//提醒注意一点执行的语句不要是dml语句,比如insert,update,delete语句,还有truncate语句.因为缺省就是退出就是commit.存在一定的风险.
--//执行select语句一般问题不大.作为测试学习也应该避免dml语句,不然把这种习惯带到生产库出问题就麻烦了.
--//补充1点,还可以适当设置大一点linesize,这样避免出现折行想象.当然还有致命的缺点,每次执行都要打开与关闭数据库的连接.而且连接串是写死的.

--//附上checkpoint.sql脚本
$ cat checkpoint.sql
column low_rba format a20
column low_rba16 format a20
column on_disk_rba format a20
column on_disk_rba16 format a20
column rtckp_rba format a20
column diff_date format 999999.99
column CPOSD_ono_disk_rba_scn format 99999999999999999999999999999999
column cpdrt heading "检查点队列|脏块数量|CPDRT"
column cpodt_on_disk_rba heading "检查点队列|on disk rba|时间戳|CPODT"
column cpods heading "检查点队列|on disk rba scn|CPODS"
column cphbt heading "检查点心跳|CPHBT"
column current_sysdate heading "当前时间|SYSDATE"
set num 12
PROMPT
PROMPT REDO:
PROMPT
SELECT cpdrt ,
       cplrba_seq || ‘.‘ || cplrba_bno || ‘.‘ || cplrba_bof "low_rba",
       cpodr_seq || ‘.‘ || cpodr_bno || ‘.‘ || cpodr_bof "on_disk_rba",
       TO_DATE (CPODT, ‘MM-DD-YYYY HH24:MI:SS‘) cpodt_on_disk_rba,
       SYSDATE current_sysdate,
       ROUND ( (SYSDATE - TO_DATE (CPODT, ‘MM-DD-YYYY HH24:MI:SS‘)) * 800,
              2)
          diff_date,
       CPODS ,
           CPHBT,
       current_scn,
       current_scn - cpods diff_scn,
       indx
  FROM x$kc, v$database
 WHERE CPLRBA_SEQ <> 0;

PROMPT
PROMPT REDO ( Hexadecimal ):
PROMPT

SELECT cpdrt ,
       ‘0x‘||to_char(cplrba_seq,‘FMxxxxxxxx‘) || ‘.‘ || to_char(cplrba_bno,‘FMxxxxxxxx‘)|| ‘.‘ || to_char(cplrba_bof,‘FMxxxx‘) "low_rba16",
       ‘0x‘||to_char(cpodr_seq,‘FMxxxxxxxx‘) || ‘.‘ || to_char(cpodr_bno,‘FMxxxxxxxx‘) || ‘.‘ || to_char(cpodr_bof,‘FMxxxx‘) "on_disk_rba16",
       TO_DATE (CPODT, ‘MM-DD-YYYY HH24:MI:SS‘) cpodt_on_disk_rba,
       SYSDATE current_sysdate,
       ROUND ( (SYSDATE - TO_DATE (CPODT, ‘MM-DD-YYYY HH24:MI:SS‘)) * 800,
              2)
          diff_date,
       CPODS ,
           CPHBT,
       current_scn,
       current_scn - cpods diff_scn,
       indx
  FROM x$kc, v$database
 WHERE CPLRBA_SEQ <> 0;

PROMPT
PROMPT FULL CHECKPOINT:
PROMPT
SELECT rtckp_rba_seq || ‘.‘ || rtckp_rba_bno || ‘.‘ || rtckp_rba_bof
          "rtckp_rba",
       rtckp_scn,
       current_scn,
       current_scn - rtckp_scn diff_scn,
       TO_DATE (rtckp_tim, ‘MM-DD-YYYY HH24:MI:SS‘) rtckp_tim,
       SYSDATE,
       ROUND (
          (SYSDATE - TO_DATE (rtckp_tim, ‘MM-DD-YYYY HH24:MI:SS‘)) * 800,
          2) diff_date
  FROM x$kccrt, v$database;


PROMPT
PROMPT v$instance_recovery:
PROMPT
SELECT inst_id,
       actual_redo_blks,
       target_redo_blks,
       LOG_FILE_SIZE_REDO_BLKS AS "90%_blks",
       LOG_CHKPT_TIMEOUT_REDO_BLKS AS timeout_blks,
       target_mttr,
       estimated_mttr
  FROM gv$instance_recovery;

[20170617]vim中调用sqlplus.txt

标签:使用   设置   执行   语句   配置   let   自己   copy   寄存器   

热心网友 时间:2022-04-10 02:14

你要在什么系统下使用VI 都要区分好的

学习 vi —— “学习清单”式

1、起点

介绍

这篇指南要向你介绍 vi ——一个强大的可视化编辑器——的使用方法。通过一种特殊的循序渐进的“作弊纸”模式,这篇指南让你在短时间内迅速成为 vi 高手。在这篇指南里面,你将学到如何浏览、编辑文字、使用“插入”模式、复制粘贴以及使用一些重要的 vi 插件(譬如:可视化插件)和多窗口编辑。

如果你不知道,或者对 vi 感到不爽,那么赶快利用这篇指南,让这个 Linux/UNIX 平台最流行、最强大的可视化浏览器为你的工作添油加速吧!

关于这篇指南

学习 vi 的最大难点在于——vi 的繁多的指令。为了有效利用 vi,你需要记住其中不少的一些。这可能需要不少时间;而偏偏这篇指南的目的之一就是在于利用尽可能少的时间。所以,从一开始,我们将面对一个挑战——我怎么帮助你在短期内记住大量的命令。

为了在这篇指南的过程中解决这个难题,我们会逐渐一点一点积累起一张关于 vi 的知识清单。这张清单会包含所有重要的 vi 命令。当你完成了这份指南,当你忘记某个 vi 命令的时候,你可以很轻松得从这份清单中查找特定的命令。逐渐地,随着你记住这些命令,你会越来越少依赖这份清单。通过使用“知识清单”技术,你可以前所未有的速度学会使用 vi !

学习过程

在这份指南中,我会使用一些帮助你学习的办法。首先,如同你所期待的,我会介绍一条命令是如何工作的。然后,我会请你在 vi 中练习使用这条命令,之后把这条命令记录在知识清单中,以备日后参考。一一执行这些步骤对于你快速学习 vi 有莫大的帮助。试验并且记录这些命令会帮助你记住它们。

介绍 vim

Vi 有很多不同版本,而我要向你介绍的是一个叫做 vim 的版本。vim 非常流行;它有相当多的扩展模块使得 vi 更棒(当我展示一个 vim 独有的命令的时候,我会特别指出)。如果你需要安装 vim,你可以从 www.vim.org 得到它。除了一个增强版本的命令行 vi,vim 还有一个叫做 gvim 的、漂亮的、基于 GTK+ 的 GUI 版本。下面是一张我系统中 gvim 的截图:

插图 1.1:VIM 截图
[img]http://www.ibiblio.org/web-gentoo/images/vishot.png[/img]

如果你是一个 vim 新手,试着在你的系统上运行 gvim。从 GUI 使用可以让新手觉得轻松一点。

2、第一步

打开一个文件

在使用 vi 编辑文件之前,你需要知道如何使用 vi 浏览一个文件。vi 有很多移动命令,而我们会接触它们中的不少。在指南的这部分中,找一个无关紧要的文本文件,然后用 vi 打开它:

代码 2.1: 用 vi 装入一个文件
[code]$ vi myfile.txt [/code]

如果你安装了 vim,输入 vim myfile.txt。如果你决定使用 gvim,输入 gvim myfile.txt。myfile.txt 是你系统中的一个文件名。

在 vi 中

启动 vi 之后,你应该看到文件的一部分显示在你的显示屏上。恭喜——你进入了 vi!不像其它很多编辑器,当 vi 启动的时候会进入一个特别的“命令模式”。这意味着如果你键盘上的 1,vi 不会在当前光标位置输入一个 1,而会将光标向右移动一位。在命令模式,从键盘输入的字符会作为命令传递给 vi,而不是向文件中插入文字。移动命令是所有命令中最基本的一类,让我们来看一看。

3、来回移动

在 vi 中移动,第一部分

在命令模式中,你可以用 h、j、k 和 l 键将光标分别向左、下、上和右侧移动。如果你使用的是一个现代版本的 vi,你也可以用方向键达到相同的目的。h、j、k 和 l 键很有用:当你习惯了它们的时候,你可以不必将你的手从键盘基本键位移开就可以在文件中移动。试着使用 h、j、k 和 l 键(以及方向键)在文件中移动光标。试着用 h 移动到行首。注意 vi 不允许你用 h 键从行首自动退回到上一行。相似的,你不能用 l 从行末自动转到下一行。

在 vi 中移动,第二部分

vi 为跳至行首、尾提供了特殊的快捷键。你可以按0(零)跳到行首,$ 跳到行末。试试看。因为 vi 有这么多的移动命令,我们可以把它作为一个好的“分页”程序(就像 more 或者 less 命令)。把 vi 作为一个分页程序也可以帮助你飞快地学习这些移动命令。

你也可以用 <CTR>F 和 <CTR>B 向前后一次移动一整页。新的一些版本(譬如 vim)也支持用 PGUP 和 PGDOWN 键达到相同的目的。

按单词移动,第一部分

vi 也允许你按照单词长度来左右移动。要移动到下一个单词的第一个字母,按 w 键。到下一个单词的最后一个字母,按 e 键。移动到前一个单词的第一个字母,按 b 键。试试。

按单词移动,第二部分

试过这些移动命令之后,你可能注意到,vi 把 foo-bar-oni 这样的单词作为五个单独的单词!这是因为 vi 默认以空格或者标点符号作为单词分界,是以 foo-bar-oni 备分解成五个单词:foo、-、bar、- 和 oni。

有的时候这是你所期望的,有时候不是。幸运的是,vi 能够理解“长单词”的概念。vi 仅仅以空格或换行作为长单词的分界。这意味着虽然 foo-bar-oni 会被当作五个 vi 单词,它也可以作为一个长单词处理。

按单词移动,第三部分

你可以使用大写的单词移动命令在长单词之间跳跃移动。W 跳到下一个长单词的第一个字母,E 跳到最后一个字母,B 移动到前一个单词的第一个字母。试试看,和普通单词范围的移动进行比较,直到你明白它们的区别。

更大范围的移动

在我们把所学过的东西归纳到清单里面之前还有几个命令要看看。你可以用 ( 和 ) 移动到前后两句的开始。此外,用 { 或 } 可以跳到当前或者下一个段落的开头。试试它们。

4、退出
我们已经说了基本的移动命令,但是还有一些命令是你需要知道的。输入 :q 可以退出 vi。如果这样不能退出,可能是因为你修改过这个文件。要让 vi 退出而不保存修改,输入 :q!。这样你应该退出到了命令提示符。

在 vi 中,以 : 开头的命令被称为 ex-模式命令。这是因为 vi 内置了一个叫做 ex 的非可视化的编辑器。我们可以像使用 sed 一样地使用 ex 进行按行编辑文本。不仅如此,它也可以用来退出 vi,就像我们刚刚看见的。当你在命令模式按下 Q 键,就可以进入 ex 模式。这时,你会看见一个提示符 :;如果你按下回车键,整个屏幕会向上滚动。要回到熟悉的 vi 模式,只要输入 vi 然后回车就可以了。

5、知识清单

清单的开头

我们已经提到了很多命令;现在到了把它们加入清单的时候了。你可以用一张 A4 或者 US 信纸来制作这份清单,因为我们会在里面写很多内容!这是一份我的清单,里面包含了上面提到的所有命令。尽可能参考我的格式,这样我们可以把所有东西都集中在一张纸上。

插图 5.1:知识清单
[img]http://www.ibiblio.org/web-gentoo/images/vicheat-first.png[/img]

繁复的 vi (Miscellaneous vi)
让我们继续我们快速的命令行学习过程。在命令模式你可以用 G 跳至特定行。要跳到文件的第一行,输入 1G。注意 G 是大写字母。

如果你要搜索某个特定字符串模式在文件中的位置,输入 /<regexp> 然后回车。用一个正则表达式来替换你要搜索的模式。如果你不会使用正则表达式,不用烦恼——直接输入 /foo 会移动到下一个 foo 出现的地方。唯一需要注意的是,如果你需要寻找字面上的 ^、.、$ 或者 \,你需要在它们之前加上一个反斜线(\)。譬如,/foo\.gif 会寻找“foo.gif”的下一个出现位置。

要继续向下寻找,按 n。要继续向上寻找,输入 N。还是一样,用你自己的 vi 编辑器试验这些命令。你也可以用 // 来重复上一次的搜索。

6、保存和编辑

“保存”和“另存为...”
我们提到过,你可以用 ex 命令 :q 退出 vi。如果你要保存你做的改变,输入 :w。如果你要保存你的更改后的文本到另外一个文件,输入 :w filename.txt 会把文本保存为 filename.txt。如果你想保存后退出,输入 :x 或者 :wq。

在 vim (以及其它一些高级的编辑器,例如 elvis):w,你可以同时打开几个缓存。要在一个新窗口中打开文件,输入 :sp filename.txt。filename.txt 会在一个分割开的新窗口中打开以供编辑。要在窗口之间切换,输入 <CTR>w<CTR>w(按两次 control-w)。:q、:q!、:w 和 :x 中的任一个都只作用于当前活动的窗口。

简单的编辑

现在是我们学习一些简单编辑命令的时候了。我们将要提到的命令被称为“简单”是因为这些命令只需要你呆在命令模式。更复杂的编辑命令会让你自动进入插入模式——一个允许你从键盘输入文本的模式。我们会在一会儿提到这些内容。

现在,试着移过一些字符然后反复按 x 键。你会看见 x 会删除当前光标位置的字符。现在移动到你打开的文件的一个段落中间的某处然后点 J(大写)。你会发现 J 命令让 vi 把下一行接在这一行的结尾。现在,把光标移过一段文字然后点 r,再输入一个新的字母,你会看见原来的内容被替换了。最后,移动到文件的任一位置然后输入 dd。你会发现 dd 会删除当前一行文字。

替换和删除

你可以点 . 来重复任何一个编辑命令。如果你试试,你会看见 dd... 会删除四行文字,而 J...... 会连接四行(译者注:搞不懂ing,哪位大侠解释一下为什么不是六行)。和往常一样,vi 提供了非常顺手的快捷方式。

要删除文本,你可以用 d 命令结合任何的移动命令。例如,dw 会删除从当前光标位置到下一个单词开始处的内容;d) 会删除到下一个句子结束的地方;d} 会删除这个段落的剩余内容。试着用 d 命令和其它编辑命令直到你熟悉了它们。

撤销!

我们正在试验删除命令,而这正是一个学习撤销改变的好时候。按 u 键,传统的 vi 会仅仅允许你撤销最后一次操作。然而,新版本的 vi 譬如 vim 允许你用重复的 u 命令撤销你对文件作出的更改。把 d 和 u 命令一起试试。

升级你的知识清单

到了更新你的知识清单的时候了!添加上我们刚刚说过的那些命令,你的知识清单应该看起来是这个样子:

插图 6.1:加入了编辑命令的知识清单
[img]http://www.ibiblio.org/web-gentoo/images/vicheat-edit.png[/img]

7、插入模式

到目前为止,我们知道了如何在 vi 中移动光标,进行读写文件,还有一些基本的编辑操作。但是,我还没有向你们展示如何输入自由格式文本!这是我故意的,因为 vi 的插入模式在开始的时候会显得有些复杂。不过,一旦你熟悉了插入模式,它的复杂度(以及可用性)会成为非常有用的东西。

在 vi 的插入模式,你将可以直接将文字输入到屏幕,就像其它很多可视化编辑器一样。当你完成了你输入的内容,可以用 Esc 键退回到命令模式。i 或 a 可以让你进入插入模式。如果按 i,你的文本会插入在当前字符之前;而 a 会让你的文本插入在当前字符之后。记住,完成输入之后,用 Esc 键回到命令模式。

插入模式的优点

去试试 a 和 i 命令。按其中任意一个,输入一些文字,然后按退出键回到命令模式。按 a 或 i 之后试着按回车键看看会发生什么。试着用方向键和 Del 键感觉一下插入模式怎么工作。利用方向键和 Del 键,你可以不必退出到命令模式而完成相当多的编辑工作。

插入选项

这里有其它一些方便的进入插入模式的方法。按 A(大写)从当前一行的末尾开始插入内容而不管你当前的位置。相似的,I(大写)让你在当前行的开始插入。按 o 会在当前一行的下方新建一个空行以供插入,而 O 会在上方建立新行。要用新的空白行替代当前整行文字,输入 cc。要替代从当前位置到当前行的结束,输入 c$。要替换从当前位置到行的开始,输入 c0。

除了上述提到的功能,上面的所有命令都会让你进入 vi 的插入模式。输入完成之后,按 Esc 键回到命令模式。

改变文本

我们在前面尝试过 c 修改命令,例如 cc、c0 和 c$。cc 是修改命令的一个特殊形式,类似 dd。c0 和 c$ 命令是组合使用修改命令和移动命令的示例。从这个角度来看,c 和 d 的工作方式相似,除了一点:它让你停留在插入模式。这样,你可以输入用来替代删除部分的文本。试着把一些移动命令和 c 结合起来在你的文件中试试看(例如:cW、ce、c( )。

8、复合命令

当你开始使用复合(“combo”)命令(类似 d{ 和 cw 之类)的时候,vi 才真正显示它的强大。不仅是这些命令,我们还可以用一个数字与移动命令组合,例如 3w 会让 vi 向右侧跳过三个单词。12b、4j 是其它一些数字和移动命令形成的组合命令。

vi,除了支持(数字)(移动命令)组合之外,还允许 d 和 c 与一个数字或者移动命令组合。d3w 会删除下面三个单词,d2j 会删除当前和下面两行,等等。试试这些 c 和 d 的组合命令,看看 vi 能让你的文本编辑变得如何简单轻松。当这些命令变得顺手的时候,你将可以以一种难以置信的速度编辑文件。

更新知识清单

又到了更新知识清单的时间。它现在看起来应该是这个样子:

插图 8.1:加入了复合命令的知识清单
[img]http://www.ibiblio.org/web-gentoo/images/vicheat-compound.png[/img]

提高生产力的特色

到目前为止,我们已经学会了移动光标、保存和退出、进行简单的编辑和删除操作,以及使用插入模式。利用知识清单上面的内容,你几乎可以用 vi 完成所有的任务。

不过,vi 还有许多更强大的命令。在这个章节中,你将学会如何剪切、复制和粘贴,搜索和替换,以及使用“自动缩进”等特点。这些命令让 vi 变得更有趣而有用。

可视化模式

使用剪贴的最方便的办法是使用可视化模式,一个加入现代版本 vi(譬如 vim 和 elvis)的特殊模式。你可以把可视化模式想象成“高亮文本”模式。当文本被反白,我们可以复制或者删除它,然后粘贴。如果你在使用 gvim,你可以轻松地按住鼠标左键拖动来达到反白一段文字的效果:

插图 8.2:VIM 与反白文本
[img]http://www.ibiblio.org/web-gentoo/images/vihighlight.png[/img]

除此之外,你也可以通过按 v (如果你通过控制台调用 vi,这可能是你唯一的选择)。然后,用移动命令(尤其是方向键)控制光标,你可以反白一段文字。反白之后,我们就可以复制或者剪切这段文字了。

如果要复制这段文字,按 y(表示“yank”,猛拉)。要剪切,点 d。你会就此回到命令模式。现在,移动到你想要粘贴刚刚复制/剪切的内容的地方,然后按 P 在光标后插入内容,或者 p 将内容插入在光标之前。瞧,剪贴复制,就是这么轻松!在进入下面一小节内容之前,多试试剪切复制粘贴操作。

替换文本

我们用 ex 模式进行文本替换。如果你要替换当前行出现的第一个匹配模式,输入 :s/<regexp>/<replacement>/ 然后按回车。这里 <regexp> 是你要匹配的模式,而 <replacement> 是你用来替换的字符串。要替换当前行的所有匹配处,输入 :s/<regexp>/<replacement>/g 然后回车。要替换文件中所有匹配位置(这通常是你需要的),输入 :%s/<regexp>/<replacement>/g。如果你希望在全局替换过程中,vi 在每次替换之前进行提示,输入 :%s/<regexp>/<replacement>/gc (c 表示 confirm 确认)然后回车。

缩排

vi 支持自动缩排;当你编辑程序源码的时候可能需要这个功能。多数现代版本的 vi(例如 vim)会在你打开一个源码文件(例如 .c 文件)自动启用自动缩排功能。当自动缩排启动之后,你可以用 <CTR>d(control-d)向左移动一个缩排级别,或者 <CTR>t(control-t)向右移动一个缩排级别。如果自动缩排模式没有自动启用,你可以用 ex 模式命令 :set autoindent 来启动它。你还可以用 :set tabstop 命令告诉 vi 你习惯的 tab 宽度;:set tabstop=4 是一个相当流行的设置。

我们的最终版知识清单

Well,我们完成了我们的 vi 指南!加入了所有的高级编辑功能之后,这份清单应该看着像这个样子:

插图 8.3:最终版知识清单
[img]http://www.ibiblio.org/web-gentoo/images/vicheat-final.png[/img]

把这份清单放在手边,然后开始用 vi 编辑文档、写 email。当你需要的时候参考这份清单;你会发现在这一周之内,你会记住几乎所有这些命令,而 vi 的生产力会让你飞翔天际!

如果你像把 vi 作为你的默认编辑器,修改你的 /etc/rc.conf

代码片断 8.1:设置 vi 成默认编辑器
(设置 EDITOR 为你选择的编辑器。)
#EDITOR="/bin/nano"
EDITOR="/usr/bin/vim"
#EDITOR="/usr/bin/emacs"

参考资料

这里有一些你可能认为有助于继续学习 vi 的资料:
·vi 主页,关于 vi 的一切的好地方
·vim 主页是你寻找 vim 相关信息的地方
·如果你在找一本好的过时的书,《Learning the vi Editor, 6th Edition》会是一个不错的选择,覆盖了不少 vi 和 vi 变种的信息。

关于这份文档

这份原始文档作为 Westtech Information Services 的所有,最初发表在 IBM developerWorks。这一份是更新过的文档,包含了很多 Gentoo Linux 文档团队的改进。

参考资料:http://www.yesadmin.net/28_info/32977/

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com