zoukankan      html  css  js  c++  java
  • vim/vi用法总结

    第一章:安装:

    在命令行运行vim,如果找不到程序,需要自己安装。

    1.1 下载

    从官方网站ftp://ftp.vim.org/pub/vim/unix/中选择一个版本下载,我这里使用的是vim-7.3.tar.bz2。

    1.2 解压程序:

    tar -xjvf vim-7.3.tar.bz2

    在AIX环境中可能不支持这个命令。可以用Windows上的好压等软件解压后再传入到服务器中,这时一些程序的可执行权限可能被清除了。你需要手动添权限:

    cd vim73 #进入解压后的源代码目录。
    vim73>chmod –R u+x .

    1.3 编译安装程序:

    如果在AIX环境可以使用xlC编译器,编译前需设置环境变量如下

    vim73>export CC=xlC
    vim73> export CFLAGS="-q64 -DOLDXAW" #64位处理器必须加上-q64选项,-DOLDXAW为了更好的兼容性
    vim73>export LDFLAGS=-q64 #64位处理器必须加上此选项
    vim73>export STRIP="strip -X64" #64位处理器必须加上此选项

    如果是Linux环境可以不用设置上面的环境变量。

    配置编译选项:

    vim73>./configure --prefix=/home/aixdev/vim/ --enable-multibyte --disable-nls

    其中/home/aixdev/vim/是要安装的目录,用户自己修改,务必保证此目录又读写权限。--enable-multibye的用途是使用 Vim的encoding,fileecncodings等设置。--disable-nls是Oracle的语言环境,可以不选用。

    编译:

    vim73>make

    安装:

    vim73>make install

    1.4 安装ctags

    如果你在AIX平台上使用Vim,系统默认的ctags功能很差,建议重新安装一个ctags工具,Linux平台用户可以跳过此节。ctags下载地址:http://ctags.sourceforge.net/,我这里使用的版本是:ctags-5.8.tar.gz
    安装步骤类似vim:

    ctags-5.8>chmod -R u+x . #解决windows解压后可执行权限丢失的问题。
    由于编译vim的时候已经设置好了环境变量,这里可以不用设置了
    ctags-5.8>./configure --prefix=/home/aixdev/ctags/
    ctags-5.8>make
    ctags-5.8>make install

    没有报错的话,在/home/aixdev/ctags/bin目录下会有ctags可执行文件。

    第二章:配置

    2.1 检查DISPLAY环境变量

    在执行VIM前,检查DISPLAY环境变量的值,(如果你的DISPLAY变量值为空,可以跳过此步)。
    当我打开VIM时,发现没响应,像是卡住了。但执行命令kill -30 <VIM的进程序号>后,它又立即激活。这是环境变量DISPLAY在作怪。
    由于服务器还安装了ORACLE,而ORACLE的一些终端登录要用到DISPLAY变量,为了不影响其他同事使用ORACLE,可以在$PATH环境变量中找一个可以写的目录,并在这个目录中新建一个名为vim的SHELL脚本,内容如下:

    #! /bin/sh  
    export DISPLAY=;  
    <安装路径>/bin/vim "$@"  
    exit; 

    把这个shell脚本的使用仅限更改为可执行:

    chmod +x vim。

    2.2 更新配置文件

    为了使Vim能够发挥更好的使用优势,在安装完成后,建议将如下的.vimrc文件复制到HOME目录下,覆盖原来的文件。
    点击下载.vimrc

    2.3 神级配置

    将下面的这一段代码放在home下面保存为.vimrc

    set mouse=a
            let Tlist_Use_Right_Window=1
            let Tlist_File_Fold_Auto_Close=1
            map <F4> :TlistToggle<CR>
            noremap <F6> :make<CR>
            noremap <S-F6> :make clean;make<CR>
            noremap <F7> :Tlist<CR>
            noremap <S-F7> :TlistSync<CR>
            noremap <F3> :!./vitags.sh<CR>:cs reset<CR>
            noremap <S-F3> :!cvs up<CR>
            nnoremap <space> @=((foldclosed(line('.')) < 0)       'zc' : 'zo')<CR>
    
    if has("multi_byte")
            set encoding=utf-8
            set fileencoding=chinese
            set fileencodings=ucs-bom,utf-8,chinese
            endif
            set wrap
            set hlsearch
            filetype plugin on
    
    colorscheme elflord
            syntax on
    
    set nocp
            filetype plugin on
            filetype indent on
    
    if has("cscope")
            set csprg=/usr/bin/cscope
            set csto=0
            set cst
            set nocsverb
            " add any database in current directory 
            if filereadable("cscope.out") 
            cs add cscope.out 
            " else add database pointed to by environment
            elseif $CSCOPE_DB != ""
            cs add $CSCOPE_DB
            endif
            set csverb
            set cscopetag
            endif
    
    set nu
            set ts=4
            set sw=4
    
    set ru
            set hls
            set is
            set sm
            set cin
            set cino=:0g0t0(sus
    
    set autoread                              " read open files again when changed outside Vim
            set incsearch                              " use incremental search
            set nowrap                               " do not wrap lines
            set nobackup
            set nowritebackup
            map <C-F12> :!ctags -R --c-kinds=+p --fields=+iaS --extra=+q .<CR>
            map <C-F11> :!ctags -R .<CR>
    

    第三章:常用技巧。

    3.1 基本功能

    Vim配置完成后,在任何目录输入命令“vim <文件名>”就可以使用vim编辑文件了。 打开vim后,默认的是命令模式,输入i进入编辑模式,这个时候你可以编辑文件了。
    在编辑模式下按Esc键回到命令模式,在命令模式输入:q ! (:wq) 命令就可以(保存修改)退出了。

    命令模式常用命令:
    k:向上
    j:向下
    h:向左
    l:向右
    w:下一个单词
    b:上一个单词
    e:单词尾部
    a:追加输入,并进入编辑模式,一般 r:替换当前字符为
    R:进入替换型输入方式,按Esc退出。
    cw:替换单词,进入编辑模式。
    x:剪切字符
    dd:剪切行
    D:剪切当前位置到行尾
    yy:复制一行
    p:粘贴
    v:选择文本区域,之后可以移动光标改变选择范围,也可以使用y、x、r命令复制、删除 3.2 列模式

    在命令模式下,按ctrl+v命令进入列选择模式,列选择模式同v命令的选择模式一样,同时它还可以输入I命令对选择的区域每行都插入一样的内容。

    3.3 查找 命令模式下的查找命令:
    /<word>:查找下一个<word>,之后可以使用n(N)命令向下(上)查找
    ?<word>:查找上一个<word>,之后可以使用n(N)命令向下(上)查找
    *:查找光标所在单词下一处
    <word>可以是任何正则表达式,用点(.)匹配任意单个字符,用星*表示匹配零或多个任意字符。如(/a*b)可以查找匹配ab、aab 下面是介绍几个常用的情况:
    /^abc:找到以abc开头的行
    /efg$:查找已efg结尾的行
    /s+:查找一个或多个空白处,

    vim的替换语法为:[addr]s/源字符串/目的字符串/[option]。[addr] 表示检索范围,默认是当前行,%表示整个文件,使用 v命令选中区域后输入冒号可以实现自定义范围;源字符串可以使用通配符,查找功能原理一样;[option]是操作类型,g 表示全局替换,c 表示进行确认。
    下面是一些常用的例子:
    在每行的开始插入>
    :%s/^/>/g
    删除空行。
    :%s/^$/ /g
    删除所有的[
    :%s/[//g
    将That or this 换成 This or that
    :%s/(That) or (this)/u2 or l1/

    提示:输入/或者:命令然后再按上下方向键,可以查看历史命令

    3.4 多文件操作

    在使用vim命令时,后面可以加多个文件名。这时vim首先显示的是第一个文件。在命令模式下输入:n(N)命令可以切换到下(上)一个文件,使用ctrl+g可以查看当前打开的文件名,输入:qa退出所有的文件。
    如果想在一个页面上看到多个文件内容,可以使用分屏,这样很方便让我们交互式操作。

    在vim命令模式下输入:sp(:vsp) [文件名],可以进行水平(垂直)分屏。之后输入wk(j、h、l)命令可以上(下、左、右)切换窗口。输入:q可以关闭窗口。

    3.5 资源管理器

    如果我们打开的文件被其他程序修改了,可以使用:e命令来刷新文件内容。使用:e [文件名]可以关闭当前文件同时打开指定的文件。 使用:E命令可以打开当前文件所在目录。这个类似Windows的资源管理器。

    当打开的是文件目录时,可以通过s命令修改文件排序方式,同时将光标移到指定文件后输入Enter键即可打开它。

    对于开发者来说,希望可以看到一个程序的函数名列表,这是需要通过taglist插件来实现。
    使用方法如下:
    1) 先到官方网站下载插件:
    http://www.vim.org/scripts/script.php?script_id=273
    2) 将下载的文件解压到$HOME/.vim目录下。

    $HOME/.vim> unzip taglist_46.zip

    3)设置并激活
    在.vimrc文件修改下面配置:

    let TlistCtagsCmd="/lincapp/aixdev/ctags/bin/ctags"

    其中/lincapp/aixdev/ctags是第一步ctags安装时指定的路径。
    进入HOME/.vim目录运行vim,执行命令(:helptags .)后退出。

    此时就配置好了,打开一个程序文件,按F2命令,即可显示、隐藏函数定义表了。

    3.6 代码折叠

    在查看源代码时,将光标移至括号(大、中、小括号 3.7 函数定义跳转

    我们阅读代码时希望能跳转到被调函数的定义处。实现这个功能需要使用第一步安装ctags工具对代码库生成tags文件,方法如下:

    /home/aixdev/ctags/bin/ctags -RB -f ~/leman/tags ~/rinetd/

    -f用来指定生成的tags文件名,用户可以任何自行修改。最后一个参数指定代码库的主目录(为了能在任何地方都可以跳转,这里建议写绝对路径)。
    生成完tags文件后需要修改.vimrc中的tags设置:

    :set tags=~/leman/tags "这里修改为你自己的tags文件名

    现在就可以在vim里面使用跳转了,将光标移至函数处,输入ctrl+]命令进入函数定义,输入ctrl+t退到上一层调用。如果修改代码后导致跳转位置不准了,可以通过重建tags文件来校正。

    3.8 代码自动补全

    在编辑模式下,当我们输入变量名或者函数名一部分时,可以输入ctrl+p(n)实现自动补全,vim自动搜索上(下)文类似的单词,如果未找到再尝试到 tags文件中找你想要的变量。如果有多个满足的内容,会显示一个列表,这时用户可以继续输入ctrl+p(n)来选择上(下)一个。

    3.9 文件比较

    使用vim比较文件的命令为vim -od 。参数-o表示水平分屏,默认是垂直分屏。

    如上题,品红色表示本行有差异,红色部分标识了差异的地方。为了能看到全行的内容,可以输入:set wrap命令来展开,同样使用:set nowrap可以隐藏。

    3.10 其他

    1)调用外部命令。 如果想使用vim调用shell命令,可以在命令模式下输入:! <shell命令>实现。如查看当前所在目录可使用::!pwd


    2)二进制模式查看编辑。 如果vim打开的文件中含有不可见字符,而你又想查看这些不可见字符的二进制数据,这是可以通过:%!xxd -g1命令进入二进制模式查看,进入后可以编辑二进制数据,之后通过:%!xxd -g1 -r命令返回正常模式保存。

    第四章:高级用法。

    4.1 Linux命令模式:Vim filename

    一次移动一个光标

    h        j              k          l

    左       下             上         右

    行内移动

    0        到行首         d0或d^    删除至行首

    $        至行尾         d$         删除至行尾

    0=HOME    到行首        $=end      至行尾

    G         到文件尾      50G        到50行

    gg        到文件首

    有小d/大D都是剪切

    dd         剪掉当前行

    5dd        剪掉当前行起共5行

    D          剪空当前行

    x          删除一个字母    

    dw         除一个单词          del  word

    u         一次撤一行中的一个动作

    U         撤消一行中的所有动作    undo

    多行时小u比大U管用

    yy        复制当前行

    5yy       复制5行

    p         粘    paste

    ZZ        保存退出

    ZQ        不保存退出

    vim中大小写转化:~或u或U

    1、整篇文章大写转化为小写:gg到文件首→guG

    gu=把选定范围全部小写

    G=到文件结束

    2、整篇文章小写转化为大写:gg到文件首→gUG

    gU=把选定范围全部大写

    G=到文件结束

    4.2 命令模式→输入模式:按ins/a/A/i/I/o/O/r/R

    o           在光标下加一空行并进入插入模式

    O           在光标上开一空行并进入插入模式

    r           替换一个字符   

    R           连续替换多个字符

    文件内容查找:

    操作键      功能

    /word       从上而下在文件中查找字符串“word”

    ?word       从下而上在文件中查找字符串“word”

    n            定位下一个匹配的被查找字符串

    N            定位上一个匹配的被查找字符串

    命令模式→Visual Block:按ctrl+v,举例:选中多行并添加注释

    #vim→^v→I→#→ESC

    #vim→set nu→^v→(100G:当前行到第100行)→I→#→ESC

    4.3 命令模式→末行模式:按冒号

    默认情况下Vim的搜索是大小写敏感的,:

    :set ignorecase          忽略大小写

    :set noignorecase        不忽略大小写

    :set nu或:set number     设置显示行号

    :set nonu或:set nonumber 不显示行号

    :999              移动光标到第999行

    有彩色或无彩色

    :syntax clear或:set syntax=off暂时关闭语法高亮

    :syntax enable    当前缓冲区打开语法高亮功能。

    :w                存盘不退出

    :w!               暴力存盘不退出

    :w file1          另存为file1

     

    :q                无脏数据时正常退出

    :q!               放弃脏数据并退出

     

    :wq               正常保存并退出

    :wq!              暴力存盘并退出

    文件内容替换

    命令  功能

    :s /old/new     当前行中找到的第一个old 替换为new

    :s /old/new/g     当前行中查找到的所有old 替换为new

    :#,# s/old/new/g    行号“#,#”范围内替换所有的old为new

    :% s/old/new/g  整个文件范围内替换所有的old为new

    :s /old/new/c    c命令:将对每个替换动作提示用户进行确认

    文件加密与解密

    vim t.c         打开一文件

    :X             据提示操作//加密

    :wq             保存退出

     

    文件解密

    vim t.c         打开文件

    :set key=      解密

    :wq            保存退出

    查看vim帮助

     

    4.4 典型故障现象

    一般是非正常关闭VI导致的,解决办法如下:

    #rm .install.log

    结尾:

    下面是一个高手总结VIM的用法:

  • 相关阅读:
    Springmvc全局异常处理
    SpringMVC异常处理一
    [GDB7] gdb 的学习
    《Python 第七章》更加抽象
    python问题:IndentationError:expected an indented block错误解决
    [C/C++] C++ 类的学习
    [GCC6] gcc 的学习
    [Python] 列表 list
    [python] 循环与轻量级 pass, del, eval
    《Python 第八章》异常
  • 原文地址:https://www.cnblogs.com/larack/p/4413888.html
Copyright © 2011-2022 走看看