从无到有学习vim开发环境搭建
vi (http://baike.baidu.com/view/908054.htm)
vim (http://baike.baidu.com/subview/113188/9338173.htm)
[esc|i|:] 模式切换
插入模式
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
命令模式
[h]、[j]、[k]、[l] 左 下 右 上
v 进入行模式,V 进入列模式 , ~ 切换大小写(选中文本按U大写,u 小写),
. 重复上一次命令
撤销更改
u 撤销,ctrl + r 恢复撤销的更改
删除
D 从光标处删除至行尾,dd 删除一行,dw 删除一个单词,
x 删除光标后一个字符,#x 删除光标后第#个字符
X 删除光标前一个字符,#X 删除光标前第#个字符
dj 删除至下一行,dk 删除至上一行,d^ 删除到行首,d$删除到行尾
替换
r 替换光标所在处的字符,R替换光标所到之处的字符,直到按esc为止
更改
cw 更改光标所在处的字到字尾处,c#w表示更改#个字
剪切且进入插入模式 c
c$ 剪切到行末
复制与粘贴
yy 复制一行,yw 复制一个单词;p 在当前光标后粘贴,P 在当前光标前粘贴
#yw 复制#个字到缓冲区,#yy 拷贝从光标所在的该行“往下数”#行文字
底行模式
w filename , wq 存盘并退出 , q! 退出不存盘,x 保存并退出
# 跳转到第#行
搜索
/ {字符串} 回车 搜索,n 查找下一个,N 查找上一个
? {字符串} ,同/ 但是是反方向
s /from/to/g 在当前行中查找并全部替换 (g 全部替换,否则只替换一次)
m,n s/from/to/g 在m到n行中查找并全部替换 (g 全部替换,否则只替换一次)
%s /from/to/g 在所有行行中查找并全部替换 (g 全部替换,否则只替换一次)
搜索或者替换的时候偶尔忽略大小写,加 \c,如 /naa\c
配置文件
1. 配置文件未知 :version 得到echo $VIM , echo $HOME 从而定位到配置文件
2. $VIM\_vimrc 文件
3. vim -u file 指定配置文件;vim -u NORC不读取任何配置文件
4. 配置文件中使用 " 作为注释符号
常用配置文件内容
set nocompatible "关闭 vi 兼容模式
set nu "显示行号
colorscheme desert "设定配色方案
syntax enable
syntax on
set nobackup "覆盖文件时不备份
set autochdir "自动切换当前目录为当前文件所在的目录
set magic "显示括号配对情况
set laststatus=2 "显示状态栏 (默认值为 1, 无法显示状态栏)
set tabstop=4 "设置tab制表符为4个空格
set autoindent "自动对齐
set showtabline=2 "显示tab标签名称(1 为不显示)
set ignorecase "忽略大小写(ic)
set noignorecase "不忽略大小写(noic)
set smartindent "开启新行时使用智能自动缩进
set smartindent shiftwidth=4 "C语言自动缩进,缩进值为4个字符宽度
set ruler "显示光标行列信息
set list "显示制表符
filetype on "检测文件的类型
set history=1000 "记录历史的行数
set showmatch "设置匹配模式,输入左括号会出现右括号
"修改文件自动备份
if has("vms")
set nobackup
else
set backup
endif
多文件操作
vim -o file ... 同时打开多个文件, ^w + j|down 向下;^w + k|up 向上
:split file ... 在编辑器中打开多个文件,如果不带参数则对当前文件分割
进阶操作
1. 标记
:marks列出所有标记,m 做标记,' 移动到标记的行首,` 移动到标记的光标位置
m{a-z}:在当前光标的位置标记一个书签,名字为 a-z 的单个字母,名字只能是小写字母
`a 到书签a处,'a 移动到书签a处的行首
`. 上上次编辑文件的地方
2. 移动光标
0 行首,$ 行末,^ 行首第一个字母;
gg 文章头(仅vim),G 文章尾;#l 移到行第#列,b 上个字开头
e 向前移至单词尾,E 同e 但忽略标点;w 向前移至单词首,W 同w 但忽略标点
ctrl + b 屏幕向后移动一页,ctrl + f 屏幕向前移动一页
ctrl + u 屏幕向后移动半页,ctrl + d 屏幕向前移动半页
#G 移动光标至文章的第#行行首,ctrl + g 列出光标所在行的行号
#$ 移动光标至屏幕的第#行行末
H 光标移动到当前屏幕的行首,#H 移到第#行首
dH 删除从光标当前所在行至所显示屏幕首行的全部内容
M 光标移动到当前屏幕中间行的行首
dM 删除从光标当前所在行至屏幕中间行的全部内容
L 光标移动到当前屏幕最底行的行首,#L 移到第#行首(从低向上数)
dL 删除从光标当前所在行至屏幕最底行的全部内容
( 移动光标到上一个句子,) 移动光标到下一个句子
* 读取光标处的字符串,并且移动光标到它再次出现的地方
% 在成对的括号等符号间移动,将光标放到任意符号上,按%
3. 切换大小写gu/gU
gg gu G 从头到尾切换成小写,gg gU G从头到尾切换成大写
H gu G 从屏幕头到文件尾切换成小写
H gu L 从屏幕头到屏幕尾切换成小写
只转化某个单词
gu[#]w ,gu[#]e,gU[#]w,gU[#]e
转换几行的大小写
#gu/#gU 从光标所在行往下再数#行都进行转换
gU0 从光标所在位置到行首,都变为大写
gU$ 从光标所在位置到行尾,都变为大写
gUG 从光标所在位置到文章最后一个字符,都变为大写
gU1G 从光标所在位置到文章第一个字符,都变为大写
4. 关键词自动完成
只需要输入开始几个字母,按C-N或C-P
5.多重剪贴板(使用寄存器的命令为双引号")
:reg 列出当前定义的所有寄存器名和它们的内容
使用小写字母来定义寄存器
"kyy 拷贝当前行到寄存器 k
"kp 粘贴寄存器 k 里面的内容
6. 打开页签
:tabnew file
:tabedit file
:tabfind
:tabdo
:tabclose
:tabfirst,tablast
:tabNext # 切换到第 # 个标签
:tabmove # 将当前页签拖到第#个位置
疑难问题:
1. Press ENTER or type command to continue 为何出现
:messages 查看问题详情
Messages maintainer: Bram Moolenaar <Bram@vim.org>
Error detected while processing D:\Program Files (x86)\_vimrc:
line 8:
E484: Can't open file D:\Program Files (x86)\vim73\syntax\syntax.vim
line 9:
E484: Can't open file D:\Program Files (x86)\vim73\syntax\syntax.vim
"getturbogears.py" [unix] 444L, 16284C
2. colorscheme desert "设定配色方案
可能找不到配色文件,使用:messages查看,从http://hans.fugal.net/vim/colors/desert.html下载此文件放到
vim安装目录下的\colors\desert.vim 中
" Vim color file
" Maintainer: Hans Fugal <hans at fugal.net>
" Last Change: 5 Oct 2001
" URL: http://fugal.net/vim/colors/desert.vim
" cool help screens
" :he group-name
" :he highlight-groups
" :he cterm-colors
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name="desert"
hi Normal guifg=White guibg=grey20
" highlight groups
hi Cursor guibg=khaki guifg=slategrey
"hi CursorIM
"hi Directory
"hi DiffAdd
"hi DiffChange
"hi DiffDelete
"hi DiffText
"hi ErrorMsg
hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none
hi Folded guibg=grey30 guifg=gold
hi FoldColumn guibg=grey30 guifg=tan
hi IncSearch cterm=none ctermbg=blue ctermfg=grey guifg=slategrey guibg=khaki
"hi LineNr
hi ModeMsg guifg=goldenrod
hi MoreMsg ctermfg=LightGreen guifg=SeaGreen
hi NonText ctermfg=LightBlue guifg=LightBlue guibg=grey30
hi Question guifg=springgreen
hi Search ctermbg=blue ctermfg=grey guibg=peru guifg=wheat
hi SpecialKey guifg=yellowgreen
hi StatusLine guibg=#c2bfa5 guifg=black gui=none
hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none
hi Title guifg=indianred
hi Visual cterm=none ctermbg=darkgreen ctermfg=yellow gui=none guifg=khaki guibg=olivedrab
"hi VisualNOS
hi WarningMsg guifg=salmon
"hi WildMenu
"hi Menu
"hi Scrollbar
"hi Tooltip
" syntax highlighting groups
hi Comment ctermfg=lightblue guifg=SkyBlue
hi Constant ctermfg=darkcyan guifg=#ffa0a0
hi Identifier ctermfg=darkgreen cterm=none guifg=palegreen
hi Statement ctermfg=brown guifg=khaki
hi PreProc ctermfg=darkmagenta guifg=indianred
hi Type ctermfg=darkgreen guifg=darkkhaki
hi Special ctermfg=darkmagenta guifg=navajowhite
"hi Underlined
hi Ignore guifg=grey40
"hi Error
hi Todo ctermfg=darkred ctermbg=yellow guifg=orangered guibg=yellow2
"vim: ts=4
3. 在windows下打开utf-8编码的文件乱码(可以通过 set enc? 查询文件编码)
无论是 查看 set enc=utf-8 或者 set fileencoding=utf-8 都不管用
encoding
encoding是Vim内部使用的字符编码方式,包括Vim的buffer(缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择。VIM用户手册上建议只在.vimrc中改变它的值,事实上似乎也只有在.vimrc中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码)。
fileencoding
Vim中当前编辑的文件的字符编码方式,Vim保存文件时也会将文件保存为这种字符编码方式(不管是否新文件都如此)。
fileencodings
Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1放到最后面。
termencoding
Vim所工作的终端(或者 Windows的Console窗口)的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term的编码.这个选项对GUI模式Vim(GVim)无效,而对Console模式的Vim而言就是Windows控制台的代码页,并且通常我们不需要改变它。
现在来看看Vim的多字符编码方式支持是如何工作的:
启动Vim,根据.vimrc文件中设置的encoding的值来设置buffer、菜单文本、消息文的字符编码方式。
读取需要编辑的文件,根据fileencodings中列出的字符编码方式逐一探测该文件编码方式。并设置fileencoding为探测到的,看起来是正确的字符编码方式。
对比fileencoding和encoding的值,若不同则调用iconv将文件内容转换为encoding所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。注意,完成这一步动作需要调用外部的 iconv.dll,你需要保证这个文件存在于$VIMRUNTIME或者其他列在PATH环境变量中的目录里。
编辑完成后保存文件时,再次对比fileencoding和encoding的值。若不同,再次调用iconv将即将保存的buffer中的文本转换为fileencoding所描述的字符编码方式,并保存到指定的文件中。同样,这需要调用iconv.dll由于Unicode能够包含几乎所有的语言的字符,而且Unicode的UTF-8编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议encoding的值设置为utf-8。这么做的另一个理由是encoding设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文Windows里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为GB2312/GBK比较合适,因此fileencoding建议设置为chinese(chinese是个别名,在Unix里表示gb2312,在Windows里表示cp936,也就是GBK的代码页)。
当vim在utf-8的local下打开gbk文件时,显示的是乱码,可以在~/.vimrc文件中加入如下代码来解决:
set fencs=utf-8,gbk
这一行的作用是告诉vim,打开一个文件时,尝试utf8,gbk两种编码,vim只需要扫描文件的前一段,就可以根据文件里面的数据判断出文件是否用的是utf8或者gbk编码。如果不指定这一行,则vim只会用当前编码 (locale)来打开文件,因为locale是UTF-8,而文件是gbk,所以打开是乱码。
一般vim打开中文文件时出现乱码时可以用下面的方法来解决:
set fileencoding=gb18030 set fileencodings=utf-8,gb18030,utf-16,big5
这样设置的原因说明如下:vim里面的编码主要跟三个参数有关:enc(encoding), fenc(fileencoding)和fencs(fileencodings)。其中fenc是当前文件的编码,也就是说,一个在vim里面已经正确显示了的文件(前提是你的系统环境跟你的enc设置匹配),你可以通过改变 fenc后再w来将此文件存成不同的编码。比如说,我:set fenc=utf-8然后:w就把文件存成utf-8的了,:set fenc=gb18030再:w就把文件存成gb18030的了。这个值对于打开文件的时候是否能够正确地解码没有任何关系。fencs就是用来在打开文件的时候进行解码的猜测列表。文件编码没有百分百正确的判断方法,所以vim只能猜测文件编码。比如我的vimrc里面这个的设置是:
set fileencodings=utf-8,gb18030,utf-16,big5
所以我的vim每打开一个文件,先尝试用utf-8进行解码,如果用utf-8解码到了一半出错(所谓出错的意思是某个地方无法用utf-8正确地 解码),那么就从头来用gb18030重新尝试解码,如果gb18030又出错(注意gb18030并不是像utf-8似的规则编码,所以所谓的出错只是 说某个编码没有对应的有意义的字,比如0),就尝试用utf-16,仍然出错就尝试用big5。这一趟下来,如果中间的某次解码从头到尾都没有出错,那么 vim就认为这个文件是这个编码的,不会再进行后面的尝试了。这个时候,fenc的值就会被设为vim最后采用的编码值,可以用:set fenc?来查看具体是什么。
当然这个也是有可能出错的,比如你的文件是gb18030编码的,但是实际上只有一两个字符是中文,那么有可能他们正好也能被utf-8解码,那么这个文件就会被误认为是utf-8的导致错误解码。
至于enc,其作用基本只是显示。不管最后的文件是什么编码的,vim都会将其转换为当前系统编码来进行处理,这样才能在当前系统里面正确地显示出 来,因此enc就是干这个的。在windows下面,enc默认是cp936,这也就是中文windows的默认编码,所以enc是不需要改的。在 linux下,随着你的系统locale可能设为zh_CN.gb18030或者zh_CN.utf-8,你的enc要对应的设为gb18030或者 utf-8(或者gbk之类的)。
最后再来说一下新建空文件的默认编码。看文档好像说会采用fencs里面的第一个编码作为新建文件的默认编码。但是这里有一个问题,就是fencs 的顺序跟解码成功率有很大关系,根据我的经验utf-8在前比gb18030在前成功率要高一些,那么如果我新建文件默认想让它是gb18030编码怎么 办?一个方法是每次新建文件后都:set fenc=gb18030一下,不过我发现在vimrc里面设置fenc=gb18030也能达到这个效果。
4. 全部替换
:s/a/b/ 表示用b替换改行中第一次出现的a
:s/a/b/g 表示用b替换改行中所有出现的a
:m,ns/a/b/ 表示用b替换m至n行中第一次出现的a
:m,ns/a/b/g 表示用b替换m至n行中所有出现的a
m为.时表示从当前行开始;n为$时表示一直到最后一行
:%s/a/b/ 表示用b替换所有行中第一次出现的a。等价于:g/a/s//b/
:%s/a/b/g 表示用b替换所有行中所有出现的a。等价于:g/a/s//b/g
相关推荐
VMware-VIM-all-6.7.0-15976714 原版镜像 .................................................................................................................
vmware vcenter6.5 for windows版本。 VMware-VIM-all-6.5.0-14020092
Ubuntu 64位免安装版VIM-IDE。 压缩包为直接打包/etc/vim配置及插件包。 root@ubuntu:/etc/vim# tree -L 2 . bundle ale auto-pairs echofunc gdbmgr indentLine LeaderF nerdcommenter nerdtree nerdtree...
vim-common-7.4.629-7.el7.x86_64.rpm
vim键盘图 ....vi-vim-cheat-sheet.gif vi-vim-tutorial-1.gif vi-vim-tutorial-2.gif vi-vim-tutorial-3.gif vi-vim-tutorial-4.gif vi-vim-tutorial-5.gif vi-vim-tutorial-6.gif vi-vim-tutorial-7.gif
**vim-powerline-develop** 是一个针对 Vim 编辑器的扩展插件,它属于 Vim 插件中的 **powerline** 家族。Powerline 是一个非常流行的增强型状态栏插件,它为 Vim、Emacs 和其他软件提供了一个美观、信息丰富的状态...
vim-tmux-focus-events, 使终端vim和tmux更好地协同工作 tmux-focus-events.vimFocusGained 和 FocusLost 自动命令事件在终端vim中不工作。 这个插件在使用vim内部Tmux时恢复它们。以下是相关内容:vim fugitive插件...
VMware vSphere 6.7 百度网盘链接及提取 码
Atom-atom-vim-mode-plus是针对Atom文本编辑器的一个扩展插件,主要目的是增强其内置的VIM编辑模式。VIM(Vi Improved)是一种高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集而闻名。在Atom中,VIM模式...
vim-for-server, .vimrc, 简单配置服务器,不带插件 vim-for-servervimrc,简单配置服务器,不带插件。简介这个存储库是 k-vim的简化版本。只删除所有插件,保留基本配置。屏幕截图 安装 。 如果有必要,备份旧的. ...
基于win32版本vim82搭建IDE,解压文件到自定义目录下即可,并设置系统环境变量VIM 值为该目录。并自带以下插件 Plugin 'VundleVim/Vundle.vim' Plugin 'Valloric/YouCompleteMe' "代码补齐 Plugin 'SirVer/ultisnips...
根据提供的文件信息,我们可以推断出这份资料与VMware vCenter Infrastructure Manager (VIM) Setup 5.5.0版本有关。尽管描述部分没有提供太多技术细节,但从标题和其他信息中,我们可以提炼出一系列与VMware ...
在使用Vim作为集成开发环境(IDE)时,它能够提供许多类似IDE的功能,如代码高亮、代码折叠、代码分析、代码开发、工程管理、工具链集成等。下面详细说明这些知识点: 1. 源码安装编辑器 Vim:Vim可以通过源码编译...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
vim-atom-dark, 一个由 Atom 黑暗主题默认启发的vim主题 vim-atom-dark一个由 Atom 黑暗主题默认启发的vim主题。 在 .vim 文件夹中克隆这个文件或者将 colors/atom-dark.vim 文件放在 colors/ 中。
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
vim-markdown-toc, 用于生成 Markdown 文件目录的vim 7.4 插件 vim-markdown-toc用于生成 Markdown 文件目录的vim 7.4 插件。中文版使用指南目录特性安装工具使用情况生成内容目录。更新现有目录删除目录选项屏幕...
vim-8.0.zip gpm-libs-1.20.7-6.el7.i686.rpm ncurses-5.9-14.20130511.el7_4.x86_64.rpm ncurses-base-5.9-14.20130511.el7_4.noarch.rpm ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm ncurses-libs-5.9-14....
离线安装包,亲测可用