您的位置:首页 > 其它

vim使用技巧

2017-08-17 12:21 183 查看
一、如果在终端中开没有打开vim,可以:

横向分割显示:

$ vim -o filename1 filename2    

纵向分割显示:

$ vim -O filename1 filename2  

二、如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:

横向分割显示:

:vs filename  

纵向分割显示:

:sp filename  

其中,vs可以用vsplit替换,sp可以用split替换。

如果finename不存在,则会新建该文件并打开。

三、关闭窗口

关闭光标所在的窗口:

:q  

#或  

:close  

关闭除光标所在的窗口之外的其他窗口:

:only  

关闭所有窗口:

:qa  

四、切换窗口

打开了多个窗口,需要在窗口之间切换时:

ctrl + w w

即按住ctrl键,再按两下w键。

或者ctrl + w <h|j|k|l>

即按住ctrl键,按一次w键,再按一次表示方向的h或j或k或l,则光标会切换到当前窗口的 左|下|上|右 侧的窗口

最基本的是打开分割窗口 :sp a.pl

切换窗口 Ctrl + w 按一次加上下键可以自己选择切换方向,按两次则从上到下自动遍历窗口

扩大窗口 Ctrl-w + 扩大窗口

缩小窗口 Ctrl-w - 缩小当前编辑窗口

在vim中执行shell命令 :! ls 这样可以执行shell命令,或者也可以 :shell top

放大当前窗口,缩小其他窗口 :res ,后面可以设置行数,比如 :res 10 则将当前窗口设置为10行

.vimrc(保存文件名放到你$HOME目录)

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" settings for vim

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"

" This file contains some boilerplate settings for vim's cscope interface,

" plus some keyboard mappings that I've found useful.

"

" USAGE:

" -- vim 6:     Stick this file in your ~/.vim/plugin directory (or in a

"               'plugin' directory in some other directory that is in your "

"               'runtimepath'.  "

" Jason Duell   'yistn@163.com     2013/3/13

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""multi-encodingi setting多语言编码转换""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if has("multi_byte")

"set bomb

set fileencoding=utf-8

set fileencodings=ucs-bom,utf-8,cp936,gb18030,gb2312,gbk,big5,euc-jp,euc-kr

set encoding=utf8

" CJK environment detection and corresponding setting

if v:lang =~ "^zh_CN"

" Use cp936 to support GBK, euc-cn == gb2312

set encoding=cp936

set termencoding=cp936

set fileencoding=cp936

elseif v:lang =~ "^zh_TW"

" cp950, big5 or euc-tw

" Are they equal to each other?

set encoding=big5

set termencoding=big5

set fileencoding=big5

elseif v:lang =~ "^ko"

" Copied from someone's dotfile, untested

set encoding=euc-kr

set termencoding=euc-kr

set fileencoding=euc-kr

elseif v:lang =~ "^ja_JP"

" Copied from someone's dotfile, untested

set encoding=euc-jp

set termencoding=euc-jp

set fileencoding=euc-jp

endif

" Detect UTF-8 locale, and replace CJK setting if needed

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"

set encoding=utf-8

set termencoding=utf-8

set fileencoding=utf-8

endif

else

echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"

endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""" Initial Plugin 加载插件""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" install Vundle bundles

if filereadable(expand("~/.vimrc.bundles"))

  source ~/.vimrc.bundles

endif

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""vim 样式配置""""""""""""""""""""""""""""""""""""""""""""""

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" 基础配置设置

filetype on                   "检测文件类型

filetype indent on           "针对不同的文件类型采用不同的缩进格式

filetype plugin on           "允许插件

filetype plugin indent on     "启动自动补全

"autocmd! bufwritepost _vimrc source %     "vimrc文件修改之后自动加载。 windows。

"autocmd! bufwritepost .vimrc source %     "vimrc文件修改之后自动加载。 linux。

syntax enable "开启代码高亮

syntax on "打开高亮

set completeopt=longest,menu "自动补全配置,让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)

"set relativenumber number   "相对行号,可用Ctrl+n在相对/绝对行号间切换

set cursorcolumn             "突出显示当前列,可用Ctrl+m切换是否显示

