信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 953|回复: 0
打印 上一主题 下一主题

程序员都应该知道的130个vim命令

[复制链接]
  • TA的每日心情
    开心
    2024-10-21 14:10
  • 签到天数: 882 天

    [LV.10]以坛为家III

    跳转到指定楼层
    楼主
    发表于 2013-8-15 17:26:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    从1970年开始,vi和vim 就成为了程序员最喜爱的文本编辑器之一。5年前,我写了一个问自己名为“每个程序员都应该知道的100个vim 命令” 这次算是之前那篇文章的改进版,希望你会喜欢。
    基础
    :e filenameOpen filename for edition
    :wSave file
    :qExit Vim
    :q!Quit without saving
    :xWrite file (if changes has been made) and exit
    :sav filenameSaves file as filename
    .Repeats the last change made in normal mode
    5.Repeats 5 times the last change made in normal mode

    在文件中移动
    k or Up Arrowmove the cursor up one line
    j or Down Arrowmove the cursor down one line
    emove the cursor to the end of the word
    bmove the cursor to the begining of the word
    0move the cursor to the begining of the line
    Gmove the cursor to the end of the line
    ggmove the cursor to the begining of the file
    Lmove the cursor to the end of the file
    :59move cursor to line 59. Replace 59 by the desired line number.
    20|move cursor to column 20.
    %Move cursor to matching parenthesis
    [[Jump to function start
    [{Jump to block start

    剪切、复制和粘贴
    yCopy the selected text to clipboard
    pPaste clipboard contents
    ddCut current line
    yyCopy current line
    y$Copy to end of line
    DCut to end of line

    搜索
    /wordSearch word from top to bottom
    ?wordSearch word from bottom to top
    *Search the word under cursor
    /\cstringSearch STRING or string, case insensitive
    /jo[ha]nSearch john or joan
    /\< theSearch the, theatre or then
    /the\>Search the or breathe
    /\< the\>Search the
    /\< &brvbar;.\>Search all words of 4 letters
    /\/Search fred but not alfred or frederick
    /fred\|joeSearch fred or joe
    /\<\d\d\d\d\>Search exactly 4 digits
    /^ \{3}Find 3 empty lines
    :bufdo /searchstr/Search in all open files
    bufdo %s/something/somethingelse/gSearch something in all the open buffers and replace it withsomethingelse

    替换
    :%s/old/new/gReplace all occurences of old by new in file
    :%s/onward/forward/giReplace onward by forward, case unsensitive
    :%s/old/new/gcReplace all occurences with confirmation
    :2,35s/old/new/gReplace all occurences between lines 2 and 35
    :5,$s/old/new/gReplace all occurences from line 5 to EOF
    :%s/^/hello/gReplace the begining of each line by hello
    :%s/$/Harry/gReplace the end of each line by Harry
    :%s/onward/forward/giReplace onward by forward, case unsensitive
    :%s/ *$//gDelete all white spaces
    :g/string/dDelete all lines containing string
    :v/string/dDelete all lines containing which didn’t contain string
    :s/Bill/Steve/Replace the first occurence of Bill by Steve in current line
    :s/Bill/Steve/gReplace Bill by Steve in current line
    :%s/Bill/Steve/gReplace Bill by Steve in all the file
    :%s/^M//gDelete DOS carriage returns (^M)
    :%s/ / /gTransform DOS carriage returns in returns
    :%s#<[^>]\+>##gDelete HTML tags but keeps text
    :%s/^\(.*\) \1$/\1/Delete lines which appears twice
    Ctrl+aIncrement number under the cursor
    Ctrl+xDecrement number under cursor
    ggVGg?Change text to Rot13

    大小写
    VuLowercase line
    VUUppercase line
    g~~Invert case
    vEUSwitch word to uppercase
    vE~Modify word case
    ggguGSet all text to lowercase
    gggUGSet all text to uppercase
    :set ignorecaseIgnore case in searches
    :set smartcaseIgnore case in searches excepted if an uppercase letter is used
    :%s/\<./\u&/gSets first letter of each word to uppercase
    :%s/\<./\l&/gSets first letter of each word to lowercase
    :%s/.*/\u&Sets first letter of each line to uppercase
    :%s/.*/\l&Sets first letter of each line to lowercase

    读写文件
    :1,10 w outfileSaves lines 1 to 10 in outfile
    :1,10 w >> outfileAppends lines 1 to 10 to outfile
    :r infileInsert the content of infile
    :23r infileInsert the content of infile under line 23

    文件浏览器
    :e .Open integrated file explorer
    :SexSplit window and open integrated file explorer
    :Sex!Same as :Sex but split window vertically
    :browse eGraphical file explorer
    :lsList buffers
    :cd ..Move to parent directory
    :argsList files
    :args *.phpOpen file list
    :grep expression *.phpReturns a list of .php files contening expression
    gfOpen file name under cursor

    和 Unix 系统交互
    :!pwdExecute the pwd unix command, then returns to Vi
    !!pwdExecute the pwd unix command and insert output in file
    :shTemporary returns to Unix
    $exitRetourns to Vi

    对齐
    :%!fmtAlign all lines
    !}fmtAlign all lines at the current position
    5!!fmtAlign the next 5 lines

    Tabs/Windows
    :tabnewCreates a new tab
    gtShow next tab
    :tabfirstShow first tab
    :tablastShow last tab
    :tabm n(position)Rearrange tabs
    :tabdo %s/foo/bar/gExecute a command in all tabs
    :tab ballPuts all open files in tabs
    :new abc.txtEdit abc.txt in new window

    分屏显示
    :e filenameEdit filename in current window
    :split filenameSplit the window and open filename
    ctrl-w up arrowPuts cursor in top window
    ctrl-w ctrl-wPuts cursor in next window
    ctrl-w_Maximize current window vertically
    ctrl-w|Maximize current window horizontally
    ctrl-w=Gives the same size to all windows
    10 ctrl-w+Add 10 lines to current window
    :vsplit fileSplit window vertically
    :sview fileSame as :split in readonly mode
    :hideClose current window
    : nlyClose all windows, excepted current
    :b 2Open #2 in this window

    自动完成
    Ctrl+n Ctrl+p (in insert mode)Complete word
    Ctrl+x Ctrl+lComplete line
    :set dictionary=dictDefine dict as a dictionnary
    Ctrl+x Ctrl+kComplete with dictionnary

    Marks
    m {a-z}Marks current position as {a-z}
    ' {a-z}Move to position {a-z}
    ''Move to previous position

    缩写
    :ab mail mail@provider.orgDefine mail as abbreviation of mail@provider.org

    文本缩进
    :set autoindentTurn on auto-indent
    :set smartindentTurn on intelligent auto-indent
    :set shiftwidth=4Defines 4 spaces as indent size
    ctrl-t, ctrl-dIndent/un-indent in insert mode
    >>Indent
    <<Un-indent
    =%Indent the code between parenthesis
    1GVG=Indent the whole file

    语法高亮
    :syntax onTurn on syntax highlighting
    :syntax offTurn off syntax highlighting
    :set syntax=perlForce syntax highlighting

    踩过的脚印
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 转播转播 分享分享 顶 踩
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-5 22:39

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表