去掉linux系统vi中出现^M字符的方法: ^M符号是windows系统下的換行符,在windows下的文本通过bin模式ftp上传到了unxi空间出现的,要去掉这些结束符,我们可以用dos2unix命令去掉,也可以直接在vi中操作去掉,实现方法如下: 在test.txt文件中有如下内容: eeesdgtdfg dfgdfgfdgfd ^M ineesert into pusfdgdfgfd)ff;^M adwwfdfed adfdsdfsfdsf.^M 在命令模式下运行命令 :%s/^M//g 回车 注意:里面的^M 必须是同时按 Ctrl+V+M ,表示回车。 不是直接输入 ^M,也不是粘帖复制。 命令完成后,用:x 保存退出后,再次用vi打开就全部被替换掉了。
使用VIM的用户多数在LINUX环境下工作,我就是在UBUNTU下工作的,可经常和Windows下的文件打交道,于是不得不处理统码的问题。 前面的文章 gvim详细配置 里已经说过了如何打开中文文件,今天说一说如何把GBK编码转换为UTF8编码和如何转化DOS系统和UNIX系统格式。 把GBK编码转换为UTF8编码,使用如下命令 set fileencoding=utf8 转化DOS系统和UNIX系统格式,使用如下命令 set ff=dos set ff=unix
文件间的切换变得很麻烦,通常只能用:bn,:bN向前或者向后切换,没有更好的办法在多个文件中挑选一个。 bufexplorer插件就是帮你在打开的文件中进行选择的。它的下载地址在vim的官方网站就可以找到 http://www.vim.org/scripts/script.php?script_id=42 下载之后将plugin目录下的 bufexplorer.vim文件放到你home目录下的.vim/plugin/目录中即可。 默认情况下打开文件选择窗口的命令为\be,例如当我打开了两个文件,按下\be之后,文件选择窗口弹出 在这个界面先按上(j)或者下(k)就可以选择文件,按回车就可以进入选中的文件进行编辑。 按<F1>键可以看到帮助信息 r可以进行反向排序,d/D可以用来关闭文件,p可以用来显示/关闭绝对路径模式。其他的一些功能这里就不一一介绍了,有兴趣的同学可以去读它的文档。 设置快捷键: 在~/.vimrc 或 /etc/vim/vimrc文件里添加如下配置 “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” ” F6 BufExplorer “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” map <F6> :BufExplorer<CR> 则按下F6即可打开bufexplorer
vim目录树插件NERD tree 可以像Editplus那样列出目录结构,方便文件打开操作。 效果图如下: 安装方法如下: 1.下载插件文件 http://www.vim.org/scripts/script.php?script_id=1658 解压文件到~/.vim/目录下,如果没有此目录,则要自己创建。 2.添加配置文件 在~/.vimrc 或 /etc/vim/vimrc文件里添加如下配置 “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” ” F7 NERDTree “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” map <F7> :NERDTreeToggle<CR> imap <F7> <ESC>:NERDTreeToggle<CR> 则在VIM里按下F7就可打开关闭目录树。具体操作命令请查看插件doc目录下的帮助文件。
“”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” ” 一般设定 “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” ” 设定默认解码 set fenc=utf-8 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 ” 中文菜单显示 set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=prc ” 不要使用vi的键盘模式,而是vim自己的 set nocompatible ” history文件中需要记录的行数 set history=100 ” 在处理未保存或只读文件的时候,弹出确认 set confirm ” 与windows共享剪贴板 “set clipboard+=unnamed ” 侦测文件类型 filetype on ” 载入文件类型插件 filetype plugin on ” 为特定文件类型载入相关缩进文件 filetype indent on ” 保存全局变量 set viminfo+=! ” 带有如下符号的单词不要被换行分割 set [...]
1. 你可以映射一个键调用这些命令。例如,下面的命令 创建一个关键的<F8>键映射到正常模式切换taglist窗口。 nnoremap <silent> <F8> :TlistToggle<CR> 上述映射添加到您的VIM配置文件里文件。 2. 要自动打开的Vim的启动taglist窗口,设置 ‘Tlist_Auto_Open’变量设置为1。 3. 关闭taglist窗口 您可以关闭窗口从taglist按’q’或taglist窗口 Vim中使用“:q”命令。 您还可以使用Vim窗口的命令,以任何 关闭taglist窗口。 调用“:TlistToggle”命令时,taglist 窗口打开,关闭taglist窗口。 您也可以使用 “:TlistClose”命令关闭taglist窗口。 4. 跳的标签或文件 您可以选择在taglist窗口或按回车键标记 或通过双击标记名称使用鼠标。 跳转到标签上的 点击鼠标设置’Tlist_Use_SingleClick’变量设置为1。 5. 跳转到标签在新窗口中,按’o’的关键。 要打开文件中的 以前的窗口 使用的’p’的关键。您可以按字母p键跳在标签,但仍保持在taglist窗口(预览)的光标。 6. 要打开一个选项卡中选定的文件,用’t’的关键。 如果该文件已经 在目前的一个选项卡,然后将光标移动到该标签,否则文件是 开设了一个新的标签。 跳转到标签在新标签中按Ctrl -t。在taglist窗口自动打开新创建的标签。 7. 在taglist窗口中,可以使用[[或<Backspace>键跳转到 开始或以前的文件。 您可以使用]]或<Tab>键跳转到开始的下一个文件。 当到达第一个或最后一个文件,搜索环绕和跳转到下一个/以前的文件。 8. 从taglist删除文件 您可以删除taglist窗口中的文件,按’D’是关键,光标是为在taglist窗口中的文件中列出的标签之一。 那个删除的文件将不再显示在taglist窗口,在当前Vim的会议。 再次显示该文件的标签,在Vim打开文件 窗口,然后使用“:TlistUpdate”命令,或使用“:TlistAddFiles”命令 将文件添加到taglist。 9. 您也可以更新或刷新的文件显示在taglist窗口按 “U”是关键。 如果现有的文件被修改后的文件保存,taglist插件自动更新显示的标签文件。 [...]
在.vimrc里加入,插入模式下键入 xtime 自动扩展成当前系统时间。 iab xtime <c-r>=strftime(“%Y-%m-%d %H:%M:%S”)<cr> leal的方法输入时间后光标会换行,如果后面写成<C-I>的话,回车就会显示时间且光标不换行. iab xtime <c-r>=strftime(“%Y-%m-%d %H:%M:%S”)<C-I>
Vim中也可以像普通ide那样的在多个文件中查找的功能,用的是:vimgrep这条命令,格式如::vimgrep /AAA/ **/*.* 。执行这条命令后,可以通过:cw命令打开匹配的窗口进行查询结果的查看。 另外,vim还可以通过args命令对多个文件进行批量操作。 在我们的日常工作中,经常需要将多个文件中的某个字段替换为其他的字段,但多数的编辑器只提供了在打开文件中的查找和替换(当然,也有很多强大的编 辑器支持多文件查找和替换,如EditPlus支持在所有打开文件中查找和替换等等),那么,在强大的Vim中,如何进行多文件的查找和替换呢? 答案是利用 args 命令! 举例说明,如果你想将当前目录下所有类型的文件中的 oldword 替换为 newword,那么只需要打开当前目录下的某个文件,输入如下两条命令并回车: :args *.* :argdo %s/oldword/newword/egc | update 接下来的工作就是确认Vim查找到的那个关键词是否要被替换。是则按下 y ,否则按下 n。 我们解释下所用到的命令: * 第一行,我们使用 args 命令,将当前目录下所有类型的文件都加入到参数列表中(不包括子文件夹中的文件,),以备后续操作。 args命令我还没完全搞清楚,嘿嘿。实验了下,使用 :args */* 的话,是将当前目录下 所有在子文件夹中的目录和子文件夹中的文件(不包括下一级文件)加入参数列表中。 了解了这点,你也可以只替换需要的类型,如 :args *.html。举一反三,反不出来的,再去Google,呵呵。 * 第二行,使用 argdo 命令,对参数列表中的文件进行替换操作。s 就是替换命令了,加上 % 指对所有行,即全文匹配。g 指对每一行中所有匹配的地方都执行替换,e 指使用正则模式,为了区分大小写。最后的 c 指每次替换前,都要确认一下。 查找操作呢?引用一下别人的命令吧: 查找 :args *.cpp :argdo /word 替换 [...]
VIM是被誉为非常高效的文本编辑软件。但是掌握并高效的使用是件有难度的事情。在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法。下面是我在阅读VIM用户手册时整理的一些资料: 1. 行内搜索。 1. f命令可以进行行内搜索。输入fx可以找到下一个x字符。 2. F命令可以在反方向进行行内搜索,输入Fx可以找到上一个x字符。 3. t命令同样是进行行内搜索,但是光标停留在符合条件的字符的前面。输入tx使光标停留在下一个x字符的前面。 4. T命令可以在反方向进行行内搜索,但是光标停留在符合条件的字符的下一个字符上。输入tx使光标停留在上一个x的后面的字符上。 5. %可以搜索与之匹配的对应的()[]{}。这个功能对于书写程序特别有用。 2. 全文的搜索 键入/后,光标进入VIM底部的命令行,这时就可以输入以/为开始的/搜索命令了。 1. 最简单的查找。输入/string就可以查找string字符串。 2. 继续查找。在第一次搜索后输入n将会继续进行上一次搜索,如果输入3n那么会找到后面第三个符合的字符串。大写的N会在反方向,也就是向上进行搜索。 3. 向上搜索。输入?可以向上搜索。随后的n命令将会继续向上搜索,N向下搜索,其他和/一样。 4. 对大小写的匹配。 4.1. 在命令行输入:set ignorecase可以设置搜索以忽略大小写的方式进行。输入:set noignorecase可以设置搜索以匹配大小写的方式进行。默认的,将匹配大小写。这个默认设置可以在.vimrc中修改。 4.2. 大小写智能匹配模式。输入命令:set ignorecase smartcase可以设置为智能大小写匹配模式。在这种模式下,如果你输入的字符串中至少包含一个大写字母,那么就会以大小写敏感模式进行搜索,否则以忽略大小写模式进行搜索。 4.3. 在搜索命令中指定大小写。在几种大小写搜索模式中进行转换总要输入长长的一串指令,如果需要不断地转换模式,确实有些麻烦。所以你可以直接在搜索命令中指定大小写匹配模式。\c表示忽略大小写,而\C表示对大小写敏感。 5. 查找当前词。一个简单的方法可以让你查找下一个和当前词一样的词,你不比输入/currentword,你可以直接按下*就可以查找下一个currentword。#可以让你向上查找同一个单词。 6. 调整查找后的光标位置。 6.1. 使用/string/3会使在光标转到找到string字符串的行下面的第3行。第1行从包含string的行算起。同样可以使用/string/-2来使光标停留在包含string的行的前面2行。 6.2. 使用/string/e可以使光标停留在string字符串的末尾而不是默认的第一个字符位置。/string/b则表示停留在string第一个字符的位置,不过默认就是如此,我们不比多此一举。但是/string/b+2却可以使光标停留在string字符串的第二个字符的位置,这里是r。在e或者b的后面+或者-数字,可以进一步调整光标的位置。 7. 特殊字符。在搜索命令中, .*[]^%/?~$这10个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠/。而\e表示<esc>;\t表示<tab>;\r表示<cr>;\b表示<bs>。 8. 匹配换行或空格。使用\n可以表示一个换行;而\s表示匹配空白,注意是空白不是空格。\_s表示匹配换行或者空格;\_a表示匹配换行或者一个字母。比如:/the\nword查找以the结束并且下一行以word开始的行的位置。/the\_sword查找the和word之间以空白或者换行分割的位置。/the\_s\+word表示the和word之间可以有多个空白。\+的含义可以在后面找到。 9. 限定词首或者词尾。\<可以限定找到是以指定字符串开始的单词。比如/\<the可以找到以the开始在字符串,但是会忽略在单词中间包含the的字符串。而\>则是限定必须是以指定字符串结尾的单词。 10. 行首和行尾。输入/^string查找以string开始的行,并且光标停留在这个string的第一个字符。输入/string$则查找以string结束的行,并将光标停留在这个string的第一个字符。这个模式不会忽略前导或者后置的空格。 11. 匹配任何一个字符。句号.可以匹配任何一个字符。例如/t.e可以找到the或者tae或者tue。 3. 更加复杂的匹配模式 [...]
“”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” ” 自动完成函数 “”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””””” set dictionary-=/etc/vim/funclist.txt dictionary+=/etc/vim/funclist.txt ” Use the dictionary completion set complete-=k complete+=k function! InsertTabWrapper() let col=col(‘.’)-1 if !col || getline(‘.’)[col-1] !~ ‘\k’ return “\<TAB>” else return “\<C-N>” endif endfunction ” Remap the tab key to select action with InsertTabWrapper inoremap <TAB> <C-R>=InsertTabWrapper()<CR> 下载附件:funclist