编辑器之神vim交流学习——http://www.cnblogs.com/azheng007/archive/2012/07/03/vim.html

来源:互联网 发布:电机数据大全安装尺寸 编辑:程序博客网 时间:2024/04/28 16:41

1.vim 是什么

2.vim与emacs

3.为什么要学习vim

4.常用的gui编辑器与vim对比 体现vim的优势

5.vim常用命令介绍

6.配合开发相关命令介绍

7.如何学习vim

8.vim的附加值 学习linux与效率

9.提高工作效率的几点建议






一 什么是vim
Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性。
vi和vim是我们在Linux中最常用的编辑器,大多数类linux系统都默认安装。vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vim编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的.

二 vim与emacs
据说Emacs是神的编辑器,而Vim是编辑器之神.所谓神的编辑器 emacs 那肯定不是只有编辑文件功能那么简单。据说Emacs里可以管理文件系统,运行终端,收邮件,上网,听音乐,甚至,有人用Emacs控制咖啡机煮咖啡。所谓编辑器之神 从字面上理解应该是编辑器中最厉害的,最强的。vim 一向是以快速的文本编辑闻名于世的,它的按键更简洁,更快速的实现操作。

三 为什么要学习vim
1.编辑程序速度快,这是最重要 vim也因此闻名于世

2.更容易的学习和使用linux系统
     每个系统管理员至少要学会使用一种命令行界面的文字处理器来管理系统,linux下文字处理软件非常多,如 emacs xedit kedit ,但是vi几乎是任何一个类unix系统中都默认安装的,学会她,学习和使用linux会方便很多。

四 vim与常用gui编辑器对比
1.eclipse等gui工具能做到的 vim 能够更快的做到

    多文件新标签打开并进行切换

    查看文件目录

    文字查找

    文字替换

    使用正则

    保存与恢复

   工作环境保存及恢复


2.eclipse做不到的,它能做到而且很多

     移动光标所在位置 如 行移动 单词移动 行内移动 嵌套语句中移动

     滚屏显示

     分割窗口多文件同时显示到屏幕上

     函数预览同时编辑文件

     代码嵌套结构下的移动

     无需任何插件自动补全

这所有的一切在linux上无需安装任何工具就可以实现

五 开始vim常用命令介绍

vim 基本模式介绍
Vim编辑器是一个模式编辑器。这意味着在不同状态下编辑器有不同的行为模式。vim 有三种模式 一般模式 编辑模式 命令行模式 在一般模式与命令行模式下你键入的每一个字符都被视为一个命令。而在Insert模式下键入的字符都作为实际要输入的文本内容


一般模式
一般模式下常用命令

移动光标
    滚屏: ctrl+f  向下移动一页 ctrl+b 反之 ctrl+d 向下移动半页 ctrl+u 反之 ctrl+e 向上移动一行 ctrl+y向下移动一行
    当前行移动位置:zz 将光标所在行移动到中央 zt屏幕上面 zb 屏幕下面
    当前屏移动光标: H home屏幕最上面一行 M middle中间一行 L  last最下面一行
    文件中移动:gg第一行  G最后一行 nG 第n行  
    单行中移动:shift+^行首 shift+$ 行尾
    移动到指定字符上 f'm'  m所在位置 F 向左方向 光标落在搜索字符上 n执行几次 t 同理 只是光标落在被搜索  字符前面
    以单词移动:w 向后移动一个单词 nw向后移动n个单词 b向前移动一个单词 nb向前移动n个单词 光标落在单词首字母上
    e 向后移动一个单词 光标落在单词最后一个字母 ge 反之
    % 嵌套中移动包括()[]{}  
    移动到制定行 n{hjkl} 分别做相应跳转 如 3j向下移动3行
    文件位置百分比移动 10% 文件内容10%比例处
    查看当前位置: ctrl+G
    跳转: '' 来回与跳转之间 ctrl+o 后退 ctrl+i 前进

删除复制与粘贴
    x 向后上出一个字符 X反之 nx 向后删除n个字符  nX反之
    dd 删除一行 ndd向下删除n行
    dw 删除一个单词
    d1G 删除光标所在位置到第一行的所有数据 dG 删除光标所在位置到最后一行的所有数据
    d$删除光标所在位置到行尾 d0 or d^ 删除光标所在位置到行首
    yy 复制光标所在那一行 ayy 复制光标所在的向下n行
    y1G 复制光标所在行到第一行的所有数据 yG复制光标所在行到最后一行的所有数据
    y0 复制光标所在位置到行首的所有字符 y$ 复制光标所在位置到行末尾的所有字符
    p 将已经复制的内容粘贴到光标下一行 P 粘贴到光标上一行
    J 将光标所在行与下一行合并成一行
    u  撤销
    ctrl+r 回复
    . 重复前一个动作
    x 代表dl(删除当前光标下的字符)
    X 代表dh(删除当前光标左边的字符)
    D 代表d$(删除到行尾的内容)
    C 代表c$(修改到行尾的内容)
    s 代表cl(修改一个字符)
    S 代表cc(修改一整行)
    Y 代表yy

如何进入编辑模式
    i 在当前光标所在处开始插入 I 当前所在行首插入
    a 当前光标所在处的下一个字符处开始插入 A 从光标所在行的最后一个字符开始插入
    o 当前所在行的下一行插入新的一行 O 当前所在行的上一行插入新的一行
    r 替换一个字符 R 一直替换光标所在的文字
    Esc 退出编辑模式
    编辑模式 命令很少 几乎搜有嵌入字符都作为输入内容

基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令模式!
你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。

命令模式下常用命令

搜错与替换
    搜索:/向下   ?向上  n 正方向  N 反方向 \c 忽略大小写
    也可以将光标放到要搜索的单词上 * 向下搜索 #向上搜索
    查找整个word 加上<>
    替换:n1,n2s/word1/word2/gc     n1-n2行间所有word1替换为word2 并需要用户确认
    % 所有行  g表示要替换一行中的所有匹配项 c 需要用户确认
   set ignorecase 忽略大小写
   \c 正则忽略大小写 \C 对大小写敏感
   set nowrapscan 关闭循环搜索
   /search/2 目标下偏移两行 -2向上
   /search/e+1 尾字符的 下一个字符 -1上一个字符
   /search/b+1 首字母的 下一个字符 -1上一个字符

文件操作
    w保存  wq保存退出 q 退出 前面加上!就是强制 e! 还原文件到初始状态
    w filename  将编辑的数据存入到另一个文件中 n1,n2 将n1到n2行之间的数据保存至新文件
    r filename 读入一个新文件
    ! 执行shell命令 shell 开启一个新的shell
    ctrl+b 行首
    ctrl+e 行尾
    s +{left,right} 以单词为移动范围
    ctrl+w 删除整个单词
    ctrl+u 删除整行
    ctrl+c 删除命令行所有数据并退出命令行模式
    tab箭自动补全  如b edit vi 所不支持的
    ctrl+d 将所有符合条件的数据显示出来
    ctrl+l 最大限度的补全各符合项的共同部分
    history 显示所有历史命令
    ctrl+p 前一个 ctrl+n  下一个 不同与上下箭头 根据已输入的来搜索
    q: 打开命令行窗口 查看并可编辑 旧命令
    ! 所有shell命令必须前面加上! 如 !svn up ~
    shell 新打开一个shell

visual模式 按v进入visual模式 (可视选择模式)
    v 选择字符
    V 选择行
    ctrl+v 块选择
    o 重置光标到选择区域的另一端
    O 同一行左右两个角移动

替换模式
    r 替换单个字符
    R 一直替换光标所在的字符

vim 几大常用方式

1.编辑多个文件(重要)
    edit filename 打开一个新文件 edit! filename 强制不保存打开新文件
    hide edit filename 不保存当前文件的修改去打开新文件 使被修改的文件变成一个隐藏的缓冲区
    next 下一个文件 wnext 保存当前文件并下一个 nnext n次
    previous 上一个文件 wprevious 保存当前文件并上一个nprevio n次`
    last 最后一个
    first 第一个
    args 查看当前便加那个文件
    ctrl+^ 两个文件之间快速切换
    ls 显示打开文件列表
    b n 切换到第几个
    write>>filelog 向文件中追加内容
    saveas 另存为一个新文件
    tabedit 新标签页打开新文件

2.分割窗口(方便)
    split filename 水平分割
    vsplit filename 垂直分割
    close 关闭分割窗口 q 也可以 但是close能保留最后一个窗口
    only 只保留一个窗口 其余的全部关闭
    ctrl+ww 切换不同的窗口
    new 打开一个新窗口并开始编辑一个新的缓冲区
    vnew 打开一个充值分割的窗口并开始编辑一个新的缓冲区
    nsplit 打开一个高度为n行高的窗口
    ctrl+w +{hjkl} 在不同的窗口之间切换
    ctrl+w +{HJKL} 移动不同窗口的位置
    qall 退出所有的窗口退出vim
    wall 保存所有窗口
    wqall 保存退出所有的窗口
    vim -o 为每一个文件打开一个窗口

3.编辑程序(重要)
    vim的作者就是一个程序员,所以vim中有很多辅助写程序的功能
    tag  位置 记录一个标识符的定义未知
    ctags 生成tags文件记录所有标识符的出现位置,linux一般都会安装 http://ctags.sf.net
    tag m 跳转到m定义的地方 ctrl+] 跳转到光标所在标识符的定义位置 3tag 跳转到第三次出现的地方
    stag 分割窗口 ctrl+w+] 同理
    tags 列出使用过的tag
    ctrl+t 跳转到上一次使用过的tag
    set tags=tags 设置tags文件,要使用多个tags文件的情况下
    tnext 下一个同名tag tprevious 上一个 tfirst 第一个 tlast  最后一个
    tselect 查看同名tag
    tab键可以补齐tag
    ptag 预览tag定义 ctrl+w +}
    pcloase 关闭预览窗口

4.代码块中的移动(重要)
    在代码块中的移动
    % 在()[]{}开始结尾处穿梭
    [[ 上一个代码块]] 下一个代码块
    [{ 代码块开头  ]} 代码块结尾
    [/ 注释开始 ]/注释结束

常用技巧

挂起与恢复
    同linux作业控制一样
    jobs 查看作业
    ctrl+z 挂起
    fg 恢复
    bg 调入后台执行
    & 后台运行
    kill 删除作业也可以 fg +ctrl+c

文件浏览
    edit .
    enter 打开文件或目录
    ctrl+o 返回 或q
    o 打开一个水平分隔的窗口显示文件
    v 打开一个垂直分隔的窗口显示文件
    t 在一个新标签页中打开文件

    i控制列表显示的风格(仅文件名, 还是在一行中显示详细信息,
    逐行列出项目, 还是树形显示), 其中详细信息风格包括文件大小和日期信息
    s重复按s会循环改变文件排序的方式: 按文件名排序, 按最后修改时间, 或者根据文件大小.
    r切换正反向排序

缩进
    > 向右缩进 >>向右缩进光标所在行
    < 向右缩进 <<向右缩进光标所在行
    set shiftwidth=8 缩进量默认8
    set softtabstop=8 设置tab键的缩进量

保存会话
    mksession 创建一个会话
    source  恢复会话
    vim -S 启动的时候恢复会话

快速键入
    ctrl+p 自动补全 ctrl+n相反方向查找补全
    查找文件的顺序 1.当前文件 2.其他窗口打开的文件 3.tag文件
    ctrl+y 复制与上一行相同的内容
    ctrl+e 复制与下一行相同的内容
    缩写(不重要,容易养成依赖性)
    iabbrev func function
    abbreviate teh the 自动纠错
    abbreviations 列出所有缩写
    unabbreviate 删除缩写

折行
    zf 创建折行
    zo 打开折行
    zc 关闭折行

格式化文本
        = 与vitrual模式结合
    1,20 right 40 行的长度
    1,20center 40 行长度
    1left 5 5左边留白的空格数目

切换工作目录
    cd 更改目录 其他窗口也会改变
    cd - 会在两次工作目录中切换
    lcd  局部窗口工作目录切换
    pwd 查看当前工作目录 和shell下命令行相同

常用设置
    set nu  显示行号
    set nonu 不显示行号
    set hlsearch 设置是否将搜索的字符串高亮显示
    set autoindent 是否自动缩进
    set backup 是否自动存储备份文件 filename~
    set backupext 备份文件后缀名
    set ruler 是否在右下角显示状态行说明
    set backup 是否自动存储备份文件 filename~
    set showmode 是否在左下角显示 insert replace 等模式
    set ignorecase 忽略大小 一般用于搜索
    set wrap 显示换行 nowrap不换行
    set textwidth=90 每行有90个字符,超出自动换行
    set linebreak  断行不拆分单词
    options 显示所有设置的值

dos 与linux的换行符不同
    set fileformat? 查看当前文件格式
    set fileformats=unix,dos,mac 设置vim可以识别的文件格式
    set fileformat=unix write 设置保存文件格式
    dos2unix -k 保留文件的最后修改时间 -n 保留旧文件 输出到新文件
    unix2dos

改变文字大小写
    gu gU 与virtual模式组合

vimdiff 比较文件
    vimdiff file1 file2    
    diffsplit file 对比一个新文件
    vertical  打开的窗口垂直分割
    set scrollbind 同步滚动
    ]c  向后跳到不同的地方
    [c 向前跳到不同的地方
    diffupdate 更新对比情况
    dp 消除当前行的差异
vim 加密文件
    vim -x 加密文件

恢复文件
    vim -r wapfilename 恢复文件

对多个文件进行替换
    :argdo %s/\<word1\>/\<word2\>/ge |update  % 所有行 <>整个单词 g单行所有 e找不到匹配项不报错 update替换后进行保存 |分割命令

个人习惯设置
    ~/.vimrc /etc/vimrc
    alias 设置别名


vimtutor 简单学习手册 如果您的系统中已经安装了vim 那就进入vimtutor去学一下那简单的命令吧,在shell命令行下键入vimtutor开始你的vim 学习之旅吧

六 常用配合开发相关命令基本介绍
    grep  用于查找文件内容 grep -iwr ./ 'serch' --include=*.php
    svn  版本控制命令 svn up svn st  svn log  svn diff svn merge svn ci
    history  历史命令 !n 执行第n条命令 !! 上一条命令 !xx history中以xx开头的命令
    jobs 作业 挂起 恢复 查看
    head  less  cat  tail 查看文件内容

七 如何学习vim

   分为三个阶段

  1.vim是特别难用 奇怪的编辑器

     一开始是notepad, word, edit垄断你的大脑, 这些东西根深蒂固, 挥之不去Vim的使用对你而言是一场噩梦, 它降低而不是提高了你的工作效率. 对三种工作模式的不解甚至使你认为它是一个充满BUG或者至少是一个古怪的与当今友好用户界面严重脱节的软件. 事实上, 这些起初看起来古怪的特性是Vim(或者是vi)的作者和它的用户们在自己漫长的文字编辑和程序设计生涯中总结出来的最快速最实在的操作, 在几乎等于计算机本身历史的成长期中, 历经无数严厉苛刻的计算机用户的批评与检验, 无用的特性或糟糕的设计在Vim用户群面前根本就没有生存的余地. Vim细心而谨慎的作者们也不允许自己精心设计的软件里有这样东西.

  2.熟练使用vim替代guid编辑工具

你现在开始熟悉一些基本的操作, 这些操作足以应付你日常的工作, 你使用这些操作时根本就不假思索. 但这些阶段你仍然很少去碰Vim那晦涩的在线帮助文档. 它在你心里只是notepad, edit一个勉强合格的替代品

  3.已经不满足第二个阶段所使用的命令,总是试图找到最少键入次数的命令

精益求精的你不满足于无休无止的简单操作, 冗长而乏味,有没有更好的办法可以四两拔斤. 于是, 从UNIX参考手册上, 从同事口中, 通过各种渠道,你总是去试图

找到最简洁最快速的操作。这是你使用Vim的最后一个阶段, 也是最漫长最有挑战性同时也充满无数奇趣的阶段. 你的头脑因为要用Vim完成高效的编辑而高度紧张, 也开始发现你在Vim里做了以前在SHELL里做的几乎一切事. 事实上你已经成了一个无可救药的Vim骨灰级玩家。

八 vim的附加值 学习linux与效率

  1.由于要使用vim必须进入命令行 linux的命令行模式可以让你避免一些如windows的干扰 如弹窗 qq,让你专心的去干一件事情

  2.由于要使用vim 必须要再一些类unix系统 如linux系统  这也增加了你接触linux的机会,试图用linux下的工具解决一些问题 如grep

九 提高工作效率的几点建议

  1.学习使用google日历来规划你的工作于生活

  2.做一件事情就是只做一件事情,不要这里没干完又要去做别的  写写代码  看看微博   写完了 再看也不迟

  3.需求要好好想想再做