Vim常用命令及配置方案(转)

实用,虽然还没亲测。

    Vim常用命令及配置方案

    很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好。我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很是难受,所以就趁这个机会把基本操作都记录下来,一来可以当做自己的笔记,二来希望可以帮到同样和我一样用过vim但却忘得差不多的人。另外,这里也记录一下自己的vim配置,这个配置可能并没有其他网友分享的那么强大,但至少足够简单,能够提高自己编码的效率。

    vim常用命令

    首先先简单梳理一下vim的工作模式。vim有三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
    这里写图片描述
    简单来讲就是,当我们刚打开vim,或者使用vim打开了一个文件,终端上显示着文件的内容,这时候就是命令模式(如上图就是刚打开一个文件的情况,此时光标位于第一行行首处),在现在的情况下,键盘输入小写的i a o 或者大写I A O中的其中一个,就可以进入输入模式,各个按键的具体意义如下:

    按键具体意义
    i从目前光标所在处输入
    I在目前所在行的第一个非空格符处开始输入
    a从目前光标所在的下一个字符处开始输入
    A从光标所在行的最后一个字符处开始输入
    o在目前光标所在的下一行处输入新的一行
    O在目前光标所在的上一行处输入新的一行
    r继续输入一个字符以取代光标所在处后面单个字符,而后返回命令模式
    R新输入的字符会一直取代光标所在处后面的字符

    当我们使用上述按键进入输入模式,配合方向键编辑好文件内容后,使用ESC键可退出输入模式,回到命令模式,vim的大部分命令都是在命令模式下使用。
    命令模式下的按键十分丰富,主要的操作为光标移动、复制粘贴、搜索替换
    光标移动的基本按键如下:

    按键具体意义
    h 或 向左箭头键(←)光标向左移动一个字符
    j 或 向下箭头键(↓)光标向下移动一行
    k 或 向上箭头键(↑)光标向上移动一行
    l 或 向右箭头键(→)光标向右移动一个字符

    在上面的基础上,如果你想光标的位置一次移动多行或者在同一行上移动多个字符,可以有以下几种方法:

    • 直接输入数字并在其后输入相应的方向,例如输入20j20↓表示光标向下移动20行,输入20l20→表示光标向右移动20个字符。
    • 输入数字后加空格可以使光标向右移动n个字符,例如20[space]即和上面第一条的20l20→达到相同的效果,为了简单一点,我个人认为如果不是vim深度用户的话,我们可以直接放弃记忆这个命令。同样性质的命令还有20[enter],表示光标向下移动20行
    • ctrl+f/b/d/u可以用来上下翻页,但是对大部分人来说没有必要去记这个繁琐的命令,我个人更加推荐使用键盘上的Page UpPage Down来上下翻页
    • 0$可以用来移动光标到行首或行尾,同样,我还是认为没必要去记忆这个命令,而是直接使用HomeEnd来达到同样的效果

    另外,还有一些很方便的操作值得单独拎出来进一下:

    按键(区分大小写)具体意义
    H(High)光标移动到这个屏幕的最上方那一行的第一个字符
    M(Middle)光标移动到这个屏幕的中央那一行的第一个字符
    L(Low)光标移动到这个屏幕的最下方那一行的第一个字符
    G移动到这个文件的最后一行(常用)
    gg移动到这个文件的第一行(常用)
    nG移动到这个文件的第n行

    复制粘贴的操作比较繁杂,但也并不是没有规律可循,具体如下:

    按键具体意义
    x或[delete]删除光标后面的单个字符,
    X或[backspace]删除光标前面的单个字符
    nx连续向后删除 n 个字符。同理,可以有大写的nX
    dd删除光标所在的一整行
    ndd删除光标向下的n行(包括光标那一行)
    d+某个位置删除光标处到那个位置的所有内容。例如d1G删除从光标到第一行的所有内容,dG删除从光标到最后一行的所有内容,d$d[End]删除从光标处到行尾的所有字符。以此类推
    yy复制光标所在的那一行(常用)
    nyy复制光标向下的n行(包括光标那一行)
    y+某个位置复制选取的范围,选取范围如前面d+某个位置所示
    p将已复制的内容在下一行粘贴
    P将已复制的内容在上一行粘贴
    J将光标所在行与下一行的数据结合成同一行,即在删除该行和下一行之间的换行符。
    u复原前一个动作(常用)
    [ctrl]+r重做上一个动作(常用)
    .(小数点)重复前一个动作(常用)

    搜索替换部分为了简洁一点,就只提一下搜索,替换部分就不涉及了

    按键具体意义
    /[要搜索的字符]向光标之下寻找一个匹配的字符串。如/int会搜索匹配int
    ?[要搜索的字符]向光标之上寻找一个匹配的字符串。

    在上面搜索字符串的基础上按回车键,就可使光标跑到搜索到的字符串处,这时输入n光标就会跳到下一个或上一个匹配的字符串处,具体是上还是下取决于刚才执行的是/string还是?string,而输入大写的N则是与小写n相反的方向。(注意,当执行n到达文件底部时就会循环跳到顶部,反之亦然)

    好了,现在我们已经能够编辑文件内容了,那怎样保存文件呢?一般情况下,当需要保存或退出文件时,我们习惯性按一下ESC键以进入命令模式(当然如果已经在命令模式下也习惯性按一下吧),这时输入加相应的指令就能对文件执行相应的操作,这里需要注意一点的就是,如果你对该文件没有相应的权限,那么执行相关操作将会被拒绝,例如我在ubuntu下想要修改我没有权限的文件,vim会提示权限拒绝,我需要执行sudo vim filename以root权限进入vim才能修改文件。

    按键具体意义
    :w保存编辑的内容
    :w!若文件属性为只读,强制保存编辑的内容,需要相应的权限
    :q退出vim
    :q!强制离开不保存编辑过的内容
    :wq保存后退出vim
    :wq!强制保存后退出vim
    ZZ若文件没有改动,则不储存离开,若文件已经被改动过,则储存后离开!
    :w filename另存为filename
    :! command暂时离开vim到命令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!

    与系统剪切板交互

    这里还要重点提一下vim与系统之间如何进行粘贴复制,我们知道,上面的粘贴复制命令只能在vim里面使用,无法将vim里面的内容复制出来或者将外面的内容粘贴进去,这将大大降低了我们CV键的威力,所以怎么办呢?

    1. 首先查看vim版本是否支持clipboard
      vim --version | grep "clipboard"
      如果显示clipboard前面有一个小小的减号,说明不支持。
    2. 不支持的话需要安装图形化界面的vim,使用如下命令
      sudo apt-get install vim-gnome
    3. 安装好了之后使用“+y进行复制,使用”+p进行粘贴,配合使用vV选中内容

    -
    当然,如果你觉得上面的命令太复杂了,你可以在下面所述的配置文件里加上set clipboard=unnamedplus 这样就可以直接使用 y p命令粘贴复制了。

    配置方案

    这个只是一个简单的vim配置,留下了一些我认为必要的功能,没有那么多花俏的功能,也不像网上一些文章分享的配置成酷炫的IDE,我个人一贯的原则就是简洁明了,使用方便即可。
    使用方法:保存成名为.vimrc的文件放在目录下,即用户个人目录下即可。

    "********************************************************
    "                   一般性配置                          *
    "********************************************************
    
    "关闭vim一致性原则,避免以前版本的一些bug和局限
    set nocompatible
    
    "显示行号
    set number
    
    "设置在编辑过程中右下角显示光标的行列信息
    set ruler
    
    "在状态栏显示正在输入的命令
    set showcmd
    
    "设置历史记录条数
    set history=1000
    
    "设置取消备份 禁止临时文件的生成
    set nobackup
    set noswapfile
    
    "设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
    set showmatch
    
    "设置C/C++方式自动对齐
    set autoindent
    set cindent
    
    "开启语法高亮功能
    syntax enable
    syntax on
    
    "指定配色方案为256色
    set t_Co=256
    
    "设置搜索时忽略大小写
    set ignorecase
    
    "实时显示搜索结果
    set incsearch
    
    "配置backspace的工作方式
    set backspace=indent,eol,start
    
    "设置在vim中可以使用鼠标
    set mouse=a
    
    "设置tab宽度
    set tabstop=4
    
    "设置自动对齐空格数
    set shiftwidth=4
    
    "设置退格键时可以删除4个空格
    set smarttab
    set softtabstop=4
    
    "将tab键自动转换为空格
    set expandtab
    
    "设置编码方式
    set encoding=utf-8
    
    "自动判断编码时 依次尝试以下编码
    set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
    
    "检测文件类型
    filetype on
    
    "针对不同的文件采取不同的缩进方式
    filetype indent on
    
    "启动智能补全
    filetype plugin indent on
    
    "括号自动补全
    inoremap ( ()<ESC>i
    inoremap [ []<ESC>i
    inoremap { {}<ESC>i
    inoremap < <><ESC>i
    
    "直接使用y p进行系统级复制粘贴
    
    
    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值