Vim

vim
insert model
a光标后i光标前
A光标行尾I光标行首
o光标下方新增一行O光标上方新增一行
s删除光标所在字符S删除光标所在行
-
按边界*操作
yi*复制边界内内容yi"复制双引号内的内容
ya*复制边界以及内容ya{复制双引号及其内的内容
di*删除边界内内容di"删除双引号内的内容
da*删除边界以及内容da{删除双引号及其内的内容
ci*删除边界内内容,并切换为i模式ci"-
ca*删除边界以及内容,并切换为i模式ca{-
-
copy & cut
ggyG复制全部gg"+yG复制全部到系统粘贴板
:7,10y复制[7,10]行不支持指定粘贴板
:7,10 copy 12相当于先复制[7,10]行,然后在第12行按p:7,10 co 12相当于先复制[7,10]行,然后在第12行按p
:7,10d剪切[7,10]行不支持指定粘贴板
:7,10 move 12相当于先剪切[7,10]行,然后在第12行按p:7,10 m 12相当于先剪切[7,10]行,然后在第12行按p
yy复制行yy、y1y复制光标所在行
yw复制单词yw、y1w复制光标及其后的1个单词
dd剪切行dd、d1d剪切光标所在行
dw剪切单词dw、d1w剪切光标及其后的1个单词
p在当前行下方粘贴内容P在当前行上一行粘贴内容
-
:reg查看所有粘贴板中内容
"+y将内容复制到系统粘贴板
"+p粘贴系统粘贴板中的内容
-
:s/old/new将当前行第一个old替换成new
:s/old/new/g当前行所有old替换成new
:%s/old/new所有行第一个old替换成new
:%s/old/new/g所有old替换成new
-
undo & redo
u撤销一步
ctrl r取消撤销
-
visual model
v切换到visual model
ggvG全选
vjjdv切换到visual model,jj选择从光标所在行开始的往下两行,d剪切
vjjyv切换到visual model,jj选择从光标所在行开始的往下两行,y复制
-
visual block mode
Ctrl v切换到visual block model
yblock yink将选择的块,复制到粘贴板
pblock paste粘贴粘贴板中的内容
xblock delete删除选择的块
cblock insert输入后 使用ESC完成insert
-
jump
%括号匹配跳转
$跳转到行尾^跳转到行首
G跳转到末行gg跳转到首行
nG移到n行
H移动光标到当前页的第一行L移动光标到当前页的最后一行
M移动光标到当前页的中间行
e移动光标到单词末尾b移动光标到单词开头
w移动光标到下一个单词开头
*移动光标到上一个insert位置
-
split
:sp水平分割窗口:vsp垂直分割窗口
:sp xxx.txt水平分割窗口并在新窗口打开xxx.txt:vsp xxx.txt垂直分割窗口并在新窗口打开xxx.txt
-
vim -On-O垂直分割、-n分割窗口数vim -on-o水平分割、-n分割窗口数
vim -O2 file1 file2垂直分割窗口打开file1 file2vim -o2 file1 file2水平分割窗口打开file1 file2
-
:only仅保留当前分屏:hide关闭当前分屏
Ctrl w c关闭当前窗口Ctrl w q关闭当前窗口,如果只剩最后一个窗口,则退出vim
-
Ctrl w, h、j、k、l切换窗口Ctrl w, H、J、K、L移动窗口到最左下上右
Ctrl w r互换窗口
:resize 30调整当前窗口高度
Ctrl w =所以窗口统一高度
Ctrl w +当前窗口高度+1Ctrl w -当前窗口高度-1
Ctrl f向前翻一页Ctrl b向后翻一页
Ctrl u向前翻半页Ctrl d向后翻半页

set

:set
:set ff=unixunix格式 行结尾 \n:set ff=dosdos格式 行结尾 \r\n:set ff查看行结尾格式
:set nu or :set number显示行号:set nonu or :set nonumber隐藏行号
:set wrap折行:set nowrap取消折行
:set hlsearch高亮显示搜索结果:set nohlsearch取消高亮显示搜索结果
:set autoread文件更新自动读取新文件:set noautoread取消文件更新自动读取新文件

.vimrc

~/.vimrc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
set nu
set nocompatible
set laststatus=2
set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)
set linespace=3
set cursorline
set cursorcolumn

highlight CursorLine term=reverse,bold cterm=reverse,bold ctermfg=DarkGray ctermbg=black guibg=Grey90
highlight CursorColumn term=reverse,bold cterm=reverse,bold ctermfg=DarkGray ctermbg=black guibg=Grey90

syntax enable
filetype plugin indent on
let g:rustfmt_autosave = 1

~/_vimrc

 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
" 将当前行向上移动一行
inoremap <M-k> <Esc>kddpk
nnoremap <M-k> kddpk
" 将当前行向下移动一行
inoremap <M-j> <Esc>ddp
nnoremap <M-j> ddp

set ff=unix
" 去掉有关vi一致性模式,避免以前版本的bug和局限
set nocompatible
" indent :set indent :set ai等自动缩进,想使用backspace将字段缩进的删除,必须设置这个选项。否则不响应
" eol 如果 insert 模式再行开头想使用backspace合并两行,需要设置eol
" start 想要删除此次插入前的输入,需要设置start
set backspace=indent,eol,start
set nu
set guifont=JetBrains_Mono_SemiBold:h12
set laststatus=2  "显示状态栏
set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)
"上面的状态栏展示信息比较多,,可以如上所示进行集合性配置,如果懒得一一理解,可直接复制进配置文件,因为所有配置对于提升你编程效率都有帮助。当然如果你不嫌麻烦,也可以以下面所示形式单独配置(注意去掉前面”号)
"set statusline+=%{&ff}  "显示文件格式类型
"set statusline+=%h  "帮助文件标识
"set statusline+=%m  "可编辑文件标识
"set statusline+=%r  "只读文件标识
"set statusline+=%y  "文件类型
"set statusline+=%c  "光标所在列数
"set statusline+=%l/%L  "光标所在行数/总行数
"set statusline+=\ %P  "光标所在位置占总文件百分比

" Show a few lines of context around the cursor. Note that this makes the text
" scroll if you mouse-click near the start or end of the window.
set scrolloff=5
set linespace=3
" Don't use Ex mode, use Q for formatting.
map Q gq

" rust.vim start "
syntax enable
filetype plugin indent on
" let current_compiler = 'rustc'
let g:rustfmt_autosave = 1
let g:rustfmt_fail_silently = 0
" let g:syntastic_rust_checkers = ['cargo']
" rust.vim end"

plugin

rust.vim

注意

vim的~/.vimrc配置项,屏蔽掉下面这句话:

1
set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom

再用 vim 打开jpeg文件,显示ffd8 ffc0 0011 0804ffd9 0a,显示正确
vim 为了支持识别和显示中文,规定了 vim 的 fileencodings
当vim打开文件时,会使用规定的编码格式对数据进行解析
jpeg的文件头FFD8、尾FFD9 不是任何一个中文的编码,vim找不到对应的中文字,就显示为??,即:3f3f

Tags: