`
venus585625
  • 浏览: 248857 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

vim自定义快捷键

    博客分类:
  • vim
 
阅读更多
vim自定义快捷键


[root@localhost dphp]# cat ~/.vimrc


noremap <F5> :Tlist<cr> //定义F5为":Tlist"命令。<cr>的意思是不需要再敲回车确认



map <F10> :NERDTreeToggle<CR>   //windows下定义的快捷键
map <F9> :Tlist<CR        //windows下定义的快捷键

自定义状态栏

set laststatus=2
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]

本节所用命令的帮助入口:

:help compatible
:help mapleader
:help map
:help autocmd 

为什么我的vim这么难用?不能语法高亮,没有折行,不能打开多个窗口多个buffer,不能……

为什么别人用几个键就可以完成一个很复杂的功能,而我不能?

为什么别人的vim看起来和我的很不一样?

……

当你开始问这些问题的时候,是时候去检查一下你的vimrc了。

当vim在启动时,如果没有找到vimrc或gvimrc,它缺省工作VI兼容的模式。这意味着,你只能使用VI所具备的功能,而vim中的大量扩展功能将无法使用。也许这就是你的vim如此难用的原因。

vim中自带了一个vimrc例子,让我们从这个例子开始吧。

下面我以Linux下的vim为例,windows版本的vim,会在后面提到。

示例的vimrc(名为vimrc_example.vim)通常位于/usr/share/vim/vimXXX/目录下,其中vimXXX与你所使用的vim版本有关。

首先把这个示例的vimrc拷贝到相应的目录,在Linux下,应该把它拷贝到你的home目录下,名字为”.vimrc”,下面是shell命令:

cp /usr/share/vim/vim70/vimrc_example.vim ~/.vimrc
或者你在vim中执行下面的命令,和上面的shell命令完成相同的功能:

:!cp $vimRUNTIME/vimrc_example.vim ~/.vimrc
现在,你退出vim后再进入,你的vim和刚才已经不一样了。

你可以先读一下你的vimrc,看看它都设定了什么:

:e ~/.vimrc
这是一个注释良好的文件,不需要多解释。

对windows版本的vim,它已经缺省的有了一个vimrc,你可以在vim在使用下面的命令来查看它:

:e $vim/_vimrc
在这个文件中,它包含了上面提到的vimrc_example.vim。同时,它会把vim设置的更符合windows的操作习惯。比如,支持CTRL-C拷贝,CTRL-V粘贴等等。Windows下的用户,可以使用$vim/_vimrc来做为你的第一个vimrc。

顺便提一句,在unix/linux中,文件名可以以”.”开头,表明此文件是隐藏的。而在windows中,不允许文件名以”.”开头,所以,windows版本的vim,将读取_vimrc来做为自己的配置文件。

在今后使用vim的日子里,你会频繁的更改你的vimrc。所以我们需要设置一些快捷方式,使我们能快速的访问vimrc。

把下面这段内容拷贝到你的vimrc中:
    "Set mapleader
    let mapleader = ","

    "Fast reloading of the .vimrc
    map <silent> <leader>ss :source ~/.vimrc<cr>
    "Fast editing of .vimrc
    map <silent> <leader>ee :e ~/.vimrc<cr>
    "When .vimrc is edited, reload it
    autocmd! bufwritepost .vimrc source ~/.vimrc 

为了方便解释,我给每一行都加了一个行号。

在vimrc中,双引号开头的行,将被当作注释忽略。
第2行,用来设置mapleader变量,当mapleader为未设置或为空时,使用缺省的”\”来作为mapleader。
mapleader变量是作用是什么呢?看下面的介绍。

第5行定义了一个映射(map),这个映射把<leader>ss,映射为命令:source ~/.vimrc<cr>。当定义一个映射时,可以使用<leader>前缀。而在映射生效时,vim会把<leader>替换成mapleader变量的值。也就是说,我们这里定义的<leader>ss在使用时就变成了”,ss“,当输入这一快捷方式时,就会source一次~/.vimrc文件(也就是重新执行一遍.vimrc文件)。
第7行,定义了<leader>ee快捷键,当输入,ee时,会打开~/.vimrc进行编辑。
第9行,定义了一个自动命令,每次写入.vimrc后,都会执行这个自动命令,source一次~/.vimrc文件。
有了上面的快捷键,我们就能快速的打开vimrc文件编辑,快速重新source vimrc文件,方便多了。

无论在windows还是在linux中,我都使用vim作为我的缺省编辑器。并且,我想使用同一个vimrc文件。因此,我定义了一个MySys()函数,用来区分不同的平台,以进行不同的配置。

另外,在编辑vimrc文件时,我更喜欢新开一个标签页来编辑,而不是在当前窗口中。因此,我定义了SwitchToBuf()函数,它在所有标签页的窗口中查找指定的文件名,如果找到这样一个窗口,就跳到此窗口中;否则,它新建一个标签页来打开vimrc文件。(注:标签页(tab)功能只有在vim 7.0版本以上才支持。)

下面是我的vimrc中使用的设定,希望能够抛砖引玉:

" Platform
function! MySys()
  if has("win32")
    return "windows"
  else
    return "linux"
  endif
endfunction

function! SwitchToBuf(filename)
    "let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")
    " find in current tab
    let bufwinnr = bufwinnr(a:filename)
    if bufwinnr != -1
        exec bufwinnr . "wincmd w"
        return
    else
        " find in each tab
        tabfirst
        let tab = 1
        while tab <= tabpagenr("$")
            let bufwinnr = bufwinnr(a:filename)
            if bufwinnr != -1
                exec "normal " . tab . "gt"
                exec bufwinnr . "wincmd w"
                return
            endif
            tabnext
            let tab = tab + 1
        endwhile
        " not exist, new tab
        exec "tabnew " . a:filename
    endif
endfunction

"Fast edit vimrc
if MySys() == 'linux'
    "Fast reloading of the .vimrc
    map <silent> <leader>ss :source ~/.vimrc<cr>
    "Fast editing of .vimrc
    map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>
    "When .vimrc is edited, reload it
    autocmd! bufwritepost .vimrc source ~/.vimrc
elseif MySys() == 'windows'
    " Set helplang
    set helplang=cn
    "Fast reloading of the _vimrc
    map <silent> <leader>ss :source ~/_vimrc<cr>
    "Fast editing of _vimrc
    map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr>
    "When _vimrc is edited, reload it
    autocmd! bufwritepost _vimrc source ~/_vimrc
endif

" For windows version
if MySys() == 'windows'
    source $VIMRUNTIME/mswin.vim
    behave mswin
endif

注意:我在windows中也定义一个”HOME”环境变量,然后把_vimrc放在”HOME”环境变量所指向的目录中。如果你打算在windows中使用上面的设定,也需要这样做!

好了,现在我们知道如何永久更改‘sessionoptions’选项和‘viminfo’选项了,把对它们的配置放入你的vimrc即可。

vim自带的示例vimrc中,只定义最基本的配置。

在http://www.amix.dk/vim/vimrc.html有一个非常强大的vimrc,有人戏称为”史上最强的vimrc”,或许有些言过其实。不过,如果你通读了这个vimrc,相信能从中学到很多……

这里有一个redguardtoo修改过的版本,可以对照参考一下。

我的vimrc也是基于Amix的模板,然后自已做了很多修改。

建议:不要照拷这个vimrc!可能这个文件的设定并不符合你的习惯。另外,这个文件的设定,可能也不能在你的工作环境中运行。
分享到:
评论

相关推荐

    vim图解,vim cheat sheet

    vim全功能图谱解说,高清彩色图,可以自定义打印,支持编辑,方便高效查阅,对于初学者有较大的帮助。把vim常用的功能及快捷键以功能分区,使用不同颜色区分开来,直观学习。

    linux系统下(如uos,deepin,麒麟等)vim最常用插件一键式配置及安装

    以及自定义的快捷键。 即使你是新手,也能根据这个资源中的说明,1分钟内搞定。 注意:我这里针对的是linux系统,对于windows系统需要稍作修改,那个你自己摸索 我已经不使用windows系统好久了。 注意:使用说明中...

    vim user manual ---vim用户手册

    j31.3j 菜单命令的快捷键 j31.4j Vim的窗口位置和大小 j31.5j 其它 调节Vim 让Vim如你所愿地工作 jusr 40.txtj 定义新命令 j40.1j 键映射 j40.2j 自定义冒号命令 j40.3j 自动命令 jusr 41.txtj Vim脚本 j41.1j 介绍 ...

    Vim文本编辑器及其应用详解

    可视化模式的基本操作编辑模式操作Vim 查找文本Vim 替换文本Vim 保存退出文本Vim多窗口编辑模式在一个窗口同时打开多个文件多窗口编辑Vim批量注释和自定义注释快捷键Vim显示行号配置文件(.vimrc)详解基本配置 ...

    Windows 剪贴板增强程序 CopyQ 7.0.0

    支持带有键盘快捷键的简单Vim-like编辑器 解压后,双击copyq.exe即可打开,软件支持中文,可在设置中更改语言;保持软件后台运行,那么在使用电脑过程中,复制的任何文本、图像等都会被copyQ保存, 打开软件主界面...

    Vim用户手册中文版72.pdf

    31.3 菜单命令的快捷键 31.4 Vim的窗口位置和大小 31.5 其它 第32章 树状撤消 32.1 为每个修改编号 32.2 在不同撤消分支间移动 32.3 时间之旅 第40章 定义新命令 40.1 键映射 40.2 自定义冒号命令 40.3 自动命令 第...

    config_files

    绝对不是高级用户,但我尝试添加一些自定义快捷键/东西,这些使我的生活更轻松 (主文件) 皮康 我正在使用自定义的 ,它可以实现圆角和更好的透明模糊 rc.lua 我将与Arch结合使用,并使其几乎可用于几乎所有日常...

    Sublime Text for Mac v4.0.0.4164 苹果版代码编辑工具

    它具备轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱,它在支持语法高亮、代码补全、代码片段(Snippet)、代码折叠、行号显示、自定义皮肤、配色方案等...

    sublimet格式XML和JSON插件.zip

    Sublime Text 3是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点; 它体积小巧,无需安装,绿色便携;它可跨平台支持Windows/Mac/Linux;支持32与64位操作系统,它在支持语法高亮、...

    ideavim自定义配置文件.pdf

    IDEAVIM的快捷键,每个功能键都是作者精心挑选的,希望能够帮助到大家。

    vam-keybindings:Virt-A-Mate的类似于VIM的键绑定插件

    使用类似vim的键序列或类似vscode的快捷键 访问其他内置功能,例如选择历史记录和快速创建原子 在支持操纵杆的情况下使用键盘或游戏板 与时间轴和其他插件集成 如何使用按键绑定 Keybindings.cslist是主要插件,应...

    PREFiX-crx插件

    支持 Vim 风格快捷键操作全部功能- 过滤消息功能- 全自动展开短链接、第三方内容提供商图片预览- 每 30s 自动刷新 Timeline 和获取未读@消息/私信数量- 随便看看 / 关注的话题更新提醒- 在图标一角显示新通知数量和...

    PREFiX:简洁,易用的Chrome饭否客户端

    字首 简洁,易用的饭否客户端 作者: @锐风 安装 Chrome应用商店地址: : ... Vim风格快捷键支持 可以调整提示音音量 自动调整刷新频率 智能滑动页面 可以自定义缓存数量 旋转图片功能 版本0.7.0 流API支持,实

    字首「PREFiX」-crx插件

    - 支持 Vim 风格快捷键操作全部功能 - 过滤消息功能 - 全自动展开短链接、第三方内容提供商图片预览 - 每 30s 自动刷新 Timeline 和获取未读@消息/私信数量 - 随便看看 / 关注的话题更新提醒 - 在图标一角显示新通知...

    前缀的推特「PREFiX for Twitter」-crx插件

    - 支持 Vim 风格快捷键操作全部功能 - 过滤消息功能 - 全自动展开短链接、第三方内容提供商图片预览 - 关注的话题更新提醒 - 在图标一角显示新通知数量和播放提示音 - 通过地址栏查看 Timeline 和发布消息 - @自动...

    dotfiles:使用bash,tmux和vim的我的点文件和开发环境

    我的个人dotfile设置安装git clone https://github.com/ronakg/dotfiles cd dotfiles ./install产品特点重击简单但有用的bash提示vi模式默认开启Vim 专为减少击键而设计针对C编程进行了优化我喜欢的自定义主题插件...

    sublime text 3

    Sublime Text 3是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点; 它体积小巧,无需安装,绿色便携;它可跨平台支持Windows/Mac/Linux;支持32与64位操作系统,它在支持语法高亮、...

    Sublime_Text3

    Sublime Text3 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点,它可跨平台支持Windows/Mac/Linux;支持32与64位操作系统,它在支持语法高亮、代 码补全、代码片段(Snippet)、...

    安卓系统下的bash shell,ssh服务器,gcc编译器以及vim文本编辑器等

    命令别名:自定义命令 alias:可以用来定义和设置命令的别名 注意:使用alias命令定义的别名其生命周期仅限于当前shell的生命期;如果修改.bashrc配置文件,其中保存的别名并不会立即生效,只有在重新加载该文件...

    Sublime Text 3 优化版.7z

    Sublime Text 是一个轻量、简洁、高效、跨平台的编辑器,方便的配色以及兼容vim快捷键等各种优点博得了很多前端开发人员的喜爱!Sublime Text 这款程序员必备代码编辑器,几乎每位程序员提到Sublime Text 都是...

Global site tag (gtag.js) - Google Analytics