• vim常用命令


    以前也接触到vim,但是一直觉得其太繁琐,没用。在ubuntu下也是用gedit来代替了。今天没事安装了github,结果打开Git Bush 找到工程后,输入vim 擦,竟然这个还真集成了,于是头就大了,想编辑一下都不知如何下手,最重要的不知道怎么退出了,shit。于是决定将vim的一些常用命令记录一下,免得如此丢脸。

    一、vim的三种模式。

    命令模式(Command mode),插入模式(Insert mode)和底线命令模式(Last line mode)。

    使用vim filename 进入的就是命令模式。此时输入i 会进入插入模式。输入:会进入底线命令模式。

    在插入模式或底线命令模式下输入ESC会进入到命令模式。在命令模式下输入shit+ZZ 可以保存并退出vim。

    二、 命令模式下

    i                 切换到插入模式,以输入字符。

    x                删除当前光标所在处的字符。2x  删除当前光标往后2个字符

    :                 切换到底线命令模式,以在最底一行输入命令。

    J                 光标向下

    k                光标向上

    l                 光标向右

    h                光标向左

    u                 撤消,相当于windows中的ctrl+z

    ctrl +r          重做,相当于windows中的ctrl+y

    shift+u         撤消整行

    P                  粘贴

    yy                 复制当前行

    yw                复制当前光标到所在单词结尾的内容

    y0                复制当前光标到光标所在行首的内容

    y$                复制当前光标到光标所在行尾的内容

    yfa               复制当前光标到光标后面第一个a字符之间的内容

    dd      删除当前行

    D                  删除从当前光标开始到光标结尾的内容

    d 然后l        删除光标右边字符

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

    db                删除当前光标到光标所在单词首行的内容

    ndw           删除以当前字符开始的n个字符

    d0                 删除当前光标到光标所在行首的内容

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

    ndd          删除以当前行开始的n行

    d回车      删除2行

    d)         删除到下一句的开始
    d}          删除到下一段的开始

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

    w      移动光标到下一个单词的开头

    e       移动光标到下一个单词的结尾

    b       移动光标到上一个单词

    0       移动到本行最开头

    ^       移动到本行最开头字符处

    $       移动到本行结尾处

    A       移动到本行结尾处并进入插入模式

    行号+gg    将光标跳到某一行的行首

    H       移动光标到到屏幕的首行

    M       移动光标到到屏幕的中间一行

    L        移动光标到到屏幕的尾行

    gg        移动光标到到文档的首行  (不太明白与H的区别)    

    G        移动光标到到文档的尾行

    ctrl+b     向上翻页同 page up

    ctrl+f      向下翻页同 page down

    ctrl+g     查看当前文件名

    v        进入到选择模式

    ctrl+v     进入到列选择模式

    /         查找关键字, 继续查找此关键字,敲字符n就可以继续查找了。值得注意的是“/”是向下查找,而“?”是向上查找。

    ctrl+oo     打开上次编辑的文件

    感觉不太常用的

    命令模式下

    shift+j    将两行并为一行(光标初始位置在第一行)

    *        当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下一个单词,再输入 n 查找下一个匹配处, 输入 N 反方向查找。#与*刚好反向。

              这个功能和查找的功能类似。同时这里可以将所有相同的单词标记出来高亮显示。

     q:      vim会在下面列出所有的操作的记录 ,按两次ctrl+c 退回到之前的界面

     q/      vim会在下面列出所有的搜索的记录 ,按两次ctrl+c 退回到之前的界面

    三、 输入模式下

    方向键     在文本中移动光标

    ENTER    回车键,换行

    Page Up/Page Down  上/下翻页

    Backspace 和 delete 都可以删除

    四、 底线命令模式

    q       退出程序

    w       保存文件

    wq       保存并退出

    q!        不保存并退出

    e!      不保存并重新载入这个文件

    E!      将文件所处的父路径新建一个标签展示出来

    set nu     显示行号

    set nonu   取消显示行号

    set ai / :set no ai    设置自动缩进

    set sw=4        设置缩进宽度

    set ic / :set no ic    设置大小写忽略与否

    !            执行shell(dos) 命令

    r!            将执行shell(dos) 命令执行结果读入文档

    sp 文件名          水平分割,同时编辑两个文件,vsp 文件名是垂直分割。使用ctrl+ww在两个文件中进行光标切换 

    tabnew F:test.txt       在新标签中打开F:/test.txt这个文件 ,其中命令中的F:后的\可要可不要

    sy on            语法高亮

    sy clear           取消语法高亮

    colo evening          修改配色方案为evening

    set go=           将菜单和工具栏取消,即将gui option 设置为空   可以用 set go=e 来设置一个标签格式

    进阶篇

    :%s/four/4/gc

    :表示进入底线命令模式,%范围前缀表示在所有行中执行,不只是当前行。s表示替换,four指被替换的字符串,4是指替换成的字符串。g表示替换这一行中的所有匹配字符

    如果没加,则只会替换掉这一行中的第一个four字符,之后的不会替换。c会在每次替换前提醒你是否替换。 

    如果你有一个像“thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:

    显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题。于是就有

    :%s/\<four\>/4/gc  来精确替换掉four

    还可以在替换时指定开始替换的行数。如  :n,$s/vivian/sky/    表示替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

    文件加密

    键入:X(大写X),VIM就提示你设定密码,安全起见要确认第2次。然后,保存(键入:w)。把 VIM或此文件关闭,再打开时,就要输入密码了。只有你输入正确的密码,才能得到正确的文件。

    宏的录制

    将  文档中8行   this is  a  test中的偶数行中的 a 修改成 another 

    按esc保证在命令模式下,按gg回到文档的首行,按q 然后按下一上字母比如a ,说明将宏的录制记录在a中,然后按$回到第一行的末尾,然后按j ,光标移动到下一行,然后按两次

    b (将光标向前移动2个单词),然后输入 caw 将 a 修改成 another 然后按esc回到普通模式,然后按 j 将光标移动到下一行,然后按q 结束该宏的录制。然后输入20@a 将之前

    的宏播放20遍。实际上不用指定这么大的数字,指定了也没问题。caw 修改一个单词, daw 删除一个单词,yaw复制一个单词。

    将文档中所有的大写字母替换成小写字母,使用 gggcG 就可以了。解释如下,gg回到文本第一个字符,gc把选定范围全部小写,G 到文件结束。

    常用配置

    以我自己安装vim路径为例,E:\Program Files\Vim\_vimrc 为配置文件,用户可以在这里配置自己的vim

    参考一个老外的配置文件  http://amix.dk/vim/vimrc.html

    ①首先我是解决打开html、php文件中文乱码的问题。在配置文件中加入这样一段代码

    "自动探测文件编码格式,如果符合其中一种替换到fileencoding
    set fileencodings=ucs-bom,utf-8,gbk,cp936,gb18030,big5,gb2312

    如果还是不行,那么在打开文件之后,用:edit ++enc=gbk这个命令强制使用某个编码。如 :edit ++enc=utf-8

     ②设置成自己喜欢的字体, 我依然是用Consolas这个习惯

    "设置字体为consolas 大小为11
    set guifont=Consolas:h11

    ③设置配色方案 晚上采用  molokai   schoolcode slate  desert  torte  白天用  peachpuff 浅红色 或者 default  或者darkbule  。

    ④常用插件的安装

      1.安装load_template在http://www.vim.org/scripts/script.php?script_id=2957 查找,将下载的load_template.vim 文件放置在 E:\Program Files\Vim\vim70\plugin下在vimrc文件中指定你的模板目录,来指定插件读取模板的目录。我的代码如下

    "load_template.vim插件
    let g:template_path = 'E:/Program Files/Vim/vim70/template/'

    然后在E:\Program Files\Vim\vim70\template\html 下新建一个模板文件 test_t.html
    用vim新建一个文件 vim hello.html 然后输入:LoadTemplate 回车 ,就会自动加载模板了,如果有多个模板,就会出现选择列表。

      2.安装taglist   taglist 是在vim 下可以像 vc当中的可以列出类,函数 的插件。

      在 http://sourceforge.net/projects/ctags/files/ctags/5.8/ctags58.zip/download 下载ctags,将其中的 ctags.exe 复制到gvim.exe 所在的目录,我的是E:\Program   Files\Vim\vim70
      如果不复制的话,会出现 Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.”

      在 http://www.vim.org/scripts/script.php?script_id=273 下载taglist.zip文件,解压后放入相应目录。然后在_vimrc中加入如下代码

    """"""""""""""""""""""""""""""
    " Tag list (ctags)插件
    """"""""""""""""""""""""""""""
    if MySys() == "windows" "设定windows系统中ctags程序的位置
    let Tlist_Ctags_Cmd = 'ctags'
    elseif MySys() == "linux" "设定linux系统中ctags程序的位置
    let Tlist_Ctags_Cmd = '/usr/bin/ctags'
    endif
    let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
    let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
    let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
    
    "使用F10打开Taglist
    nnoremap <silent> <F10> :TlistToggle<CR>
    "生成一个tags文件
    nmap <F11> <Esc>:!ctags -R *<CR> 
    set tags=tags;            "这里千万不能少,否则无法生成tags文件
    set autochdir

    值得注意的是 _vimrc中要打开vim的文件类型自动检测功能:filetype on 要不然此插件运行不了。

    这样配置后,当你输入”:Tlist“时,会显示右侧窗口。或者直接按f10右侧会显示出当前这个文件中的各种变量名称以及函数。如果你按F11后,系统会在当前路径下成本一个

    tags文件。然后可以使用以下命令来找到

    :ts tagname 列出匹配tagname的标签,如为空,则使用标签栈中最后的标签

      3.cscope插件的安装安装完成上面的插件后,还是无法查看当前函数是在哪实现的,于是安装另一个插件。Cscope, 在这里下载。 

    将解压出来的cscope.exe文件放在与vim相同的目录下E:\Program Files\Vim\vim70,将另外两个dll文件放置在C:\Windows\System32 下。然后配置path环境变量,指到vim70这个文件夹就可以了。此时在cmd中输入cscope -V 可以看到cscope: version 16.0a.  Compiled by MSLK <mslk.sa@gmail.com> 2009-04-04 说明cscope安装成功。 

    为了方便地使用cscope,我们还需要下载cscope的键盘映射设置,这样就可以在gvim中简单地通过快捷键来使用cscope,而不必敲复杂的命令了。键盘映射可以从这里下载(要FQ)。

    将下载到的cscope_maps.vim放在gvim的插件目录里,Linux用户可以放在$HOME/.vim/plugin中。

     silent! execute "!dir /s/b *.c,*.cpp,*.h,*.java,*.cs,*.php > cscope.files"                  //我的代码是php的,网上都没加*php,搞了半天才发现,如果系统为linux则输入的代码为 silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"

    利用上面的代码可以生成一个cscope.files 文件,然后再输入以下命令 silent! execute "!cscope -b"  这样会你的项目路径下生成一个cscope.out的文件。

    然后输入如下代码execute "cs add cscope.out"  在vim中添加了cscope.out这个数据库。如果成功,会看到如下提示

    然后就可以使用命令了 ,可以先输入 cscope help 查看帮助,发现find有很多参数。尝试一个 cs find s get_adslist (查找用到该函数的地方)

    为了方便,我们将这些带参数的命令都映射到配置文件中,代码如下。

      " 使用ctrl +shift +@ 然后再按  s
        nmap <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR><CR>
        nmap <C-@><C-@>g :vert scs find g <C-R>=expand("<cword>")<CR><CR>
        nmap <C-@><C-@>c :vert scs find c <C-R>=expand("<cword>")<CR><CR>
        nmap <C-@><C-@>t :vert scs find t <C-R>=expand("<cword>")<CR><CR>
        nmap <C-@><C-@>e :vert scs find e <C-R>=expand("<cword>")<CR><CR>
        nmap <C-@><C-@>f :vert scs find f <C-R>=expand("<cfile>")<CR><CR>    
        nmap <C-@><C-@>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>    
        nmap <C-@><C-@>d :vert scs find d <C-R>=expand("<cword>")<CR><CR>

    最后,我们来说一下cscope和ctags的兼容问题,在vimrc中配置了一段代码,如果已经创建了数据库,重新打开文件时,会提示已经载入数据库的信息。

    "最后,我们来说一下cscope和ctags的兼容问题。我在vimrc中配置了一段代码
        if has("cscope")
        set cscopequickfix=s-,c-,d-,i-,t-,e-
        set csto=0
        set cst
        set csverb
    endif

      4.安装 文件浏览插件和多标签编辑文件。下载相应的文件,放入到plugin目录下。在_vimrc中加入如下代码

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
    " 插件  
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
    " <F9>打开文件浏览窗口   插件为WinManager  
    let g:winManagerWindowLayout='FileExplorer'  
    nmap <F9> :WMToggle<CR>  
      
    " MiniBufExplorer       
    let g:miniBufExplMapWindowNavVim = 1   
    let g:miniBufExplMapWindowNavArrows = 1   
    let g:miniBufExplMapCTabSwitchBufs = 1   
    let g:miniBufExplModSelTarget = 1   

      用vim打开文件,按F9左侧显示目录文件夹。按ctrl和tab 在多标签中切换。 把光标放在当前标签上后,按d可以关闭当前标签,如果一个视图下有两个窗口,你想关闭一个,可以使用shif+zz 将光标所在的当前窗口关闭。另外还可以使用 ctrl +W +o 只留下光标所在的窗口,将其它窗口关闭。

       5.安装 snipMate 在http://www.vim.org/scripts/script.php?script_id=2540  下载后将文件全部覆盖在E:\Program Files\Vim\vimfiles 中 然后新建一个html文件

      输入html 按tab就可以补全了。相当强大。然后将E:\Program Files\Vim\vimfiles\snippets\javascript.snippets里面的代码全部复制后粘贴在                         E:\ProgramFiles\Vim\vimfiles\snippetshtml.snippets 里面,就可以在.html代码里面调用javascript里设置好的代码片段了。同理,将snippetshtml的代码后全部复制    到php.snippets中,就可以在*.php中使用html了。不要把javascript里的粘贴过来,因为javascript中的一些函数会和php中的函数冲突。

       6.对于pythoner来说,对齐是很重要的,可以在 ftplugin/python.vim 里加两句就好啦。setl et    setl tw=8 

       另外在编写python时可以使用   :set cuc  来将当前光标下的列高亮 ,查看是否对齐。

       

      ⑤gvim如何设置每次启动编辑器时自动载入上次关闭时打开的文件?在配置文件里加上

    "下次打开时回到上一次的状态
    autocmd VimLeave * nested if (!isdirectory($HOME . "/.vim")) |
        \ call mkdir($HOME . "/.vim") |
        \ endif |
        \ execute "mksession! " . $HOME . "/.vim/Session.vim"
    autocmd VimEnter * nested if argc() == 0 && filereadable($HOME . "/.vim/Session.vim") |
        \ execute "sou

      ⑥当使用MiniBufExplore管理文件时,几个文件通常会切割成几块,显示很不友好。先使用ctrl+ww 或者ctrl+方向键将光标移动到这个窗口,再使用ctrl+wc 关闭这个窗口。

        ⑦安装zendcoding  。在这个网站上下载zencoding 然后将zencoding-vim.zip 文件解压后,将得到的一个名   为zencoding-vim的文件夹放在E:\Program Files\Vim\vimfiles\plugin 下。在配置文件里面加入如下代码

    "安装zencoding后将呼出键修改成ctrl+j 
    let g:user_zen_expandabbr_key = '<c-j>'
    let g:use_zen_complete_tag = 1
    let g:no_html_toolbar = 'yes'
    let g:html_tag_case = 'lowercase'

    然后尝试新建一个hello.html文件,然后输入 html:4s 按 ctrl+j 就可以呼出代码了。可以尝试html:5 按ctrl+j 生成html5的格式。具体如何使用可以参考这篇文章

         ⑧安装css.vim。这里有vim常用插件整理。可是我安装之后,在css里面查看时,并没有将颜色背景色显示出来,不知道是什么原因。google了半天似乎没人遇到这问题,以后再解决吧。

      ⑨安装v im生成注释插件DoxygenToolkit  地址在这  将下载下来的文件放在plugin目录里即可。使用时输入命令:DoxAuthor  或者 :Dox 也可以,具体其它功能还有待摸索。

      ⑩安装中文帮助文档发,这里是下载地址

    ubuntu11.10下安装vim

    1.使用 sudo apt-get install vim 安装后目录在 ect/vim中

    2.安装vim的中文帮助文档,这里是下载地址 

    3.先将其解压缩: tar zxvf vimcdoc-<versoin>.tar.gz  然后进入 vimcdoc-<version> 目录并执行 ./vimcdoc.sh -i 就可以了。该安装程序会自动识别 Vim 的安装路径,将中文的文档拷贝到相应的地方。原有的英文文档不受影响。

    贴几个学习vim的博友地址

    linux的事儿

    游戏形式学习vim网站

    将vim打造成一个IDE

    在路上...
  • 相关阅读:
    关于jstl.jar引用问题及解决方法
    React 解析/ 第二节 使用 Reac
    NOde.js的安装和简介
    JACOB调用控件函数
    Linux 常用命令
    webService接口发布失败问题
    CommonsMultipartFile---用Spring实现文件上传
    验证签名(章)是否有效的方法
    新起点,新征程
    使用C#正则表达式获取必应每日图片地址
  • 原文地址:https://www.cnblogs.com/chenkaiadd/p/3100100.html
Copyright © 2020-2023  润新知