已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Vim的编码详解和中文环境设置很惭愧,作为vim的忠实用户,自从2年多前从help里知道了:edit +enc=xxx这个命令之后,我就没有去了解过vim的编码设定了。这些年来,我遇到编码出错,总是:edit +enc=xxx。今天:help了一下encoding等,终于搞清楚了相关的各个变量的作用和关系。简单的说,有三个设置。(我下面基本以中文环境来作为说明)1) 在.vimrc或者_vimrc里加入set fileencodings=utf-8,gb2312,gbk,gb18030,big5这句就基本OK了。vim会依次使用这些编码对文件进行编码的猜测。2) 如果还是不行,那么在打开文件之后,用:edit +enc=gbk这个命令强制使用某个编码。3) 如果依然不行,请检查你的$LANG环境变量。下面是详细的说明。vim编码主要涉及三个变量。encodingvim的内部编码,包括内存数据的编码,vim配置文件的编码。encoding取自变量$LANG,如果$LANG为空,则取latin1。这个编码应该和你的终端编码保持一致的。fileencoding文件的编码。vim在加载文件的时候,会把这个编码转换成encoding参数的编码。同样的,保存文件的时候,内存的编码会由encoding转变为fileencoding。需要注意的是,在vimrc里设置这个参数,不会起作用。因为打开一个文件的时候,fileencodings或者encoding会覆盖fileencoding。关于这个,可以看下面提到的打开文件流程。fileencodings=utf-8,gbk,gb2312vim在加载一个文件的时候,会依次尝试使用fileencodings里的编码作为fileencoding。如果全部失败,那么vim会使用encoding作为fileencoding。另外,如果vim使用了错误的编码,可以使用edit +enc=gbk这个命令。意思是,重新读取文件,并强制使用gbk作为fileencoding。这时候会忽略filencodings。以下是一些vim操作的内部流程打开文件首先从文件读入数据到内存,然后从fileencodings里依次使用各个编码来尝试转换为encoding。如果有一个成功,则中止尝试。如果找不到,则取encoding作为fileencoding。也就是说,这里有一个从fileencoding转换为encoding的过程。保存文件把内存的数据,从encoding,转换为fileencoding,然后写入文件。其实在这里最容易让人搞不清楚的就是encoding和fileencoding的区别。因为在大多数GUI特别是WINDOWS平台的编辑器里,encoding都是不需要设置的。通常这个encoding都是默认和GUI环境的编码保持一致。encoding是数据在内存里的存储编码,而fileencoding才是文件的编码。解决vim自动补全时扫描标签太慢导致假死问题vim的自动补全很好用,有时Ctrl-p想让它自动补全一下,它所有include的文件都挨个扫一遍。如果路径下目录和文件很多,vim就会全部扫描建立标签,耗时很长,导致vim不响应输入,陷入假死状态。但其实我要的那个词它就在当前编辑的文件里有,不需要它扫那么多额外的文件。解决之道:法1. 使用Ctrl - x - p 或 ctrl - x - n 进行自动补全;法2. 改变vim扫描标签的规则。vim缺省的补全顺序是 .,w,b,u,t,i,它意味着扫描:1. 当前缓冲区 . 2. 其它窗口的缓冲区 window?3. 其它载入的缓冲区 b . /quote具体操作:在.vimrc中添加如下一行:set cpt=.,w,b保存,退出,即可。vim如何输入偏僻字符?今天想输入 ,不知道如何输入。搜了下,vim果然强大,提前想好了,提供了一种变通的输入方法,成为digraph(二合字母),意即:把一个符号按两个字母输入。举例如下:oC 输入摄氏度符号a: 输入字符 ?欲知更多,请猛敲:h digraphVIM中不易发现的强大功能1. * (super star)向下查找光标下(或附近)的。向上找用#。g*查找则不限制whole word。区别:比如在if这个单词上按*键则查找,按g*键则查找if。2. C-R (magic insert)在insert模式下,C-R (register) 插入register里的内容,一个有趣的reg是=.假设你想输入123K的具体字节数,不用打开计算器,试试这个=1024*123,125952就出来了!另外在命令行里C-R C-W和C-R C-A是必用的技巧,它们将光标下的和拷贝到命令行里,省了你无数的typing。3. 删掉偶数行:g/+1 d或%norm jdd4. 怎样输入连续的数字?比如12345678910:r!seq 105. C-O (fast out, fast in)在insert模式下,用C-O后可以执行一个normal命令,然后立即返回insert模式,省去了用ESC的麻烦。6. I (fast grep )I显示文件中包含光标下的所有行。我常用来浏览某个id在程序中的引用情况。还有很多相关的命令::h include-search7. object-selectiw, aw, ib, i, i . 都非常有用!看help吧:h object-selectfxx 表示任何一个字符。这是最快的在一行种移动的方法了。0fx 用0先回到行首,再f任何一个操作命令在加一个移动命令。实现对某个范围的操作。例如dfx表示删除到下一个出现 x 的地方, x 可以使任意字符。操作命令有 d (cut), y(copy) , p(paste), v (select)移动命令有 hjkl, f, /, gg, G任何命令组合都可以先按一些 数字健 表示重复操作。如: d123j 删除下面123行。8. 宏纪录的功能例如,把文件中所有奇数行和偶数行合并。按如下序列ggqqJq100000000q9. C-p 自动补全在 insert mode 下写程序的时候,任何超长的变量名字都不成问题。10.从外部命令输入:r !ls可以读取当前目录的文件列表。11.:make可以用外部命令 make 编译工程。:cw查看出错信息,:cn:cp在出错信息之间跳转。11. , , , 命令可以在函数之间移动。12. 在数字上ctrl-a可使该数字加1另外,有一些总结:(1) 为什么别人的方法在我这里行不通?估计这是最难回答的一个问题了。:-)不过首先应该确定你的VIM版本是否足够新,功能是否完整。使用 :version 命令查看你的VIM版本以及功能。一个常见的情况,如果你用的是RedHat系统,请确定安装了vim-enhance的rpm包,否则将是不完整的VIM。(2) 如何找到上次编辑的文件?Ctrl+O (按两次)(3) 如何复制粘贴?方法一:先ma标记当前位置为a,移动到新的位置,再ya或者ya复制从标记位置a到当前位置的内容。和的区别:以字符为单位,以行为单位。这个方法应该是所有vi都适用的。(如果不对请指正。)方法二:按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y。三者的区别:v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。(4) 如何在多个文件中进行替换?一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换:方法一:for i in *.c; dosed -i -e s/oldvalue/newvalue/g $idone方法二:vim *.c:argdo %s/oldvalue/newvalue/g(5) 如何把fold一次全部打开?zR 或者 :set foldlevel=999(6) 如何选择或者复制光标所在的单词?在VIM中用iw或者aw表示一个单词,两者稍有区别。选择光标所在的单词:viw (v进入visual模式,然后iw)复制光标所在的单词:yiw(7) 如何计数搜索的字符串?如果需要统计缓冲中一个模式(pattern)出现的频率,需要把 report 置为0,然后用替换命令把模式替换成它自己。Vim 报告的已替换的数目就是模式出现的次数。例::set report=0:%s/./&/g characters:%s/i+/&/g words:%s/ lines:%s/the/&/g the anywhere:%s/&/g the as a word你可能希望复位 hlsearch 或者使用 :nohlsearch。(8) 如何去掉高亮搜索?方法一::nohlsearch方法二:/awertgvcxz (查找一个肯定不存在的字符串)设置了高亮搜索(:set hlsearch)以后,可以通过 :set nohlsearch 永久地关闭高亮显示,也可以通过 :nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。(9) 如何解决linux下gvim中文菜单乱码问题?以vim7.3为例source /usr/local/vim/share/vim/vim73/delmenu.vimsource /usr/local/vim/share/vim/vim73/menu.vim光source一个menu.vim或者啥也不source都是乱码另外,也有网友报告说没有遇到此类问题(10) 如何对所编辑的文件语法高亮显示?需要解释的是,VI有很多变种,它本身并没有这种功能,提供这种功能往往是其各种衍生版本,比如说vim。下面就vim中如何语法高亮简单解释一下。首先,确定一下你所用的操作系统,如果是windows,那么默认的配置文件就可以工作了。如果还不行,可以用鼠标从syntax菜单下选择一下适合你的文件类型(新版本的gvim默认把文件类型选择关闭了,需要点开,然后按照开头字母选择类型)如果是linux,那么确认一下是否是redhat。如果是redhat,那么需要安装vim-enhanced的rpm包。这些都做了以后,可以用:syntax on来打开语法高亮。必要时可以用:set filetype=.来设定你的文件类型。如果使用图形界面,比如gvim,那么syntax on和set filetype的操作可以用鼠标在菜单中选择,同windows下。如果是在控制台中使用vim,还应当确定你的终端设置支持颜色。(11) 如何快速插入多行数字0-99?在命令行中输入以下代码,或者先把代码保存到一个外部文件,然后source这个文件:let i = 0while i 100put = ilet i = i + 1endw如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0。(12) Vim 7.3 的中文帮助文件已经发布,下载、使用如下:- 下载:链接- 解压到合适路径,如 d:softVimvimfilesdoc- 更新帮助文件的tags,如::helptags d:softVimvimfilesdoc- 测试新特性的中文帮助,如 :h rnuVIM自动保存文件、自动重加载文件、自动刷新显示文件使用vim打开文件时,如果在其他编辑器中又打开此文件并做了修改、保存。那么在vim中默认是不自动加载已经修改了的文件,除非你在vim中保存时它才提示文件已经有改动。可是此时一般迟了,因为你当前在vim中的修改没法保存了。手动重加载文件的命令是:e!一劳永逸的方法是:vim提供了自动加载的选项 autoread,默认关闭。在_vimrc中添加 set autoread即可打开自动加载选项。相关选项::help autoread :help timestamp :help FileChangedShell :help :checktime另外,vim使用tag进行切换时,如果当前文件修改未保存,会提示需保存后才能跳转。在_vimrc中添加set autowriteall可使切换文件时,修改的文件被自动保存vi中多个文件相互之间的复制、粘贴功能简介!大家在vi编辑中,常常遇到想把文件A里面的一行或多行,复制到B文件里面去(可能很多人不知道怎么办),该怎么做了?下面是几中方法:1.如果你有多台机器,而且是联网的,你可以用netterm虚拟终端,telnet登陆主机对A文件进行修改、复制,然后打开B文件粘贴过去!2.如果是单机,当然要用unix自带的编辑功能呢 先简单介绍一些vi编辑里的命令: (A).yw 将当前字存入无名缓冲区,前面可加x,表示存入名字为x的有名 缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命 令取出 yy 将当前行存入无名缓冲区,用法参看yw (B).命令如下:a-Z 是缓冲区,也可移出数字1-Array指定的删除缓冲区 利用命名缓冲区可很好地保存若干文本段,便于以后存取、移动或者重排。这些缓冲区用a到z字母命名!为了访问这些缓冲区中的一个,要使用双引号 例如:要把一行插入a缓冲区,可键入: ayy 为了把这个文本放回该文件中,键入ap (c).m做标志命令: m 字母 用字母标记当前行,以后可用 字母使光标移动到当前行, (参看命令)列子:1。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新教材高中历史 第二单元 中古时期的世界 第5课 古代非洲与美洲(1)教学教学设计 新人教版必修《中外历史纲要(下)》
- 2026中国OLED显示驱动芯片产能布局与市场需求匹配度分析报告
- 2026中国新材料行业市场发展现状分析及投资布局规划研究报告
- 2026年高州市辅警招聘考试试题题库含完整答案【名校卷】
- 2025年吉林省德惠市辅警招聘考试试题题库(满分必刷)附答案
- 2026中国铁路设备行业市场现状调研及发展前景与投资机会研究报告
- 血细胞散点图练习题及参考答案
- 2026中国铁路工程建设行业市场现状供需分析及投资评估规划分析研究报告
- 2026年广东省湘教版高中物理选修五第四章原子物理课件
- 2026Fast芯片组行业政策红利与市场机遇洞察报告
- 2025年中级咖啡师资格考试试题与答案
- GB/T 45845.1-2025智慧城市基础设施整合运营框架第1部分:全生命周期业务协同管理指南
- 外包单位安全管理制度
- 小麦种植技术试题及答案
- 民用建筑设计术语标准
- 医疗护理员课件
- 护理阿尔兹海默病
- 学习护理知识和急救常识
- 人教PEP版英语五年级下册Unit 1~6全册教案共6个单元整体教学设计
- GB/T 19183.1-2024电气和电子设备机械结构户外机壳第1部分:设计导则
- DL∕T 318-2017 输变电工程施工机具产品型号编制方法
评论
0/150
提交评论