Vim 编辑器
第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

vim 批量替换

[不指定 2012/01/02 23:49 | by 刘新修 ]

使用vim批量替换多个文件中的

PHP 代码:
==============================================================================
*
26.3*    
改动多个文件

假定你有个变量名为 
"x_cnt" 而你要把他改为 "x_counter"
。这个变量在多个 C 文件都
被用到了。你需要在所有文件中作此改动。你得这么做。
   把所有相关文件放进参数列表
: >

    :
args *.
c
<
这个命令会找到所有的 C 文件并编辑其中的第一个。现在你可以对所有这些文件执行
置换命令
: >

    :
argdo %s/<x_cnt>/x_counter/ge 
update

命令 
":argdo" 
把另一个命令当作其参数。而后者将对参数列表内所有的文件执行。
   作为参数的替换命令 
"%s" 作用于所有文本行。它用 "\<x_cnt\>" 
来查找
"x_cnt"。 "\<" 和 "\>" 用来指定仅匹配那些完整的词,而不是 "px_cnt" 

"x_cnt2"

   替换命令的标记中包含 
"g",用以置换同一行文本内出现的所有的匹配词 "x_cnt"

标记 
"e" 用于避免因文件中找不到 "x_cnt" 而出现错误信息。否则 ":argdo" 
命令
就会在遇到第一个找不到 
"x_cnt" 
的文件时中断。
   字符 
"|" 分隔两条命令。后面的 "update" 
命令将那些有改动的文件存盘。如果
没有 
"x_cnt" 被改成 "x_counter"
,这个命令什么也不做。

还有一个 
":windo" 命令,用于在所有视窗内执行其参数所规定的命令。以及 
":bufdo" 
命令,对所有缓冲执行其参数所规定的命令。使用中要小心,因为你在缓冲列表中的文
件数量可能超过你能想像的。请用 
":buffers" 命令 (或 ":ls"
来检查缓冲列表。

============================================================================== 

Vim设置字体和颜色主题
今天在Windows xp下面安装了gvim,最近决定好好学习Vim所以俺在Win和Ubuntu中都安装了.
gvim安装完成后默认的字体和主题颜色用起来感觉别别扭扭的,很不舒服,所以决定将其改
的好看一点,于是到网上搜罗了一把。
1、首先更改gvim的字体
   找到安装gvim的目录,一般默认安装的目录在C:\Program Files\Vim。找到_vimrc文件,
   打开该文件在文件末尾添加如下内容:
        if has("win32")
                set guifont=Courier_New:h10:cANSI
        endif
  将字体改成Courier_New。

2、更改gvim默认颜色主题
  同样是_vimrc文件,在该文件末尾添加如下内容:
  colorscheme  slate

简单吧,呵呵。刚开始学,很多我也还是一知半解的,希望这个对刚学Vim的有所帮助吧。
 

  set encoding=gbk     -------- 如果fileencodings 全部探测不到,则以该编码替换fileencoding 存盘,内部数据编码
  set termencoding=utf-8
  set fileencoding=utf-8  ----- 以该编码格式进行文件存盘
  set fileencodings=ucs-bom,utf-8,gbk,cp936,gb18030,big5,gb2312     ----- 自动探测文件编码格式,如果符合其中一种替换到fileencoding
  set langmenu=zh_CN.gbk   ------  设置整套窗口语言环境
  language messages zh_cn.gbk    ------  设置整套菜单语言环境

VIM 查看当前文件编码  :set fileencoding

VIM 设置当前文件编码  :set fileencoding=utf-8

=============== (转)详细分析 ======================================================

很惭愧,作为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编码主要涉及三个变量。
encoding
vim的内部编码,包括内存数据的编码,vim配置文件的编码。encoding取自变量$LANG,如果$LANG为空,则取latin1。这个编码应该和你的终端编码保持一致的。
fileencoding
文件的编码。vim在加载文件的时候,会把这个编码转换成encoding参数的编码。同样的,保存文件的时候,内存的编码会由encoding转变为fileencoding。
需要注意的是,在vimrc里设置这个参数,不会起作用。因为打开一个文件的时候,fileencodings或者encoding会覆盖fileencoding。关于这个,可以看下面提到的打开文件流程。
fileencodings=utf-8,gbk,gb2312
vim在加载一个文件的时候,会依次尝试使用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才是文件的编码。
 

第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]