Vim Tips(转帖)

(1) 为什么别人的方法在我这里行不通?
(2) 如何找到上次编辑的文件?
(3) 如何复制粘贴?
(4) 如何在多个文件中进行替换?
(5) 如何把fold一次全部打开?
(6) 如何选择、复制或者查找光标所在的单词?
(7) 如何计数搜索的字符串?
(8) 如何去掉高亮搜索?
(9) 如何解决linux下gvim中文菜单乱码的问题?
(10) 如何对所编辑的文件语法高亮显示?
(11) 如何快速插入多行数字0-99?
(12) 如何设置中文编码?
(13) 如何去掉或者插入^M这样的字符?
(14) 如何整体缩进一段代码(插入tab)?
(15) 如何合并两行?
(16) 如何设置缩进距离(tab宽度)?
(17) 如何让VIM不生成备份文件(~文件)?
(18) 如何设置windows下gvim的字体?
(19) 如何设置Vim的colorscheme

(1) 为什么别人的方法在我这里行不通?

估计这是最难回答的一个问题了。:-)
不过首先应该确定你的VIM版本是否足够新,功能是否完整。使用 :version 命令查看你的VIM版本以及功能。一个常见的情况,如果你用的是RedHat系统,请确定安装了vim-enhance的rpm包,否则将是不完整的VIM。

(2) 如何找到上次编辑的文件?

Ctrl+O (按两次)

(3) 如何复制粘贴?

复制
方法一:先ma标记当前位置为a,移动到新的位置,再y`a或者y'a复制从标记位置a到当前位置的内容。`和'的区别:`以字符为单位,'以行为单位。这个方法应该是所有vi都适用的

方法二:按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y。三者的区别:v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。粘贴p或P。区别:前者粘贴到光标后面,后者粘贴到光标前面。

(4) 如何在多个文件中进行替换?

一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换:
方法一:
for i in *.c; do
sed -i -e 's/oldvalue/newvalue/g' $i
done
方法二:
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中文菜单乱码问题?

以vim6.3为例
:source $VIMRUNTIME/delmenu.vim
:source $VIMRUNTIME/menu.vim

也可以将以上内容加入.vimrc

光source一个menu.vim或者啥也不source都是乱码
注:这里的source指的是vim自己的source命令,和bash shell的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 = 0
while i < 100
put = i
let i = i + 1
endw
如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0。

(12) 如何设置中文编码?

在.vimrc中作如下设置,可以实现界面以及显示字体采用gb2312,遇到utf8文件时自动做转换:
set encoding=prc
set fileencoding=prc
set fileencodings=utf8,prc
需要注意的是,按照上面的设置,如果你打开一个空的(0字节)或者是纯7bits的文件,这时VIM将认为是utf8编码的文件,如果你往里面输入中文,存盘的时候也将是utf8。因此你可能需要在存盘之前 :set fileencoding=prc 把编码改回来。另外,对于纯7bits的文件,由于认成了utf8,每次打开存盘的时候都要做一次转换,会比较慢,所以如果你很长一段时间不会接触utf8的话,可能暂时把 fileencodings一行注释掉比较好。
[警告]:转换可能会造成信息丢失!如果你需要编辑的是重要的系统文件,最好把fileencodings 一行暂时注释掉。

(13) 如何去掉或者插入^M这样的字符?

在VIM的插入模式或者命令行中用输入^M这样的特殊字符,例如输入
:s///g
实际显示是
:s/^M//g
就可以去掉文件中所有的^M。同理,要在文件中输入^M只要按即可。

这个问题往往发生在WINDOWS/DOS系统和UNIX系统之间交换文件时,因为这两类系统对于文本的“换行”概念解释不同。所以,还有一个解决方法就是对这类文本进行转换。vim内部就可以做这件事情。首先打开文本,然后
set fileformat=unix再从新保存该文件覆盖原文件就可以去除:^M了

(14) 如何整体缩进一段代码(插入tab)?

选中一段代码,< 或 > 或 2< 或 3> ……

(15) 如何合并两行?

合并两行的键是 J
另外,如果你设置了
set backspace=2
你就可以用backspace或者delete很方便的删到上一行或者下一行。

(16) 如何设置缩进距离(tab宽度)?

set tabstop=8
set shiftwidth=8

(17) 如何让VIM不生成备份文件(~文件)?

set nobackup
更多细节请看 :help backup。另外,也可以不关掉backup而是设置backupdir将备份文件统一存放到一个目录下,比如
set backupdir=C:\Program\ Files\Vim\tmp

(18) 如何设置windows下gvim的字体?

:set guifont=* 出选择字体对话框,
选好了后, 再 :set guifont? 看,最后把guifont的设置写进vimrc就行了。

(18) 如何设置vim的colorscheme

:colorscheme 然后tab选取,最后把中意的scheme写进.vimrc文件。colorscheme的.vim文件在$vim$/colors/文件夹里面,可以在www.vim.org

下载各种colorscheme。

Monthly Archives

Pages

Powered by Movable Type 7.7.2

About this Entry

This page contains a single entry by Cnangel published on April 22, 2006 1:42 PM.

电影分级 was the previous entry in this blog.

关于找不到服务器的问题 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.