Vim基本配置和使用



Vim 编辑器之神, 非常强大的编辑器,可以不用菜单和鼠标操作,熟练掌握可以大大提高效率。


vim模式介绍

六种基本模式(前3种常用)

  • 普通模式
  • 插入模式
  • 命令模式
  • 选择模式
  • 可视模式
  • Ex模式

三种常用模式切换

  • 普通模式下: i a 0 I A O => 插入模式
  • 普通模式下: : => 命令模式
  • 插入模式下: EscCtrl+[ => 普通模式

移动光标

h j k l 左 下 上 右
0 == ^ 到行首
$ 到行尾
w 下一个单词首
b 上一个单词首
e 下一个单词尾
gg 文档开头
G 文档结尾
ngg == nG 跳转至第n行

保存文件

:w 保存
:q 退出
:q! 强制退出,不保存
:wq 保存并退出 == ZZ
:wq! 强制保存并退出
:w <filename> 另存为 == :saveas <filename>

删除(剪切)文本

x 删除光标所在字符
X 删除光标前一个字符
dd 删除一行
ndd 删除n行
dw 删除一个单词
d$ == D 删除至行尾
d0 == d^ 删除至行首
dG 删除至文档结尾
dgg 删除至文档开头

重复命令

. 重复上一命令一次
n<command> 执行n次命令

复制和粘贴

yy 复制一行
nyy 复制n行
y0 == y^ 复制至行首
y$ 复制至行尾
yw 复制一个单词
ynw 复制n个单词
ygg 复制至行首
yG 复制至行尾

字符替换

r 替换一个字符
R 连续替换直到Esc
~ 切换字符大小写

字符串替换(可用正则)

:n1,n2s/<old>/<new>/g
eg. :3,15s/^/#/g 开头加#

快速缩进

>>
<<

调整文本位置

ce 居中
le 居左
ri 居右

快速查找

/<keyword> 向后查找
?<keyword> 向前查找
n 匹配下一个单词
\* 向后查找光标所在单词
\# 向前查找光标所在单词

分屏(多窗口)操作

:new <filename> 水平分屏打开新文件
:vnew <filename> 竖直分屏打开新文件
:sp <filename> 水平分屏打开文件
:vs <filename> 竖直分屏打开文件
Ctrl+w h/j/k/l 窗口间切换
Ctrl+w H/J/K/L 移动窗口位置
Ctrl+w +/- 调整所在窗口大小

文档加密

vi -x <filename>

在vim中执行外部命令(shell)

:!<shell_command>

导入其他文件或shell命令结果

:r <filename>
:r !<shell_command>

查看帮助文档

:h == :help == F1
:h <command>


配置文件

个人配置文件(~/.vimrc)
全局配置文件(/ect/vim/vimrc)


快捷键设置

命令模式下临时生效,要永久生效需要写入配置文件

  • 普通模式下的映射 map <Key> <command>
  • 插入模式下的映射 imap <Key> <command>

我的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"Basic
set nu
set autoindent
set mouse=a
set backspace=2
set smartindent

"Scheme color
set tabstop=4
syntax enable
set t_Co=256
set background=dark
colorscheme molokai

" 设置vim背景透明,还要先设置终端背景透明度(直接在终端配置文件里设置即可)
hi Normal ctermfg=252 ctermbg=none

"快捷键映射
"map -- 命令模式, imap -- 插入模式
" ^H <= ctrl+v h <CR> == Enter
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
"
map <F3> :NERDTreeToggle<CR>
map <F5> :w<Enter>

map <C-up> ddkkp
map <C-down> ddp
map <C-S-down> yyp
map <C-S-up> ddk

map <CR> A<CR><Esc>

map <C-F5> :!python3 % <CR>py文件中直接 Ctrl+F5 运行该文件


"插入模式下 不用方向键 快速移动光标,退格,删除
imap <C-h> <Left>
imap <C-l> <Right>
imap <C-k> <Up>
imap <C-j> <Down>
imap <C-b> <Backspace>
imap <C-d> <Delete>

imap <F5> <ESC>:w<Enter>
imap () ()<Left>
imap [] []<Left>
imap {} {}<Left>
imap <> <><Left>
imap '' ''<Left>
imap "" ""<Left>



"插件管理工具
"Vundle for plugin
set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'


"可以在这是添加要安装的插件
Plugin 'Valloric/YouCompleteMe'

"Plugin 'SirVer/ultisnips'
"Plugin 'honza/vim-snippets'

Plugin 'scrooloose/nerdtree'

Plugin 'kien/ctrlp.vim'

Plugin 'tomasr/molokai'

Plugin 'rkulla/pydiction'

Plugin 'pangloss/vim-javascript'

Plugin 'Shougo/neocomplcache.vim'

Plugin 'moll/vim-node'
Plugin 'myhere/vim-nodejs-complete'

Plugin 'mattn/emmet-vim'

call vundle#end()
filetype plugin indent on



"Python pydiction -- Tab-complete
filetype plugin on
let g:pydiction_location = '/home/sqd/.vim/bundle/pydiction/complete-dict'
let g:pydiction_menu_height = 4


"Node.js vim-node
autocmd User Node if &filetype == "javascript" | setlocal expandtab | endif


autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags

1.如果本文帮到了您,不妨点一下右下角的 分享按钮.
2.您的鼓励是博主写作最大的动力,感谢您的分享和赞赏.