"set cursorline               "突出显示当前行,可用Ctrl+m切换是否显示

set history=3000             "history存储长度

set nocompatible             "非兼容vi模式,避免以前版本的一些bug和局限

set nu "显示行数 

set shiftwidth=4             "换行时行间交错使用4空格

set cindent shiftwidth=4     "自动缩进4空格

set tabstop=4                 "让一个tab等于4个空格

set vb t_vb=

set showmatch                 "显示括号配对情况

set autoread                 "当文件在外部被改变时,Vim自动更新载入

set nowrap                   "设置不自动换行

set writebackup               "设置无备份文件

set nobackup "取消备份。 视情况自己改

set noswapfile "关闭交换文件

set showmode "开启模式显示  

set cmdheight=1               "命令部分高度为1 

set shortmess=atI             "启动的时候不显示那个援助索马里儿童的提示

set t_ti= t_te=               "退出vim后,内容显示在终端屏幕 设置 退出vim后,内容显示在终端屏幕, 可以用于查看和复制好处:误删什么的,如果以前屏幕打开,可以找回

" 去掉输入错误的提示声音

set title                     "change the terminal's title

set novisualbell             "don't beep

set noerrorbells             "don't beep

set t_vb=

set tm=500

"set backup                   "备份

"set backupext=.bak

"set backupdir=/tmp/vimbk/

set mat=4                     "Blink times every second when matching brackets

set hidden                   "A buffer becomes hidden when it is abandoned

set wildmode=list:longest

set ttyfast

set wildignore=*.swp,*.bak,*.pyc,*.class

set scrolloff=3               "至少有3行在光标所在行上下

set selection=old

set selectmode=mouse,key

set viminfo^=%                   "Remember info about open buffers on close

set viminfo+=! " 保存全局变量

set magic                       "正则表达式匹配形式

set backspace=eol,start,indent   "Configure backspace so it acts as it should act

"set backspace=indent,eol,start whichwrap+=<,>,[,] "允许退格键的使用

"set iskeyword+=_,$,@,%,#,-   "带有如下符号的单词不要被换行分割 

set iskeyword+=_,$,@,%,#   "带有如下符号的单词不要被换行分割 

" 字符间插入的像素行数目

au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}   set filetype=mkd   "markdown配置

"set Go=             "不要图形按钮  

set cul             "高亮光标所在行

autocmd InsertEnter * se cul "用浅色高亮当前行  

set ruler           "显示标尺  

set showcmd         "输入的命令显示出来,看的清楚些  

" Set extra options when running in GUI mode

if has("gui_running")

    set guifont=Monaco:h14

    set guioptions-=T

    set guioptions+=e

    set guioptions-=r

    set guioptions-=L

    set guitablabel=%M\ %t

    set showtabline=1

    set linespace=4

    set noimd

    set t_Co=256

else

"set guifont=Courier_New:h10:cANSI  " 设置字体  

set guifont=Fixedsys:h12:cANSI" 设置字体  

endif

"设置标记一列的背景颜色和数字一行颜色一致

hi! link SignColumn   LineNr

hi! link ShowMarksHLl DiffAdd

hi! link ShowMarksHLu DiffChange

"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}  "状态行显示的内容

set statusline+=%f       "不显示工具条

ret laststatus=2     "启动显示状态行(1),总是显示状态行(2)  

" max memory (in KiB) used for pattern matching

"set maxmempattern=100

"set foldenable     "允许折叠  

"set foldmethod=manual   "手动折叠 

" 选中模式 Ctrl+c 复制选中的文本

"vnoremap <c-c> "+y

" 普通模式下 Ctrl+c 复制文件路径

"nnoremap <c-c> :let @+ = expand('%:p')<cr>

" Shift + Insert 插入系统剪切板中的内容

"noremap <S-Insert> "+p

"vnoremap <S-Insert> d"+P

"inoremap <S-Insert> <esc>"+pa

"inoremap <C-S-Insert> <esc>pa

"set ignorecase "搜索时忽略大小写 

set hlsearch                 "高亮显示结果

"set nohlsearch "关闭搜索高亮  

set incsearch                 "在输入要搜索的文字时,vim会实时匹配

" 有一个或以上大写字母时仍大小写敏感

set smartcase     "ignore case if search pattern is all lowercase, case-sensitive otherwise

"autocmd BufEnter * cd %:c:p:h   "设置状态栏

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" F1 - F6 设置

" F1 废弃这个键,防止调出系统帮助

" F2 行号开关,用于鼠标复制代码用

" F3 换行开关

" F4 调出listbar函数列表

" F5 粘贴模式paste_mode开关,用于有格式的代码粘贴

" F6 语法开关,关闭语法可以加快大文件的展示

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" I can type :help on my own, thanks.  Protect your fat fingers from the evils of <F1>

noremap <F1> <Esc>"

nnoremap <F2> :set nonumber! number?<CR>

nnoremap <F3> :set wrap! wrap?<CR>

nmap <silent> <F4> :TagbarToggle<CR> "按下F4就可以呼出文件的函数列表及变量

set pastetoggle=<F5>             "when in insert mode, press <F5> to go to

                                "paste mode, where you can paste mass data

                                "that won't be autoindented

au InsertLeave * set nopaste

nnoremap <F6> :exec exists('syntax_on') ? 'syn off' : 'syn on'<CR>

" disbale paste mode when leaving insert mode

"Smart way to move between windows 分屏窗口移动

"则可以用<C-h,j,k,l>切换到上下左右的窗口中去,就像:

map <C-j> <C-W>j

map <C-k> <C-W>k

map <C-h> <C-W>h

map <C-l> <C-W>l

"Treat long lines as break lines (useful when moving around in them)

"se swap之后,同物理行上线直接跳

nnoremap k gk

nnoremap gk k

nnoremap j gj

nnoremap gj j

" Go to home and end using capitalized directions

noremap H ^

noremap L $

" 命令行模式增强,ctrl - a到行首, -e 到行尾

cnoremap <C-a> <Home>

cnoremap <C-e> <End>

" 去掉搜索高亮

noremap <silent><leader>/ :nohls<CR>

" --------tab/buffer相关

"Use arrow key to change buffer"

noremap <left> :bp<CR>

noremap <right> :bn<CR>

map <leader>tn :tabnew<cr>

map <leader>to :tabonly<cr>

map <leader>tc :tabclose<cr>

map <leader>tm :tabmove

" Opens a new tab with the current buffer's path

" Super useful when editing files in the same directory

map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/

"共享剪贴板  

set clipboard+=unnamed 

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

if has("autocmd")

filetype plugin indent on   "根据文件进行缩进 

    augroup vimrcEx

        au!

        autocmd FileType text setlocal textwidth=78

        autocmd BufReadPost *

                    \ if line("'\"") > 1 && line("'\"") <= line("$") |

                    \ exe "normal! g`\"" |

                    \ endif

    augroup END

"autocmd Filetype c      set omnifunc=ccomplete#Complete

"autocmd Filetype html   set omnifunc=htmlcomplete#CompleteTags

"autocmd Filetype xml    set omnifunc=xmlcomplete#CompleteTags

"autocmd Filetype Python set omnifunc=pythoncomplete#CompleteTags

"autocmd Filetype tex    set omnifunc=syntaxcomplete#Complete

autocmd FileType c,cpp set shiftwidth=4 | set expandtab "每次在编辑c文件时,它的自动缩进为4个空格;当你在插入模式下使用CTRL-D、CTRL-T缩进时,它也会调整4个空格的缩进;当你按TAB键时,它将会插入8个空格

    "set cinoptions={0,1s,t0,n,p2s,(03s,=.5s,>1s,=1s,:1s

    "智能缩进,相应的有cindent,官方说autoindent可以支持各种文件的缩进,但是效果会比只支持C/C++的cindent效果会差一点,但笔者并没有看出来

    set ai!                     "设置自动缩进

    set smartindent             "智能自动缩进

    set noautoindent             "自动对齐 设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置

else

    "智能缩进,相应的有cindent,官方说autoindent可以支持各种文件的缩进,但是效果会比只支持C/C++的cindent效果会差一点,但笔者并没有看出来

    set ai!                     "设置自动缩进

    set smartindent             "智能自动缩进

    set noautoindent             "自动对齐 设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置

endif " has("autocmd")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: