文档章节

Vim 基本配置

阿dai学长
 阿dai学长
发布于 2017/06/20 18:36
字数 1112
阅读 122
收藏 1

Vim是个强大的编辑器,在各种插件的辅助下甚至也能匹敌IDE,但也不能过分的依赖来各种插件,而忘记来Vim原本的功能与操作。Vim本身的功能很强大,学习曲线很曲折,需要我们慢慢的来学习,多多的使用。Vim自身有很多配置选项,可以在~/.vimrc中配置,从而方便我们操作。使用Vim也有一段时间来,也有了一套自己习惯好用的配置,下面列出我的基本配置。

General

一些基本配置

syntax on                       " 关键字上色
syntax enable                   " 语法高亮
set nu                          " 显示行号
set nocp                        " 不兼容vi
set hidden                      " 允许不保存切换buffer
set splitright                  " 新分割窗口在右边
set splitbelow                  " 新分割窗口在下边
set autoread                    " 文件在Vim之外修改过,自动重新读入
set timeoutlen=350              " 等待时间,如<leader>键后的输入
set helpheight=999              " 查看帮助文档全屏
set scrolljump=3                " 当光标离开屏幕滑动行数
set scrolloff=1                 " 保持在光标上下最少行数
set showmatch                   " 短暂回显匹配括号
set hlsearch                    " 检索时高亮显示匹配项
set incsearch                   " 边输入边搜索
set ignorecase                  " 搜索忽略大小写
set smartcase                   " 智能大小写搜索

set wildmenu                    " 命令模式下补全以菜单形式显示
set wildmode=list:longest,full  " 命令模式补全模式
set foldenable                  " 启动折叠
set foldmethod=marker           " 设置折叠模式
set encoding=utf-8              " 编码,使汉语正常显示
set termencoding=utf-8
set fileencodings=utf-8,gb2312,gbk,gb18030

还有相关的编码问题可以参考VIM文件编码识别与乱码处理

Formatting

关于缩进

set expandtab                   " tab=空格
set tabstop=4                   " tab缩进4个空格
set shiftwidth=4                " 自动缩进空格数
set softtabstop=4               " 退格删除缩进
set backspace=indent,start      " 退格可删除缩进和原有字符
set autoindent                  " 与前一行同样等级缩进

当切割窗口显示多文件时,如果窗口大小改变,本来分布均匀的窗口不会重新调整大小,变得很难看,可以添加下面这条来配置自动调整大小。

au VimResized * exe "normal! \<c-w>="

在粘贴时候,如果前边的行带有注释符号,如#//"等时,后边的行会自动加上注释符号,很是麻烦,下面可以配置不自动添加成注释。

au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "no rm $"|endif|endif
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o

Key (re)Mappings

一些按键的重映射,很多用了真是让人上瘾,而且便捷很多,如<Esc>jj来代替,还有一些常输错的一些命令的修正,如QW等。

let mapleader=","           " 映射<leader>键到为,
nmap j gj
nmap k gk
inoremap jj <ESC>
nnoremap <silent> J :bp<CR>
nnoremap <silent> K :bn<CR>
noremap <silent><space> :set hls! hls?<CR>
noremap <silent><Leader>s :set rnu! rnu?<CR>
noremap <silent><Leader>l :set list! list?<CR>
nnoremap <Leader>c @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

" 更方便窗口间移动
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

" 命令模式按键映射
cnoremap <C-a> <Home>
cnoremap <C-e> <End>
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>

" Tab操作
nnoremap <Leader>tc :tabc<CR>
nnoremap <Leader>tn :tabn<CR>
nnoremap <Leader>tp :tabp<CR>
nnoremap <Leader>te :tabe<Space>

" 修正易错命令
command -bang -nargs=* Q q<bang>
command -bang -nargs=* Wa wa<bang>
command -bang -nargs=* WA wa<bang>
command -bang -nargs=* -complete=file W w<bang> <args>
command -bang -nargs=* -complete=file Wq wq<bang> <args>
command -bang -nargs=* -complete=file WQ wq<bang> <args>

Vim UI

因为我主要在终端使用Vim,所以一些UI的配置是针对终端的。GUI的话基本相似,把ctermbg等换成guibg等就可以了。

set t_Co=256                    " 终端显示256色
set tabpagemax=15               " 最多15个Tab
set showmode                    " 显示当前mode
set cursorline                  " 高亮当前行
set list                        " 显示特殊符号
set listchars=tab:›\ ,trail:•,extends:#,nbsp:.

hi clear SignColumn             " 标记列背景和主题背景匹配
hi clear LineNr                 " 当前行列背景和主题背景匹配

hi CursorLineNr ctermfg=red
hi VertSplit ctermbg=Grey ctermfg=Grey cterm=none
hi Visual ctermbg=81 ctermfg=black cterm=none
hi Comment ctermfg=blue
hi Statement ctermfg=cyan
hi DiffAdd ctermbg=blue ctermfg=white
hi DiffDelete ctermbg=green ctermfg=none
hi DiffChange ctermbg=red ctermfg=White
hi DiffText ctermbg=yellow ctermfg=black

if has('cmdline_info')
    set showcmd                 " 右下角显示当前操作
    set ruler                   " 右下角显示状态说明
    set rulerformat=%30(%=\:b%n%y%m%r%w\ %l,%c%V\ %P%) " 设定格式
endif

if has('statusline')
    set laststatus=1
    set statusline=%<%f\                     " Filename
    set statusline+=%w%h%m%r                 " Options
    set statusline+=\ [%{&ff}/%Y]            " Filetype
    set statusline+=\ [%{getcwd()}]          " Current dir
    set statusline+=%=%-14.(%l,%c%V%)\ %p%%  " Right aligned file nav info
endif

本文转载自:http://812lcl.com/blog/2014/04/05/vim-ji-ben-pei-zhi/

下一篇: vim命令用法
阿dai学长
粉丝 75
博文 262
码字总数 336161
作品 0
朝阳
运维
私信 提问
Vim使用笔记之.vimrc配置

之前陆陆续续有用过一点vim,但基本上都没有详细地去了解这个强大的编辑器,最近开始重新学习一下Vim。刚开始使用Vim的感觉就是好简洁,可以说是什么东西都没有,无从下手。看了一些教程,慢...

whuer凌晨
2018/08/01
0
0
写给 Pythonist 的 Spacemacs 入门指北

前言 最开始,使用 Sublime Text 编码,后来用 Vim 混合 PyCharm 写 Python。 前几天,Github 上的 Spacemacs 已经成功的突破一万 Star, 听说几个我非常佩服的 Pythoner(比如『Python Web ...

无与童比
2017/01/16
0
0
lnmp环境下 nginx.conf的常见配置

做个lnmp环境下 nginx.conf的常见配置说明 vim /usr/local/nginx/conf/nginx.conf 使用如下配置 user nobody nobody; //nginx子进程的用户worker_processes 2; //nginx子进程个数errorlog /u......

zhengminghao
2018/06/29
0
0
Maven 安装配置

下载 下载地址 :http://maven.apache.org/download.cgi 安装 配置环境变量 vim /etc/profile 基本设置 修改本地仓库配置路径 vim /usr/local/apache-maven-3.5.2/conf/settings.xml /usr/l...

被猪拱了的JAVA
2018/01/08
9
0
专属于你自己的vim 神器的打造方式

Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使...

马哥教育
2017/10/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
51分钟前
5
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
17
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
15
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部