我爱编程

vim 总结

2018-05-28  本文已影响70人  jumpingfrog0

vim 总结:

vim 辅助记忆神图:

vim 辅助记忆神图

进入Vim自带的教程里

$ vimtutor

检查vim支持的功能

$ vim --version

注意:Mac 自带的 Vim 不支持复制内容到剪切板

光标快速移动

插入

缩进

删除

查找与替换

多行查找替换

将 foo 替换成 bar

Shift + V
// 方向键选中需要查找替换的内容,输入:,vim会自动补全 :'<,'
:'<,'>s/foo/bar/g>

选中

可视模式下(Visual) 选中内容进行以下操作了的含义:

复制粘贴

其他

自定义快捷键

Vim 通过 map 自定义快捷键,map 是一个映射命令,将常用的很长的命令映射到一个新的功能键上。

对于 map 而言,可能有这么几种前缀:

命令格式:

:map {lhs} {rhs}

其含义是,在 :map 作用的模式中把键系列 {lhs} 映射为 {rhs}{rhs} 可进行映射扫描,也就是可递归映射.

<Leader>和mapleader变量

mapleader变量对所有map映射命令起效,它的作用是将参数<Leader>替换成mapleader变量的值,可以用来自定义快捷键的前缀。

支持系统剪贴板的复制粘贴

let mapleader=";"
vmap <Leader>y :w !pbcopy<CR><CR>
nmap <Leader>y :w !pbcopy<CR><CR>
nmap <Leader>p :r !pbpaste<CR><CR>

.vimrc 进行如上配置后,就支持以下的2个命令了:

支持移动文本到上/下一行

nnoremap <C-j> :m .+1<CR>==
inoremap <C-j> <Esc>:m .+1<CR>==gi
vnoremap <C-j> :m '>+1<CR>gv=gv
nnoremap <C-k> :m .-2<CR>==
inoremap <C-k> <Esc>:m .-2<CR>==gi
vnoremap <C-k> :m '<-2<CR>gv=gv

.vimrc 进行如上配置后,就支持快捷键上下移动文本了:

键表

<k0> - <k9>     : 小键盘 0 到 9 
<S-...>     : Shift+键 
<C-...>     : Control+键 
<M-...>     : Alt+键 或 meta+键 
<A-...>     : 同 <M-...> 
<Esc>       : Escape 键 
<Up>        : 光标上移键 
<Space>     : 插入空格 
<Tab>       : 插入Tab 
<CR>        : 等于<Enter>

插件管理

pathogen

使用 pathogen 来管理插件会非常的方便,可以让每一个插件占有一个单独的目录,解决了文件分散的问题。只需要将要安装的所有插件放在 ~/.vim/bundle 目录下即可,如果要删除某个插件,只需要将 ~/.vim/bundle 目录下对应的插件目录删除即可,通常使用 git clone 的方式安装插件。

vundle

Vundle 可以说是 pathogen 的升级版,把 git 操作整合进去,进一步简化了操作,用户需要做的只是去 GitHub 上找到自己想要的插件的名字,安装、更新和卸载由 vundle 来完成。

插件的安装目录是:~/.vim/bundle

在 vim 里面运行以下命令来安装插件:

:so ~/.vimrc    // reload vimrc
:PluginInstall

其他命令:

vim-plug

vim-plugvundle 升级版,支持并行安装插件,异步加载插件,配合 NeoVim 可以安装一些比较高级的插件。

vim 常用插件列表

插件命令

vim-markdown-toc

插件快捷键

nerdtree

NERDTree 快捷键辑录

.vimrc 配置

以下是我的 vim 配置:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => General
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syntax on               " 语法高亮
filetype plugin on      " 根据不同的文件类型语言加载不同插件(如,C++ 的语法高亮插件与python的不同)

set nocompatible        " 关闭兼容模式 
set number              " 显示行号
set autoindent          " 自动对齐
set smartindent         " 智能对齐
set showmatch           " 括号匹配模式
set ruler               " 显示状态行
set incsearch           " 查询时非常方便,如要查找book单词,当输入到/b时,会自动找到   第一个b开头的单词,当输入到/bo时,会自动找到第一个bo开头的单词,依次类推,进行查找时,使用此设置会快速找到答案,当你找要匹配的单词时,别忘记回车.

set cindent             " C语言格式对齐
set nobackup            " 不要备份文件
set clipboard+=unnamed  " 共享剪贴板

" 1 tab == 4 spaces
set tabstop=4
set shiftwidth=4

" 高亮显示当前行/列
set cursorline          
" set cursorcolumn

" 与剪贴板共享复制粘贴
let mapleader=";"
vmap <Leader>y :w !pbcopy<CR><CR>
nmap <Leader>y :w !pbcopy<CR><CR>
nmap <Leader>p :r !pbpaste<CR><CR>

" 上移或下移一行
nnoremap <C-j> :m .+1<CR>==
inoremap <C-j> <Esc>:m .+1<CR>==gi
vnoremap <C-j> :m '>+1<CR>gv=gv
nnoremap <C-k> :m .-2<CR>==
inoremap <C-k> <Esc>:m .-2<CR>==gi
vnoremap <C-k> :m '<-2<CR>gv=gv


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => pathogen 
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
execute pathogen#infect()
filetype plugin indent on


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Vundle & Plugins
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.

Plugin 'godlygeek/tabular'
Plugin 'plasticboy/vim-markdown'
Plugin 'mzlogin/vim-markdown-toc'
Plugin 'altercation/vim-colors-solarized'
"Plugin 'dbgx/lldb.nvim'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => Plugin Settings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vim-markdown 
let g:vim_markdown_folding_disabled = 1

" vim-instant-markdown 
" vim-instant-markdown 不能使用vundle安装,只能使用npm手动安装
set shell=bash\ -i

"solarized theme
syntax enable
set background=dark
"set background=light
colorscheme solarized

" lldb.nvim
"set rtp+=/path/to/lldb.nvim

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => vim-plug
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
if empty(glob('~/.vim/autoload/plug.vim'))
    silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
      \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')

Plug 'dbgx/lldb.nvim'
Plug 'scrooloose/nerdtree'

" lldb.nvim
set rtp+=/path/to/lldb.nvim

" nerdtree
map <C-n> :NERDTreeToggle<CR>


" Initialize plugin system
call plug#end()


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => 一键编译 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
map <F5> :call Run()<CR>
func! Run()
    exec "w"
    exec "!g++ -Wall % -o %<"
    exec "!./%<"
endfunc

上一篇 下一篇

猜你喜欢

热点阅读