首页 > 系统运维 > vi 技巧和诀窍:令人刮目相看的 10 个超酷命令
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

vi 技巧和诀窍:令人刮目相看的 10 个超酷命令

转自:http://www.ibm.com/developerworks/cn/aix/library/au-vitips.html

对作者表示感谢,如果您觉得侵犯您的权利请与我联系。

在使用 vi 编辑器时 — 无论是初次使用的用户,还是有经验的用户 — 大多数人往往只掌握核心命令集,这些命令可以执行最常用的功能:导航或保存文件;插入、更新、删除或搜索数据;退出但不保存修改。

但是,vi 编辑器极其强大,特性和功能非常丰富。即使在多年使用 vi 之后,您仍然可能会发现有不知道的新命令。本文讨论的命令就属于不太为人所知的命令,但是它们可以简化您目前采用的操作方法,让您的工作方式更高效,或者让您能够完成原来不知道可以用 vi 完成的操作。

vi 编辑器的许多选项可以控制编辑会话的外观和感觉。使用 :set 命令修改 vi 中的会话设置。按 Escape 键进入命令模式之后,可以使用 :set all 命令显示选项和设置的列表。

可以设置的选项之一是 number,它的作用是打开和关闭行号(见 清单 1)。

#

# Internet host table
#
::1     localhost
127.0.0.1       localhost       loghost
192.168.0.6     centos5
192.168.0.10    appserv
192.168.0.11    webserv
192.168.0.12    test
192.168.0.5     solaris10       # Added by DHCP
~
~
~
:set number

这个命令让 vi 在当前编辑的文件中的每个记录上显示行号。让 vi 进入命令模式之后,可以输入 :set number 并按回车来打开行号(见清单 2)。

 1  #
     2  # Internet host table
     3  #
     4  ::1     localhost
     5  127.0.0.1       localhost       loghost
     6  192.168.0.6     centos5
     7  192.168.0.10    appserv
     8  192.168.0.11    webserv
     9  192.168.0.12    test
    10  192.168.0.5     solaris10       # Added by DHCP
~
~
~
:set number

可以使用 :set nonumber 命令关闭行号。还可以使用这个命令和 :set number 命令的简写,即 :set nu 和 :set nonu。
如果需要快速计算要用 vi 函数处理的行数,显示行号会非常有帮助。当行数很多,可能跨多个屏幕时,行号尤其有用。另外,有时候您知道要处理的行范围,但是需要查明要在 vi 命令中使用的初始和结束行号。
如果希望每次进入 vi 会话时都显示行号,那么在主目录中的 .exrc 文件中添加 set number 行。
回页首
自动缩进
在用某些编程语言编写代码时,缩进是样式的重要部分,可以确保代码的可读性更好。如果需要,可以在 vi 编辑器中根据编程语言的样式设置自动缩进。使用 autoindent 打开或关闭自动缩进(见 清单 3)。

#!/bin/ksh
#
#
for file in /etc/*
do
        if [[ -f ${file}  ]] ; then
                 echo "${file} is a file"

~
~
~
~
~
:set autoindent

在此之后,如果在一行的开头输入空格或制表符,那么后续的新行将会缩进到相同的位置。在命令模式下,输入 :set autoindent,然后按回车打开自动缩进。通过设置 shiftwidth 确定缩进级别。例如,:set shiftwidth=4 把每级缩进设置为四个空格(见 清单 4)。

清单 4

#!/bin/ksh
#
#
for file in /etc/*
do
    if [[ -f ${file}  ]] ; then
        echo "${file} is a file"
    elif [[ -d ${file} ]] ; then
        echo "${file} is a directory"
    fi
done
~
~
:set shiftwidth=4

在命令模式下,可以使用 >> 命令让现有的一行增加一级缩进,使用 << 命令减少一级缩进。在这些命令前面加上一个整数,即可让多行增加或减少一级缩进。例如,把游标放在 清单 4 中第 6 行的开头,进入命令模式之后,输入 5>> 就会让下面五行增加一级缩进。清单 5 显示结果。

#!/bin/ksh
#
#
for file in /etc/*
do
        if [[ -f ${file}  ]] ; then
            echo "${file} is a file"
        elif [[ -d ${file} ]] ; then
            echo "${file} is a directory"
        fi
done
~
~

可以使用 :set noautoindent 命令关闭自动缩进。还可以使用这个命令和 autoindent 命令的简写,即 :set ai 和 :set noai。还可以使用 :set ai sw=4 在一个命令中打开缩进并设置缩进级别。

如果希望每次启动 vi 会话时都启用自动缩进并把缩进级别设置为四个空格,那么在主目录中的 .exrc 文件中添加 set ai sw=4 行。

分页: 1 2
  1. 还没有评论
评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed