1.vim 安装包 vim-enhanced
2. 移动到行首 shift 6,移动到行尾 shfit + 4。
3. 移动到某行,nG,1G 首行,G 行尾,10G 移动到第十行
4. nx 向后删除n个字符,直接 x,向后删除一个字符。
5.小写 p,光标所在行下方粘贴。
6. u 撤销,ctrl + r 反撤销
7. r 替换当前光标下的字符并退出;R 替换当前光标的字符并依次向后替换
8. v 选中指定字符,x 确定剪切,p 粘贴
9. :1,2s/word1/word2/g 包括第二行,但是匹配的是 word1 字符串,比如 loveword1,userword1等都会被替换, 1,$s#\<word1\>#root#g 全文替换,并且精准匹配。
10. 替换过程使用 +c 选项(communication),和用户交互。
Vim 
vim的三种模式
一、一般模式
光标移动
vim 删除、复制、粘贴
二、编辑模式 插入字符
三、 命令模式 查找和替换
替换过程,建议使用sed
wq和x的区别
:wq    强制性写入文件并退出(存盘并退出 write and quite)。即使文件没有被修改也强制写入,并更新文件的修改时间。
:x    写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。
这两者一般情况下没什么不一样,但是在编程方面,对编辑源文件可能会产生重要影响。因为文件即使没有修改,":wq" 强制更新文件的修改时间,这样会让 make 编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,当然也产生了不必要的系统资源花销。不过像是版本控制的软件一般首选还是比较文件内容,修改时间一般不加以理会。
:set ic 搜索的时候不区分大小写
:r /tmp/1.txt  拷贝其他文件内容
恢复到未更改状态 :e!
注释所有的行,工作中常用
d$ dj 2dd dG d^
Vim 扩展
1、删除从光标所在位置到行尾的字符
在一般模式下输入大写“ D”或者输入“ d$”
快捷键     shift + d
2、删除从光标所在处到行尾字符
在一般模式下输入“ d^”
3、删除从光标所在处到行首字符
一般模式下输入 “ dG”
4、删除指定范围的行,比如10-15行
方法一:编辑模式
10G、6dd
方法二:命令模式
:10,15d     回车
5、把正在编辑的文件另存为一个新的文件
:w /tmp/1.txt          全部文件内容另存为 1.txt
:1,10 w /tmp/1.txt     1-10行另存为 1.txt
6、把其他文件内容导入到正在编辑的文件的光标所在处
:r /etc/passwd
7、正在编辑文件时,不退出文件,仍可以运行 Linux 命令
:! cat /tmp/1.txt          在不退出 vim 的情况下,查看其他文件内容
:r ! cat /tmp/1.txt        把命令结果导入到当前光标位置
8、vim 使用缩写命令
:ab aming adfjlkjaslkfjakdjflajsdlfkj      
定义 aming 等于后面的字符串,再次输入aming的时候,就会显示字符串
9、vim 查找关键字不区分大小写
:set ic          不区分大小写
:set noic        区分大小写
10、把文件恢复到打开时的状态
方法一: 一直按撤销键 u
方法二: :e!
11、快捷键
d + i + w    删除当前光标上的单词
v + i + w    选中当前光标上的单词
shift + d    删除光标所在位置到行尾的字符
12、删除指定的内容
1.txt 内容如下。需求: 删除222和3333直接所有的字符。222和333直接有没有换行没有关系
11111111111111111111111111
222222222222222222222222222222B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e3333333333333333333333
44444444444444444444444444444

