Vim编辑器简单使用

Vim Logo

自己根据马哥教程总结的部分Vim基础使用
Vim是一款很强大的文本编辑工具.如果你常需要书写或编辑大量文本,那学会它绝对会让你的工作与学习如虎添翼.

几种模式:

1.命令 : 默认进入显示的为命令模式,光标为粗竖线。按[aAiIoO..]等字母可切换到编辑模式.
2.编辑 : 光标为细竖线。别的模式按‘Esc’或'Ctrl+c'可以切换到命令模式.
3.末行 : 在命令模式下输入‘:’号可以切换到末行.
4.可视 : 在命令模式下输入v或V可切换到可视模式.

打开文件:

    vim +num file : 打开文件后光标处于第num行第一个字符处.
    vim + file: 打开文件后光标在最后一行。
    vim +/PATTERN file : 打开文件后光标处于第一个被PATTERN匹配到的地方

同时打开多个文件:

    用法 :vim file1 file2 ... (默认只显示第一个打开的文件,因为只有一个窗口)
        :next 打开下个file
        :prev 打开上个file
        :first 打开第一个file
        :last 打开最后一个file
    退出所有文件:
        :wall 保存所有文件
        :qall 退出所有文件
        :wqall 保存退出所有文件匹配到的行的行首

多窗口操作多个文件

多窗口同时显示多个文件:
vim -o file1 file2  水平分割窗口(即file1在上file2在下)    Ctrl+w 松开后再   按上下方向键切换光标所在窗口
vim -O file1 file2  垂直分割窗口(即file1在左file2在右)    Ctrl+w 松开后再按左右方向键切换光标所在窗口
再切分文件:
    Ctrl+w,s: 水平分割光标所在的窗口,即上下显示同一个文件(逗号处表松开前两键) 
    Ctrl+w,v: 垂直分割光标所在的窗口,即左右显示当前文件的两份相同的内容(同上)      
    Ctrl+w,c: 在光标所在的窗口中依次取消多窗口(同Ctrl + w,q功能一致) 
    Ctrl+w,x: 交换同一文件但多个窗口中的内容(即窗口位置互相调换)

命令模式下的光标跳转操作

    #G : #号用数字替代,表示跳至第#行,这个功能还可以用末行模式来完成:按':'号然后输入想查找的行号回车即可.如 :25
    + : 光标移动到非空格符的下一列
    - : 光标移动到非空格符的上一列
    H : 光标移动到当前屏第一行第一个字符
    M : 光标移到当前屏中间行第一个字符
    L : 光标移动至当前屏最后一行第一个字符

行首行尾跳转:
    ^ : 跳转至行首第一个非空白字符
    $ : 中转至行尾最后一个非空白字符
    0 : 中转至绝对行首
句间跳转:vim -R file: 以只读模式打开file文件。

单词间跳转:
    w : 下一个单词的词首
    b : 上一个单词的词首
    e : 下一个单词的词尾    
    n <space> : 光标向右偏移n个字符
行间跳转:
    gg: 跳至文件第一行
    G : 跳至文件最后一行
    
    n <enter> : 光标向下移动n行
行内跳转:
    0: 绝对行首
    ^: 行内第一个非空白字符
    $: 绝对行尾
句子跳转:
    ) : 句子间跳转,用得少
    ( : 
段间跳转:
    } :
    { :
翻屏:
    Ctrl + f: 文件后翻一屏
    Ctrl + d:        半屏
    Ctrl + b: 文件前翻一屏
    Ctrl + u:        半屏

命令模式下的编辑操作

编辑(支持前面加数字):
    删除:
        x,X(向前删一个字符), xp(对调) 
        dd,db,de,d^,d$,...
    改变:会切换到输入模式
        c, cc, cw, c$, c^
    替换:
        r : 替换光标当前那个字符
        R : 会一直替换光标所指的文字,直到按下ESC为止
    复制:(yank)
        y (用法同删除d类似) 如yy即复制一行 
    粘贴:
        P(当前行上一行), p(往当前行下一行)
        如果复制或删除的不是整行则
            P --> 粘贴在光标所在字符的前面
            p -->                  后
    撤销:
        u : 撤销此前的操作
        #u: 撤销此前#个操作
    撤销此前的撤销: Ctrl + r
    
    重复执行此前的命令: .
    插入: i I
    添加: a A
    插入新一行: o O

可视模式(相当于窗口界面上用鼠标选中一段内容):

    v : 按字符选定
    V : 按行选定
    对选定的内容可结合上述编辑命令进行操作

末行模式:

    1. 地址定界
        %: 表示全文
        .: 表示当前行
        $: 表示最后一行    
        +#: 向下的#行
        strart_pos[,end_pos]:
            例如:5 第5行  
                :5,10 从第5行到第10行                                # 示例删除5至99行内容   :5,99d  
                :5,+10 从第5行开始往后加10行 

        /pattern/: 光标所在处起始向文件尾部第一次被模式所匹配到的行       # :/
            如 :/first/,$
        :/pattern1/,/pattern2/  表示从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束.
        同地址定界符配合使用的命令:
            d,y,c,
            w /PATH/TO/SOMEFILE: 将范围内的文本保存至指宝的文件中.
            r /PATH/TO/SOMEFILE: 将指定的文件中的文件读取并插入至指定的位置.
    2.查找(这个方法同Linux man手册是一样的)
        /PATTERN: 从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
            n 下一个
            N 上一个
        ?PATTERN: 从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
            n与N的用法与上面相反
    3.查找并替换
        格式:
            :s/old/new/修饰符   其中old可使得正则表达式,new不能使用正则表达式但可以引用.
                修饰符:
                    i : 查找时忽略大小写
                    g : 全局替换,意味着一行中如果匹配到多次则均替换
    4. 常用示例:
        :g/^$/d  删除空白行
    5. 写输出(拷贝 保存)保存到其他文件
        :35,46 w /root/new.txt
    6. 在当前光标后 读(插)入新内容
        :r /home/james/books.txt

Vim配置文件常用功能配置指令:


        vim FILE +NUM:      定位具体某行打开FILE    
        set nocompatible    " 关闭 vi 兼容模式
        syntax on           " 自动语法高亮
        set list            " 显示tab与换行符"$"
        
        set number          " 显示行号
        set cursorline      " 突出显示当前行
        set ruler           " 打开状态栏标尺
        set shiftwidth=4    " 设定 << 和 >> 命令移动时的宽度为 4
        set softtabstop=4   " 使得按退格键时可以一次删掉 4 个空格
        
        set nobackup        " 覆盖文件时不备份
        set autochdir       " 自动切换当前目录为当前文件所在的目录
        filetype plugin indent on  " 开启插件
        set backupcopy=yes  " 设置备份时的行为为覆盖
        set ignorecase smartcase   " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
        set nowrapscan      " 禁止在搜索到文件两端时重新搜索
        set incsearch       " 输入搜索内容时就显示搜索结果
        set hlsearch        " 搜索时高亮显示被找到的文本
        set noerrorbells    " 关闭错误信息响铃
        set novisualbell    " 关闭使用可视响铃代替呼叫
        set t_vb=           " 置空错误铃声的终端代码
        " set showmatch     " 插入括号时,短暂地跳转到匹配的对应括号
        " set matchtime=2   " 短暂跳转到匹配括号的时间
        set magic           " 设置魔术
        set hidden          " 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
        set guioptions-=T   " 隐藏工具栏
        set guioptions-=m   " 隐藏菜单栏
        set smartindent     " 开启新行时使用智能自动缩进
        set backspace=indent,eol,start  " 不设定在插入状态无法用退格键和 Delete 键删除回车符
        set cmdheight=1     " 设定命令行的行数为 1
        set laststatus=2    " 显示状态栏 (默认值为 1, 无法显示状态栏)
        set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
        " 设置在状态行显示的信息
        set foldenable      " 开始折叠
        set foldmethod=syntax " 设置语法折叠
        set foldcolumn=0    " 设置折叠区域的宽度
        setlocal foldlevel=1 " 设置折叠层数为
        " set foldclose=all " 设置为自动关闭折叠
        " nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
        " 用空格键来开关折叠
        set nocompatible           " 去掉有关vi一致性模式,避免以前版本的bug和局限"    
        set guifont=Luxi/ Mono/ 9  " 设置字体,字体名称和字号"
        filetype on                " 检测文件的类型"    
        set history=1000           " 记录历史的行数"
        set background=dark        " 背景使用黑色"
        syntax on                  " 语法高亮度显示
        set autoindent             " vim使用自动对齐,也就是把当前行的对齐格式应用到下一行(自动缩进)"
        set cindent                " (cindent是特别针对 C语言语法自动缩进)"
        set smartindent            " 依据上面的对齐格式,智能的选择对齐方式,对于类似C语言编写上有用"   
        set tabstop=4              " 设置tab键为4个空格"
        set shiftwidth =4          " 设置当行之间交错时使用4个空格"     
        set ai!                    " 设置自动缩进" 
        colorscheme molokai " 设定配色方案
        set showmatch              " 设置匹配模式,类似当输入一个左括号时会匹配相应的右括号"      
        set guioptions-=T          " 去除vim的GUI版本中得toolbar"   
        set vb t_vb=               " 当vim进行编辑时,如果命令错误,会发出警报,该设置去掉警报"       
        set ruler                  " 在编辑过程中,在右下角显示光标位置的状态行"     
        set nohls                  " 默认情况下,寻找匹配是高亮度显示,该设置关闭高亮显示"     
        set incsearch              " 在程序中查询一单词,自动匹配单词的位置;如查询desk单词,当输到/d时,会自动找到第一个d开头的单词,当输入到/de时,会自动找到第一个以ds开头的单词,以此类推,进行查找;当找到要匹配的单词时,别忘记回车" 
        set backspace=2            " 设置退格键可用"

vim中切换模式时显示不同的光标形状(放置在家目录中的.vimrc文件中即可):
if has("autocmd")
  au VimEnter,InsertLeave * silent execute '!echo -ne "\e[2 q"' | redraw!
  au InsertEnter,InsertChange *
    \ if v:insertmode == 'i' | 
    \   silent execute '!echo -ne "\e[6 q"' | redraw! |
    \ elseif v:insertmode == 'r' |
    \   silent execute '!echo -ne "\e[4 q"' | redraw! |
    \ endif
  au VimLeave * silent execute '!echo -ne "\e[ q"' | redraw!
endif

最后分享个不错的VIM思维导图概览

会用这些功能就够了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,199评论 9 467
  • vim是由vi发展来的一个强大的文本编辑器,代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用...
    dxldeng阅读 730评论 0 1
  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 3,130评论 0 3
  • 有人说每一个去西藏的人,心底都有一段不予人诉说的故事,认识你便是去西藏的那一年,或许是那里的阳光太过干净,你...
    薇薇安的小调阅读 260评论 0 0
  • 半夏防风当归至,“李谢桃将”有果鲜。 一日四季眨眼过,睡醒不二都如幻。
    真如自在阅读 150评论 7 5