`
fantaxy025025
  • 浏览: 1313335 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Linux 的vi/vim的一点使用技巧

阅读更多

己经常使用到的vi/Vim使用技巧整理一下,希望对大家有用:

 

(一) 通用操作:

1.    指令模式到输入模式指令:

a append ) :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。

A : 从光标所在列最後面的地方开始新增资料。

i insert ): 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。  

I :从光标所在列的第一个非空白字元前面开始插入资料。

o open ):在光标所在列下新增一列并进入输入模式。

O: 在光标所在列上方新增一列并进入输入模式

s : 删除光标所在字元,并进入输入模式

S : 删除光标所在的列,并进入输入模式

2.    编辑指令

x : 删除光标所在字符。

dd :删除光标所在行。

r :修改光标所在字符,r 后接修正的字符。

R : 替换状态,新增文字覆盖原先文字,直到按 [ESC] 为止。

d 删除(delete)

y 复制(yank)

p 放置(put)

c 修改(change)

3.    移动按键

在指令模式下移动光标的基本指令是 h, j, k, l

u :恢复被删除的文字

shift + u: 恢复光标所在列的所有改变

ctrl+d: 向下半页

ctrl+f: 向下一页

ctrl+u: 向上半页

ctrl+b: 向上一页

shift+h: 移动到视窗的第一列

shift+m: 移动到视窗的中间列

shift+l: 移动到视窗的最後列

b 移动到下个字的第一个字母

w 移动到上个字的第一个字母     

e 移动到下个字的最後一个字母

^ 移动到光标所在列的第一个非空白字元

$ 光标所在位置到该列的最後一个字母

0 光标所在位置到该列的第一个字母

) 光标所在位置到下个句子的第一个字母

( 光标所在位置到该句子的第一个字母

} 光标所在位置到该段落的最後一个字母

{ 光标所在位置到该段落的第一个字母
''''''''  此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置.

''''.  此命令相当好使, 它移动光标到上一次的修改行.

`.  此命令相当强大, 它移动光标到上一次的修改点.

4.    拷贝, 删除与粘贴

  vi y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令

结合的, 看几个例子就能够明白了.

yw              表示拷贝从当前光标到光标所在单词结尾的内容.

dw              表示删除从当前光标到光标所在单词结尾的内容.

y0              表示拷贝从当前光标到光标所在行首的内容.

d0              表示删除从当前光标到光标所在行首的内容.

y$              表示拷贝从当前光标到光标所在行尾的内容.

d$              表示删除从当前光标到光标所在行尾的内容.

yfa             表示拷贝从当前光标到光标后面的第一个a 字符之间的内容.

dfa             表示删除从当前光标到光标后面的第一个a 字符之间的内容.

特殊地:

yy              表示拷贝光标所在行.

dd               表示删除光标所在行.

D               表示删除从当前光标到光标所在行尾的内容.

关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询.

 

(二) vi/vim 的设置项(输入到/etc/vimrc 或者~/.vimrc 文件中产生效果)

“双引号开始的行为注释行,下同

set nocompatible       “去掉讨厌的有关vi 一致性模式,避免以前版本的一些bug 和局限

set number             “显示行号

filetype on            “检测文件的类型

set history=1000       “记录历史的行数

set background=dark    “背景使用黑色

syntax on               “语法高亮度显示

set autoindent          vim 使用自动对齐,也就是把当前行的对起格式应用到下一行;

set smartindent         “依据上面的对起格式,智能的选择对起方式,对于类似C 语言编

set tabstop=4           “设置tab 键为4 个空格

set shiftwidth=4       “设置当行之间交错时使用4 个空格

set expandtab           "设置tab键扩展为空格

set showmatch          “设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

set guioptions=T       “去除vimGUI 版本中的toolbar

set vb t_vb=           “当vim 进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声

set ruler              “在编辑过程中,在右下角显示光标位置的状态行

set hlsearch            “高亮显示:

set incsearch

 

(三) autocmd

   这个命令十分的强大, 可以用这个命令实现对不同的文件格式应用不同的配置; 可以

在新建文件时自动添加上版权声明等等. 这些命令一般定义在 ~/.vimrc 这样的配置文件