方法:在要删除的文本前后,增加对等的特殊符号,如{} () ''
11111111111111111111111111
222222222222222222222222222222 {B3NzaC1yc2EAAAABIwAAAQEAv5oJvuIdaaVUsDOA2FbfnL0K2GbTc05Yg6TGM+8SNleI6bU5MhAy2uP5J4yCrMu43911hEJ2uh1UPycWX1O4xpEgUm8TGIs1HoQySnukv3g121uOLACRj37qqL9j4RRhrUxhunAW3alLSGIV0mxFD0ApyycFoLA/1I3hU7Yyx7tdripwz0FeHHhT3Qjfe9yC8Z6Ptq7cvBPXBBvc/G8pXVq3bnGMtj9Ifmbh7NnTvfHnEZGacf2MR4FSy0MMuNL0k3X5sBlsyP9/rXY9CPOh73eKUhZQoK3uWjwuDRp/dqrxgWDVeg0NZ+0t130pKu/LSREothWoVBu54rrtUUIdb3Sq0xsW4x9EhKGJJHPvBrbGbiDPTKBUaHdQEfmQQPAWeeX1hMC7lCunnfgTzf39Pv/2VpXz2l8NH2Jem0nrS48A6sf4eFz5VIakoRySMQu/6mY4s9aU3arbX+JvUE9s2/7D+JdqJlINtQqRU4V92LQq3BJaSMmKiwnPSytxDtARI3+8I2XXqFCJ5bBY7e }3333333333333333333333
44444444444444444444444444444

把光标移动到第一个特殊字符,本例中是{,也就是2的后面,一般模式下输入 da{ 即可,如果是其他特殊符号,更换特殊符号即可。
13、vim 下注释所有的行:ctrl + v j/k + shift + i + Esc
1.一般模式 ctrl v ,进入 visual block 模式
2.移动光标选择需要添加注释的行,可配合g,G,10G 等使用
3.大写字母 I,此时光标固定在某一行
4.按需要注释的字符,如##,$$或其他字符
5. ESC 退出之后,添加注释成功
14、取消多行注释
1. ctrl v 进入 visul block 模式
2. 按小写 L,选择取消注释的行以及列数
3. 选中之后,d 删除
15、vim新建文档粘贴,出现乱码,格式不对
新建文档中粘贴复制的代码,因为自动缩进发现文档格式不对,每一行都相对于上一行的位置有缩进。
16、vim 加密和解密
加密之后,如果忘记密码,root用户也无法查看,切记,不能忘记密码。坏处是,当其他用户知道该文件加密之后,可能会暴力破解去损坏或修改文件。
加密方式:命令模式输入大写 X,输入密码即可
解密方式:命令模式,输入大写X,直接回车,输入空密码即可;或者 :set key= 
在工作中,使用 vim 给特定的行,或者所有的行,添加注释的功能,比较实用。另外替换功能在这里没有介绍,替换功能建议使用 sed
注释符号 "
不生成swap文件
setlocal noswapfile
set bufhidden=hide
设置tab键
set teastop=4
set softtabstop=4
Vim 配置文件
vimrc 的注释符号是一个双引号 ",不是 #
之上的操作,在系统重启之后就无法使用,需要去修改配置文件。
方法一:所有用户统一修改 /etc/vimrc ,在文件末尾添加需要设置的命令即可。
方法二:只针对当前用户,修改家目录下的 ./.vimrc ,该文件是隐藏文件,如果没有,需要手动创建。
http://812lcl.com/blog/2014/04/05/vim-ji-ben-pei-zhi/  
1、打开 vimrc ,添加以下语句来使得语法高亮显示:
syntax on
如果此时语法还是没有高亮显示,那么在 /etc 目录下的 profile 文件中添加以下语句:
export TERM=xterm-color
highlight Comment ctermfg=green guifg=green
2、设置 tab 长度 4
set teastop=4
set softtabstop=4
3、设置缩进的空格数为4
set shiftwidth=4
4、设置自动缩进,每行的缩进值与上一行相等,
set autoindent
5、设置使用 C/C++ 语言的自动缩进方式
set cindent
6、增强模式中的命令行自动完成操作
set wildmenu
7、允许退格键删除
set backspace=2
8、启用鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key
9、设置编码自动识别, 中文引号显示
set fileencodings=utf-8,gbk
set encoding=euc-cn
set ambiwidth=double
10、设置高亮搜索
set hlsearch
11、在搜索时,输入的词句的逐字符高亮
set incsearch
12、显示括号匹配
set showmatch
13、如果想在左侧显示文本的行号,可以用以下语句:
set nu
14、不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
15、最后,如果没有下列语句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif
或者加上
if &term == "xterm"
if has("terminfo")
set t_Co=8
set t_Sf=^[[3%p1%dm
set t_Sb=^[[4%p1%dm
else
set t_Co=8
set t_Sf=^[[3%dm
set t_Sb=^[[4%dm
endif
endif
16、鼠标可用,类似于office的鼠标双击选中功能
set mouse=a             " 可以在buffer的任何地方使用鼠标
set selection=exclusive
set selectmode=mouse,key
17、同进编辑两个文件或者
例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口上下水平分隔,一起显示
在一般模式下输入“:new /root/2.txt”
例:我现正在编辑1.txt文件,然后我想再打开root目录下的2.txt同时编辑,并把窗口左右垂直分隔,一起显示
在一般模式下输入“:vsplit /root/2.txt”
注意:在一般模式下按“ctrl+w”组合键,再按左右,或者上下方向键,可以在不同窗口之间切换。如果在一般模式下输入“:only”那么只保留当前正在编辑的窗口,其它全关闭。
Vim UI 设置,可直接复制粘贴到 vimrc
set t_Co=256            " 终端显示256色
set whichwrap+=<,>,h,l  " 允许backspace和光标键跨越行边界
set nu                  " 显示行号
set ic                  " 搜索不区分大小写
set incsearch           " 搜索的时候,输入的词句依次高亮
set noswapfile          " 不创建swap文件
set bufhidden=hide      " 当buffer被丢弃时隐藏
set autoindent          " 与前一行同样等级缩进
set tabstop=4           " tab键缩进4格
set softtabstop=4       " 退格删除缩进
set shiftwidth=4        " 自动缩进空格数
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
set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")}               " 左下角状态航显示文件类型和解码
关于缩进
set softtabstop=4 " 退格删除缩进
set tabstop=4 " tab缩进4个空格
set autoindent " 与前一行同样等级缩进
其他配置,可视需求适当删减增加
" 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
autocmd FileType xml,html vmap 'o'>o-->
autocmd FileType java,c,cpp,cs vmap ' 0 && line("'\"") <= line("$") |
\ exe " normal g`\"" |
\ endif
endif "has("autocmd")
" 用空格键来开关折叠
set foldenable
set foldmethod=manual
nnoremap @=((foldclosed(line('.')) < 0) ? 'zc':'zo')
" 能够漂亮地显示.NFO文件
set encoding=utf-8
function! SetFileEncodings(encodings)
let b:myfileencodingsbak=&fileencodings
let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
let &fileencodings=b:myfileencodingsbak
unlet b:myfileencodingsbak
endfunction
au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings()
F5编译和运行C程序,F6编译和运行C++程序
" 请注意,下述代码在windows下使用会报错
" 需要去掉./这两个字符
" C的编译和运行
map :call CompileRunGcc()
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
" C++的编译和运行
map :call CompileRunGpp()
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc
encoding 是 vim 内部字符编码方式,如果有无法转换为内部编码的字符,字符会丢失。建议设置为 utf-8
termerncoding 是 vim 用于屏幕显示的编码。如果有字符不能转换为屏幕编码,会变成问好,但不影响编辑操作。
fileencoding 
Vim 文件编码
在 Vim 中,有四个与编码有关的选项,它们是:fileencodings、fileencoding、encoding 和 termencoding。在实际使用中,任何一个选项出现错误,都会导致出现乱码。因此,每一个 Vim 用户都应该明确这四个选项的含义。下面,我们详细介绍一下这四个选项的含义和作用。
1 encoding
encoding 是 Vim 内部使用的字符编码方式。当我们设置了 encoding 之后,Vim 内部所有的 buffer、寄存器、脚本中的字符串等,全都使用这个编码。Vim 在工作的时候,如果编码方式与它的内部编码不一致,它会先把编码转换成内部编码。如果工作用的编码中含有无法转换为内部编码的字符,在这些字符就会丢失。因此,在选择 Vim 的内部编码的时候,一定要使用一种表现能力足够强的编码,以免影响正常工作。
由于 encoding 选项涉及到 Vim 中所有字符的内部表示,因此只能在 Vim 启动的时候设置一次。在 Vim 工作过程中修改 encoding 会造成非常多的问题。如果没有特别的理由,请始终将 encoding 设置为 utf-8。为了避免在非 UTF-8 的系统如 Windows 下,菜单和系统提示出现乱码,可同时做这几项设置:
setencoding=utf-8
setlangmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
2 termencoding
termencoding 是 Vim 用于屏幕显示的编码,在显示的时候,Vim 会把内部编码转换为屏幕编码,再用于输出。内部编码中含有无法转换为屏幕编码的字符时,该字符会变成问号,但不会影响对它的编辑操作。如果 termencoding 没有设置,则直接使用 encoding 不进行转换。
举个例子,当你在 Windows 下通过 telnet 登录 Linux 工作站时,由于 Windows 的 telnet 是 GBK 编码的,而 Linux 下使用 UTF-8 编码,你在 telnet 下的 Vim 中就会乱码。此时有两种消除乱码的方式:一是把 Vim 的 encoding 改为 gbk,另一种方法是保持 encoding 为 utf-8,把 termencoding 改为 gbk,让 Vim 在显示的时候转码。显然,使用前一种方法时,如果遇到编辑的文件中含有 GBK 无法表示的字符时,这些字符就会丢失。但如果使用后一种方法,虽然由于终端所限,这些字符无法显示,但在编辑过程中这些字符是不会丢失的。
对于图形界面下的 GVim,它的显示不依赖 TERM,因此 termencoding 对于它没有意义。在 GTK2 下的 GVim 中,termencoding 永远是 utf-8,并且不能修改。而 Windows 下的 GVim 则忽略 termencoding 的存在。
3 fileencoding
当 Vim 从磁盘上读取文件的时候,会对文件的编码进行探测。如果文件的编码方式和 Vim 的内部编码方式不同,Vim 就会对编码进行转换。转换完毕后,Vim 会将 fileencoding 选项设置为文件的编码。当 Vim 存盘的时候,如果 encoding 和 fileencoding 不一样,Vim 就会进行编码转换。因此,通过打开文件后设置 fileencoding,我们可以将文件由一种编码转换为另一种编码。但是,由前面的介绍可以看出,fileencoding 是在打开文件的时候,由 Vim 进行探测后自动设置的。因此,如果出现乱码,我们无法通过在打开文件后重新设置 fileencoding 来纠正乱码。
4 fileencodings
编码的自动识别是通过设置 fileencodings 实现的,注意是复数形式。fileencodings 是一个用逗号分隔的列表,列表中的每一项是一种编码的名称。当我们打开文件的时候,VIM 按顺序使用 fileencodings 中的编码进行尝试解码,如果成功的话,就使用该编码方式进行解码,并将 fileencoding 设置为这个值,如果失败的话,就继续试验下一个编码。
因此,我们在设置 fileencodings 的时候,一定要把要求严格的、当文件不是这个编码的时候更容易出现解码失败的编码方式放在前面,把宽松的编码方式放在后面。
例如,latin1 是一种非常宽松的编码方式,任何一种编码方式得到的文本,用 latin1 进行解码,都不会发生解码失败——当然,解码得到的结果自然也就是理所当然的“乱码”。因此,如果你把 latin1 放到了 fileencodings 的第一位的话,打开任何中文文件都是乱码也就是理所当然的了。
以下是滇狐推荐的一个 fileencodings 设置:
setfileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
其中,ucs-bom 是一种非常严格的编码,非该编码的文件几乎没有可能被误判为 ucs-bom,因此放在第一位。
utf-8 也相当严格,除了很短的文件外(例如许多人津津乐道的 GBK 编码的“联通”被误判为 UTF-8 编码的经典错误),现实生活中一般文件是几乎不可能被误判的,因此放在第二位。
接下来是 cp936 和 gb18030,这两种编码相对宽松,如果放前面的话,会出现大量误判,所以就让它们靠后一些。cp936 的编码空间比 gb18030 小,所以把 cp936 放在 gb18030 前面。
至于 big5、euc-jp 和 euc-kr,它们的严格程度和 cp936 差不多,把它们放在后面,在编辑这些编码的文件的时候必然出现大量误判,但这是 Vim 内置编码探测机制没有办法解决的事。由于中国用户很少有机会编辑这些编码的文件,因此我们还是决定把 cp936 和 gb18030 往前方以保证这些编码的识别。
最后就是 latin1 了。它是一种极其宽松的编码,以至于我们不得不把它放在最后一位。不过可惜的是,当你碰到一个真的 latin1 编码的文件时,绝大部分情况下,它没有机会 fall-back 到 latin1,往往在前面的编码中就被误判了。不过,正如前面所说的,中国用户没有太多机会接触这样的文件。
如果编码被误判了,解码后的结果就无法被人类识别,于是我们就说,这个文件乱码了。此时,如果你知道这个文件的正确编码的话,可以在打开文件的时候使用 ++enc=encoding 的方式来打开文件,如:
:e ++enc=utf-8 myfile.txt
5 fencview
根据前面的介绍,我们知道,通过 Vim 内置的编码识别机制,识别率是很低的,尤其是对于简体中文 (GBK/GB18030)、繁体中文 (Big5)、日文 (euc-jp) 和韩文 (euc-kr) 之间的识别。而对于普通用户而言,肉眼看出一个文件的编码方式也是很不现实的事情。因此,滇狐强烈推荐水木社区的 mbbill 开发的 fencview 插件。该插件使用词频统计的方式识别编码,正确率非常高。 点击这里 下载。
 
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。
Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。
布莱姆·米勒在80年代末购入他的Amiga计算机时,Amiga上还没有他最常用的编辑器vi。Bram从一个开源的vi复制Stevie开始,开发了Vim的1.0版本。最初的目标只是完全复制vi的功能,那个时候的Vim是Vi IMitation(模拟)的简称。1991年Vim 1.14版被"Fred Fish Disk #591"这个Amiga用的免费软体集所收录了。1992年1.22版本的Vim被移植到了UNIX和MS-DOS上。从那个时候开始,Vim的全名就变成Vi IMproved(改良)了。
在这之后,Vim加入了不计其数的新功能。做为第一个里程碑的是1994年的3.0版本加入了多视窗编辑模式(分区视窗)。从那之后,同一萤幕可以显示的Vim编辑文件数可以不止一个了。1996年发布的Vim 4.0是第一个利用GUI(图形用户界面)的版本。1998年5.0版本的Vim加入了highlight(语法高亮)功能。2001年的Vim 6.0版本加入了代码折叠、插件、多国语言支持、垂直分区视窗等功能。2006 年5月发布的Vim 7.0版更加入了拼字检查、上下文相关补全,标签页编辑等新功能。2008年8月发布的Vim 7.2,合并了Vim 7.1以来的所有修正补丁,并且加入了脚本的浮点数支持。现在最新的版本是2010年8月发布的Vim 7.3,这个版本除了包含最新修正的补丁之外,还加入了“永久撤销”、“Blowfish算法加密”、“文本隐藏”和“Lua以及Python3的接口”等新功能。
目前, VIM是按照VIM许可证发布的开源软件,这个协议兼容GPL。[3]它的协议中包含一些慈善条款,建议用户向荷兰ICCF捐款,用于帮助乌干达的艾滋病患者. VIM启动时会显示Help poor children in Uganda!的字样,在中文版本中则是请帮助乌干达的可怜孩童!.
从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。
基本模式有6种
普通模式
在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
Vim强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令"dd"删除当前行,但是第一个"d"的后面可以跟另外的移动命令来代替第二个"d",比如用移动到下一行的"j"键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复"dd"两次),和"dj"的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按"a"(append/追加)键或者"i"(insert/插入)键。
插入模式
在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按ESC键回到普通模式。
可视模式
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。
选择模式
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
命令行模式
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
Ex模式
这和命令行模式比较相似,在使用":visual"命令离开Ex模式前,可以一次执行多条命令。
派生模式有5种
操作符等待模式
这个派生模式指普通模式中,执行一个操作命令后Vim等待一个"动作"来完成这个命令。Vim也支持在操作符等待模式中使用"文本对象"作为动作,包括"aw"一个单词(a word)、"as"一个句子(a sentence)、"ap"一个段落(a paragraph)等等。
比如,在普通模式下"d2as"删除当前和下一个句子。在可视模式下"apU"把当前段落所有字母大写。
插入普通模式
这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim返回插入模式
插入可视模式
这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim返回插入模式。
插入选择模式
通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim返回插入模式。
替换模式
这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按"R"键进入。

学习笔记整理——vim,vim文件编码,vim配置文件相关推荐

  1. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  2. Kafka入门篇学习笔记整理

    Kafka入门篇学习笔记整理 Kafka是什么 Kafka的特性 应用场景 Kafka的安装 单机版部署 集群部署环境准备 Kafka 2.x集群部署 Kafka 3.x集群部署 监听器和内外网络 K ...

  3. 移动web——学习笔记整理

    目录 Day1 00.流式布局 00.1目标 00.2目录 01.移动端浏览器 02.视口(layout viewport) 03.meta视口标签(单标签) 04.物理像素&物理像素比 05 ...

  4. Deep Learning(深度学习)学习笔记整理系列之(二)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  5. Deep Learning(深度学习)学习笔记整理系列之(八)

     Deep Learning(深度学习)学习笔记整理系列之(八) 分类: Deep Learning 机器学习 Linux驱动2013-04-10 11:4257652人阅读评论(25)收藏举报 ...

  6. Deep Learning(深度学习)学习笔记整理系列三

    Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明 ...

  7. jqGrid 学习笔记整理——基础篇

    jqGrid 学习笔记整理--基础篇 jqGrid 实例中文版网址:http://blog.mn886.net/jqGrid/ 国外官网:http://www.trirand.com/blog/ 本人 ...

  8. Deep Learning(深度学习)学习笔记整理系列之常用模型

    Deep Learning(深度学习)学习笔记整理系列之常用模型(四.五.六.七) 九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learnin ...

  9. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  10. 【转载】Deep Learning(深度学习)学习笔记整理系列

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0  2013-0 ...

最新文章

  1. ios 代码设置控件宽高比_用宽高比调整UIImage的大小?
  2. 【笔记】opencv的python使用 腐蚀模糊背景分割等处理图像
  3. 图论--Dijkstra算法总结
  4. Android通信v2.0
  5. Atitit.跨语言  文件夹与文件的io操作集合  草案
  6. 2023王道C语言训练营(二叉查找树-顺序查找-折半查找)
  7. python 3d模型制作软件_最好用的9款3D建模软件
  8. linux根windows,linux系统刨根之路(二):实现windows和linux双系统-Go语言中文社区...
  9. sql服务器显示空白,sql服务器空白
  10. php计算用户留存,留存率到底有几种计算方式
  11. 第二讲:云分类及服务模式
  12. LWN:Linux audio plugin APIs综述!
  13. SAP 固定资产增值和减值
  14. 【AI简报20210514期】开源项目树莓派复古相机、L4自动驾驶新闻速递
  15. 冒泡排序法和选择排序法比较(从小到大,升序)
  16. 时间序列模型 (二):移动平均法
  17. html报告致谢,论文致谢内容
  18. SecondaryNameNode工作原理
  19. 九、网络协议和网络编程
  20. 手机“折叠”之战,OPPO的Find N能否胜券在握?

热门文章

  1. chiplogic-网表提取-(2)二极管三极管电阻器件插入
  2. 深度学习之语义分割unet算法解读
  3. 如何向数组里添加元素
  4. 大数据hadoop新手快速入门视频教程 Hadoop学习视频教程
  5. .分享10个最新的Web前端框架
  6. centos7下安装网易云音乐教程及相关依赖关系解决
  7. ad设置塞孔_超实用!PCB设计中过孔常用的6种处理方式
  8. 计算机显示器接法,电脑和显示器怎么连接_显示器连接电脑方法-win7之家
  9. idea激活码?学生如何白嫖使用idea?
  10. webkit之webpage