里面. 由于他很强大, 所以我不能给出很具体的说明, 只能举几个例子, 详细的请看帮助.

 

:autocmd!               删除所有之前的自动命令.

autocmd FileType        java  source ~/.vim/files/java.vim

autocmd FileType        java  source ~/.vim/files/jcommenter.vim

   以上两条命令让我在打开 java 文件时才应用后面提到的两个配置文件.

autocmd BufNewFile      *.java  0r ~/.vim/files/skeletons/java.skel

   以上这条命令让我在新建 java 文件时自动加入 java.skel 文件的内容.

autocmd BufNewFile      *.java  normal gnp

   以上这条命令让我在新建 java 文件时自动运行 gnp 命令, 这个命令进行一些特殊化

   处理, 比如将新 java 文件中的 __date__ 替换成今天的日期什么的.

 

  <<                  输入此命令则光标所在行向左移动一个 tab.

  >>                  输入此命令则光标所在行向右移动一个 tab.

  5>>                 输入此命令则光标后 5 行向右移动一个 tab.

  :12,24>             此命令将12 行到14 行的数据都向右移动一个 tab.

  :12,24>>            此命令将12 行到14 行的数据都向右移动两个 tab.

 

(四) 替换

  替换是 vi 的强项, 因为可以用正规表达式来匹配字符串. 以下提供几个例子.

:s/aa/bb/g      将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb

:s/\/bb/g  将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词

:%s/aa/bb/g     将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb

:12,23s/aa/bb/g 将从12 行到23 行中出现的所有包含 aa 的字符串中的 aa 替换为 bb

:12,23s/^/#/    将从12 行到23 行的行首加入 # 字符

:%s= *$==       将所有行尾多余的空格删除

:g/^\s*$/d       将所有不包含字符( 空格也不包含) 的空行删除.

 

(五) 多文件编辑

  在一个 vim 程序中打开很多文件进行编辑是挺方便的.

:sp(:vsp) 文件名    vim 将分割出一个横() 向窗口, 并在该窗口中打开新文件.

                     vim6.0 开始, 文件名可以是一个目录的名称, 这样, vim

                     把该目录打开并显示文件列表, 在文件名上按回车则在本窗口打

                     开该文件, 若输入 O 则在新窗口中打开该文件, 输入 ? 可以看

                     到帮助信息.

:e 文件名           vim 将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.

c-w-w               vim 分割了好几个窗口怎么办? 输入此命令可以将光标循环定位到各个窗口之中.

:ls                 此命令查看本 vim 程序已经打开了多少个文件, 在屏幕的最下方

                     会显示出如下数据:

                     1   %a      "usevim.html"         162

                     2   #       "xxxxxx.html"         0

                     其中:

                     1             表示打开的文件序号, 这个序号很有用处.

                      %a            表示文件代号, % 表示当前编辑的文件,

#             表示上次编辑的文件

                      "usevim.html" 表示文件名.

                     162        表示光标位置.

:b 序号( 代号)       将指定序号( 代号) 的文件在本窗口打开, 序号( 代号) 是用 :ls 命令看到的.

:set diff           此命令用于比较两个文件, 可以用

                     :vsp filename

                      命令打开另一个文件, 然后在每个文件窗口中输入此命令, 就能看到效果了.

 

(六) 数字与命令

  vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行

号定位. :

5fx             表示查找光标后第 5 x 字符.

5w(e)           移动光标到下五个单词.

5yy             表示拷贝光标以下 5 .

5dd             表示删除光标以下 5 .

y2fa            表示拷贝从当前光标到光标后面的第二个a 字符之间的内容.

:12,24y         表示拷贝第12 行到第24 行之间的内容.

:12,y           表示拷贝第12 行到光标所在行之间的内容.

:,24y           表示拷贝光标所在行到第24 行之间的内容. 删除类似.

 

(七) 组合键:

ctrl+p(ctrl+n)    向上() 搜索开头与其匹配的单词并补齐, 在所有这个 vim 程序中打开的文件中进行匹配。

ctrl+x+l          快速补齐整行内容, 但是仅在本窗口中出现的文档中进行匹配.

ctrl+x+f          这个命令表示补齐文件名, 如:/ho 自动匹配出/home/

abbr                即缩写. 在编辑模式中用一个缩写代替另一个字符串. c 中打印printf("",)

                  可用 缩写来减少敲字。在命令行输入::abbr pf printf("",); 以后在输入pf

                  再输入 (enter/tab/ 空格), 它就会自动扩展为printf("",);

 

(八) 添加命令:r

    :r filename     该命令将filename 文件的内容自动添加到光标所在位置的后面

:r !cmd         其中cmdshell 命令,该指令将cmd 的结果添加到光标所在位置的后面

 

(九) vi ctags

    将Linux的vi和ctags工具结合起来使用时比较常见的。

    首先需要某一个目录中,在控制终端输入:

     ctags -R * 该命令在当前目录下产生一个“tags ”文件, 将该目录的文件和对应的子目录的文件的代码之间的标记关联建立起来。

 

    然后再控制终端打开一个文件, 可以直接打开某一个标志所在的文件, 并指向这个标志:

vi -t tag ( 请把tag 替换为您欲查找的变量或函数名) ,该命令将vi 直接定位到tag 标志定义的地方。 也可以通过vi filename 直接打开某一个文件。

 

    打开某一个文件之后,在可以在vi 环境中进行相关的操作了。

Ctrl + ]    把光标移到变量名或函数名上,然后按下“Ctrl+] ”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行

Ctrl + T        用“Ctrl+t ”可以退回原来的地方。即使用户使用了N 次“Ctrl+] ”查找了N 个变量,按N 次“Ctrl+t ”也能回到最初打开的文件,它会按原路返回 。

 

注意!运行vim 的时候,必须在“tags ”文件所在的目录下运行。否则,运行vim 的时候还要用“:settags= ”命令设定“tags ”文件的路径,这样vim 才能找到“tags ”文件。在完成编码时,可以手工删掉tags 文件

 


在vi内部使用
:!ctags file.c 该命令将在当前目录下创建一个tags名称文档,文档中包括了file.c文档中定义的函数信息。
:!ctags *.c    创建当前目录下任何C源文档的tags文档
:tag name      能够定位到name函数定义处 

 

 

参考:http://blog.mcuol.com/User/wjh_84/Article/38730_1.htm

 

O

O

O

O

O

O

 

分享到:
评论

相关推荐

    Learing the Vi/Vim Editors(the 7th Edition).pdf

    10. **学习资源和社区**:作者还会介绍一些在线资源和社区,供读者进一步学习和交流Vim技巧。 总之,《Learning the Vi/Vim Editors (7th Edition)》是一本全面且深入的指南,它将带你从Vi/Vim的新手逐步成长为熟练...

    精心整理的vi/vim资料集合

    提供的22个资料涵盖了vi/vim的基础到高级使用,包括书籍、技巧和配置资料,对于初学者和希望提升技能的用户非常有帮助。建议从基础操作开始学习,逐步掌握命令模式和插入模式的切换,熟悉常用的编辑命令,然后逐渐...

    史上最全vi/vim使用手册/教程/技巧/键盘图等

    vim(Vi Improved)是一款强大的文本编辑器,源自早期的vi编辑器,广泛应用于Linux和Unix系统中。它以其高效、命令行操作和丰富的功能著称,是程序员和系统管理员的必备工具。本教程将涵盖vim的基础使用、进阶技巧...

    学习vi和vim编辑器.pdf_vim实用_vi_vim_

    **vi和vim编辑器详解** ...vi和vim编辑器因其高效和灵活性在IT行业中有着广泛的使用。熟练掌握vim不仅能提高代码编写效率,还能提升在各种环境下的适应性。不断实践和探索,你会发现vim成为你不可或缺的工具。

    详解Linux常用命令的用法(二)————文本编辑器命令vi/vim

    掌握vi/vim的使用技巧,不仅可以提高工作效率,还能在没有图形界面的环境中进行有效的文本编辑。尽管初学者可能会觉得vi/vim的学习曲线较陡峭,但一旦熟练掌握,你会发现它是一个无可替代的工具。所以,无论是对...

    vi&vim常用操作学习

    - 实战练习:通过实际项目来练习 vi/vim 的使用技巧。 - 社区论坛:参与 Stack Overflow、Reddit 等社区的讨论,获取帮助和建议。 - 在线课程:许多在线平台提供免费或付费的 vi/vim 教程。 通过不断实践和探索,你...

    vi-vim编辑器使用

    本文将详细介绍Vi/Vim编辑器的基本使用方法及常用技巧。 #### 二、Vi/Vim编辑器的模式 Vi/Vim编辑器拥有六种基本模式: 1. **普通模式**:默认启动模式,用户可以通过键盘输入编辑命令进行文本操作。 2. **可视...

    学习vi和vim编辑器_第7版_中文+英文_PDF

    《学习vi和Vim编辑器(中文版... vi或Vim,是使用Linux或Unix时的必要知识,无论使用哪种平台,《学习vi和Vim编辑器(中文版第7版)》都是基础中的基础。 《学习vi和Vim编辑器(中文版第7版)》由罗宾斯、汉娜和拉姆编著。

    [Ubuntu.Linux.基础视频教程].5.2.Vi与Vim编辑器介绍

    5. **学习路径:** 初学者通常会从基础操作开始,逐步掌握Vi/Vim的命令,然后学习使用.vimrc配置文件定制编辑器,最后可能涉及插件管理和高级技巧。 6. **实践应用:** 在Ubuntu Linux中,Vi/Vim是系统默认的文本...

    ViVim编辑器使用《博雅运维Linux全套笔记》

    本笔记将详细介绍如何使用Vi/Vim编辑器进行有效的文本编辑,覆盖基础操作、编辑技巧、命令模式应用等,旨在帮助运维人员提高Linux下文本编辑的效率。 首先,Vi编辑器分为三种模式:命令模式、插入模式和末行模式。...

    linux_vi(vim)常用命令汇总.rar

    Linux中的`vi`(Visual Editor)是一款强大的文本编辑器,其增强版本`vim`(Vi Improved)更是广泛被系统管理员和开发人员所使用。这款编辑器具有丰富的功能,包括在命令模式和插入模式之间切换、查找与替换、多窗口...

    中文VI和VIM键盘图.pdf格式/无限放大都清晰-自己画的矢量图

    VI和VIM作为广泛使用的文本编辑器,在Unix/Linux环境下尤其流行。它们以其高效性、强大的命令体系以及在远程服务器上运行的特点而著称。在文件中提到的矢量图是一个特别之处,它意味着用户可以无损放大,从而在不同...

    vi快速学习 vim快速学习

    在Linux和Unix系统中,`vi`(Visual Editor)是一个非常重要的文本编辑器,而`vim`(Vi IMproved)是其增强版,继承了vi的强大功能并增加了许多现代特性。了解并熟练使用vi/vim可以极大地提升你在命令行环境下的工作...

    vi中文手册vim_user_manual_603.0.pdf

    ### Vi/Vim中文手册知识点概览 #### 一、Vi/Vim编辑器的本质与学习方法 **Vi/Vim的本质:** - **技能而非知识:** Vim的使用更侧重于技能的掌握,而非纯理论知识的学习。 - **实践重于理论:** Vim强调通过实践来...

    学习vi和vim编辑器第7版

    通过学习vi/vim编辑器的基础命令和高级技巧,我们可以大大提高文本编辑的效率。无论是日常的文本处理还是编程开发工作,掌握这些工具都将使工作更加高效、便捷。希望本文提供的知识点能够帮助读者更好地理解和掌握vi...

    学习vi和vim编辑器_第7版_中文

    将近三十年的时间里,vi一直... vi或Vim,是使用Linux或Unix时的必要知识,无论使用哪种平台,《学习vi和Vim编辑器(中文版第7版)》都是基础中的基础。 《学习vi和Vim编辑器(中文版第7版)》由罗宾斯、汉娜和拉姆编著。

    学习VI和VIM编辑器第7版中文

    将近三十年的时间里,vi一直... vi或Vim,是使用Linux或Unix时的必要知识,无论使用哪种平台,《学习vi和Vim编辑器(中文版第7版)》都是基础中的基础。 《学习vi和Vim编辑器(中文版第7版)》由罗宾斯、汉娜和拉姆编著。

Global site tag (gtag.js) - Google Analytics