当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : vim常见问题问答
帖子发表于 : 2008-01-11 14:39 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
本文转自水木社区vim版:http://www2.newsmth.org/bbsdoc.php?board=VIM

对本文如有意见和建议,欢迎访问水木社区

欢迎wiki中的版本 http://wiki.ubuntu.org.cn/vimfaq

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

估计这是最难回答的一个问题了。:-)

不过首先应该确定你的VIM版本是否足够新,功能是否完整。使用:version 命令查看你的VIM版本以及功能。

* 一个常见的情况,如果你用的是RedHat系统,请确定安装了vim-enhance的rpm包,否则将是不完整的VIM。
* 如果你用的ubuntu,确保安装了 vim-full

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

代码:
 Ctrl+O (按两次)


如何复制粘贴?

复制

方法一:

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

方法二: 按v或V或Ctrl+V进入visual模式,移动光标选择一段内容,按y(若要使用系统黏贴板,按"+y)。三者的区别: v以字符为单位,V以行为单位,Ctrl+V是块选择。这个方法只在VIM下适用。

粘贴

p或P。区别:前者粘贴到光标后面,后者粘贴到光标前面。

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

一般可以用sed或者vim来做。比如要对当前目录下的*.c文件进行替换: 方法一:
代码:
 for i in *.c; do
  sed -i -e 's/oldvalue/newvalue/g' $i
 done


方法二:
代码:
 vim *.c
 :argdo %s/oldvalue/newvalue/ge | update


如何把fold一次全部打开?

zR 或者:set foldlevel=999

* 全部关上是 zM

如何选择、复制或者查找光标所在的单词?

在VIM中用iw或者aw表示一个单词,两者稍有区别。

* 选择光标所在的单词:viw (v进入visual模式,然后iw)
* 复制光标所在的单词:yiw

查找的话就是两个很常用的明令:# 和 *

如何计数搜索的字符串?

如果需要统计缓冲中一个模式(pattern)出现的频率。Vim 会报告已匹配的数目就是模式出现的次数。例:
代码:
 :%s/./&/gn characters
  :%s/\i\+/&/gn words
  :%s/^//n lines
  :%s/the/&/gn "the" anywhere
  :%s/\<the\>/&/gn "the" as a word


你可能希望复位 'hlsearch' 或者使用 ":nohlsearch"。

如何去掉高亮搜索?

方法一::nohlsearch

方法二:/awertgvcxz (查找一个肯定不存在的字符串)

设置了高亮搜索(:set hlsearch)以后,可以通过:set nohlsearch 永久地关闭高亮 显示,也可以通过:nohlsearch 暂时关闭高亮显示,下次搜索时将自动恢复高亮。

如何解决linux下gvim中文菜单乱码问题?

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


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

光source一个menu.vim或者啥也不source都是乱码

另外,也有网友报告说没有遇到此类问题

注:这里的source指的是vim自己的source命令,和bash shell的source无关

如何对所编辑的文件语法高亮显示?

需要解释的是,VI有很多变种,它本身并没有这种功能,提供这种功能往往是其各种衍生版本,比如说vim。下面就vim中如何语法高亮简单解释一下。

首先,确定一下你所用的操作系统,

* 如果是windows,那么默认的配置文件就可以工作了。如果还不行,可以用鼠标从syntax菜单下选择一下适合你的文件类型(新版本的gvim默认把文件类型选择关闭了,需要点开,然后按照开头字母选择类型)
* 如果是linux,那么确认一下是否是redhat。如果是redhat,那么需要安装vim-enhanced的rpm包。这些都做了以后,可以用:syntax on来打开语法高亮。必要时可以用:set filetype=...来设定你的文件类型。

如果使用图形界面,比如gvim,那么syntax on和set filetype的操作可以用鼠标在菜单中选择,同windows下。

如果是在控制台中使用vim,还应当确定你的终端设置支持颜色。

如何快速插入多行数字0-99?

在命令行中输入以下代码,或者先把代码保存到一个外部文件,然后source这个文件:
代码:
 let i = 0
 while i < 100
  put = i
  let i = i + 1
 endw


如果位数不足需要在前面补零,可以用Ctrl-V块选择,然后I插入0。

若经常做的话,可以用插件VisIncr
代码:
 http://www.vim.org/scripts/script.php?script_id=670


如何设置中文编码?

在.vimrc中作如下设置,可以实现界面以及显示字体采用gb2312,遇到utf8文件时自动做转换:
代码:
 set encoding=prc
 set fileencoding=prc
 set fileencodings=ucs-bom,utf8,prc


需要注意的是,按照上面的设置,如果你打开一个空的(0字节)或者是纯7bits的文件, 这时VIM将认为是utf8编码的文件,如果你往里面输入中文,存盘的时候也将是utf8。 因此你可能需要在存盘之前:set fileencoding=prc 把编码改回来。

另外,对于纯7bits的文件,由于认成了utf8,每次打开存盘的时候都要做一次转换, 会比较慢,所以如果你很长一段时间不会接触utf8的话,可能暂时把 fileencodings 一行注释掉比较好。

[警告]:转换可能会造成信息丢失!如果你需要编辑的是重要的系统文件,最好把 fileencodings 一行暂时注释掉。

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

在VIM的插入模式或者命令行中用<C-V>输入^M这样的特殊字符,例如输入
代码:
 :%s/<C-V><C-M>//g


实际显示是
代码:
 :%s/^M//g


就可以去掉文件中所有的^M。同理,要在文件中输入^M只要按<C-V><C-M>即可。

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


再从新保存该文件复盖原文件就可以去除:^M了

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

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

如何合并两行?

合并两行的键是 J 另外,如果你设置了
代码:
 set backspace=2


你就可以用backspace或者delete很方便的删到上一行或者下一行。

如何设置缩进距离(tab宽度)?
代码:
 set tabstop=8
 set shiftwidth=8


如何让VIM不生成备份文件(~文件)?
代码:
 set nobackup


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


如何让打开文件时光标自动到上次退出该文件时的光标所在位置

将下面的语句放入vimrc中,就可以了
代码:
 autocmd BufReadPost * if line("'\"") && line("'\"") <= line("$") | exe "normal `\"" | endif


若是某一次这种需要,直接运行normal命令

`"

如何让一个文件在原有的gvim中用新开的tab打开

在linux下可以这样打开
代码:
 $gvim --remote-tab-silent filename


而在windows下,DOS下也可以象上面那样打开;而若是“双击”打开方式,则可以修改注册表HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command将其键值修改为
代码:
 "C:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent "%1"


而若是用鼠标右键中的“用 vim 编辑”,先删掉注册表中的HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\gvim,然后手工添加鼠标右键菜单,两种方式:

* a. 直接进入注册表,在HKEY_CLASSES_ROOT\*\shell下添加项“用 vim 编辑”,

再在项“用 vim 编辑”下添加子项“command”,在其右边窗口把其键值设定为
代码:
 "c:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent "%1"


* b. 把下面的内容保存为文件gvim.reg,并将之导入注册表
代码:
 Windows Registry Editor Version 5.00
 [HKEY_CLASSES_ROOT\*\shell\Edit with &Vim]
 [HKEY_CLASSES_ROOT\*\shell\Edit with &Vim\command]
 @="\"c:\\Program Files\\Vim\\vim70\\gvim.exe\" -p --remote-tab-silent \"%1\""


另外,也可以添加到鼠标右键中的“发送到” 方法:进入到目录c:\Documents and Settings\用户名\SendTo下,“鼠标右键”-“新建”-“快捷方式”,然后通过对话框的“浏览”找到gvim安转位置,这样就建立gvim 的一个快捷方式,右键单击这个快捷文件-属性-快捷方式,在“目标(T)”的地址栏写入:
代码:
 "C:\Program Files\Vim\vim70\gvim.exe" -p --remote-tab-silent "%*"


注意:上面都是默认安装gvim的地址,若不是默认地址,请自行修改

为什么文件很多行仅仅在每行开头显示个"@"
代码:
 set dy=lastline


在插入模式下Backspace怎么无法删除了
代码:
 set backspace=indent,eol,start


如何选中一段文字并全文搜索这段文字?

自己做映射,如下面的:
代码:
 :vnoremap <silent> ,/ y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>
 :vnoremap <silent> ,? y?<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>


这样就可以选中文字后,按键“,/”正向搜索,按键“,?”反向搜索

(注意:按象“,/”这样的组合键时,要稍稍按快点)

如何为gvim/vim设置自己喜欢的字体?

为 gvim 选择自己喜欢的字。点“编辑”-->“选择字体”, 然后在字体列表中选择一个你喜欢的字体和字号,然后确认。也可以用如下命令直接得到字体列表
代码:
 set guifont=*


因 gvim 只能使用等宽字体, 故对话框列出的字体比你系统里安装的字体要少得多。这时可以用如下命令查询所选择的字体:
代码:
 :set guifont?


回显结果象这样子: guifont=Nimbus Mono L 14 若要设置某个字体为gvim启动后的默认字体,如上面例子,则在vimrc中如下设置
代码:
 set guifont=Nimbus\ Mono\ L\ 14


( 如果字体名称中含有空格, 需要在空格前面加上一个反斜杠) 而vim字体是由你所选择的终端所决定的,如:xterm,dos等,所以若想换console下vim的字体及字号,只能调整终端设置

如何发现/搜索非8位字符,如"“"?
代码:
 /[^\x00-\xff]


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-01-11 15:25 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
原贴是2004年的,也就是4年前

另:转载的地址不对


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-01-11 16:35 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
哦,转载地址应该没问题吧.
这是水木社区vim版置底的帖子.我给的链接是水木vim版的链接.

帖子链接是 http://www2.newsmth.org/bbscon.php?bid= ... 9&ftype=11

原贴是2004年发表的,
发表在水木社区建站前的老水木清华vim版,但本文一直在更新

引用:
发信人: thinelephant (严重消化不良), 信区: VIM
标 题: [FAQ]常见问题解答,提问先看(2007-04-24)
发信站: BBS 水木清华站 (Tue Jun 22 19:44:37 2004), 站内

q本文将根据版上的提问不断修改、补充,力图回答大多数的常见问题。欢迎大家指正或
补充(补充解答的内容,或者补充没有列出的问题)。

注:以下问题以及解答均由版上的文章归纳整理而来,部分内容为原文引用。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-03 15:35 

注册: 2008-07-03 15:28
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
很好!!!!!!!!!!!


_________________
Blog: http://tailog.com


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2008-09-26 13:43 

注册: 2008-02-20 9:43
帖子: 147
地址: Wuhan
送出感谢: 0 次
接收感谢: 0 次
顶!

正用vim。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2008-11-12 17:01 
头像

注册: 2008-07-27 8:51
帖子: 711
地址: 广西玉林|广东深圳
系统: Ubuntu/Windows
送出感谢: 1
接收感谢: 3
:em11

顶顶


页首
 用户资料  
 
7 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-03-03 19:33 
头像

注册: 2008-10-26 12:05
帖子: 62
送出感谢: 0 次
接收感谢: 0 次
我也在学习用vim,感觉比ue快,只是有定麻烦,不过用属了就好了。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-03-26 0:50 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
:em06 问下楼主,如何实现vim跨软件间文本粘贴?
比如说从别的地方复制过来一断代码,如何直接粘到VIM中>?


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
9 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-06-20 3:40 
头像

注册: 2009-05-23 20:40
帖子: 25
送出感谢: 0 次
接收感谢: 0 次
jioyo源 写道:
:em06 问下楼主,如何实现vim跨软件间文本粘贴?
比如说从别的地方复制过来一断代码,如何直接粘到VIM中>?


复制以后依次按下
"+p
就是按三下 :em06 :em06


_________________
过把瘾...


页首
 用户资料  
 
10 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-09-04 17:29 

注册: 2007-10-31 10:46
帖子: 112
送出感谢: 0 次
接收感谢: 0 次
傀儡熊 写道:
jioyo源 写道:
:em06 问下楼主,如何实现vim跨软件间文本粘贴?
比如说从别的地方复制过来一断代码,如何直接粘到VIM中>?


复制以后依次按下
"+p
就是按三下 :em06 :em06



vim --version里
如果 是-clipboard就不行了

必须是+clipboard才行

不然还是无法访问系统粘贴板
安装 vim-full


页首
 用户资料  
 
11 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-09-04 17:38 
头像

注册: 2009-02-23 21:58
帖子: 308
送出感谢: 0 次
接收感谢: 0 次
好东西 :em01 :em01


_________________
选择之前,选择最重要;选择之后,坚持最重要!!!
只有偏执狂才能成功!!!


页首
 用户资料  
 
12 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-09-09 19:59 

注册: 2008-01-01 19:50
帖子: 20
送出感谢: 0 次
接收感谢: 0 次
学了几点。
:em04


页首
 用户资料  
 
13 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-10-24 23:13 
头像

注册: 2009-09-07 13:24
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
顶一下


页首
 用户资料  
 
14 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2009-10-24 23:24 
头像

注册: 2009-07-08 17:33
帖子: 264
送出感谢: 0 次
接收感谢: 2
再顶一下,正在学


页首
 用户资料  
 
15 楼 
 文章标题 : Re: vim常见问题问答
帖子发表于 : 2010-02-07 1:33 
头像

注册: 2007-07-17 22:52
帖子: 661
地址: cn,shandong
送出感谢: 0 次
接收感谢: 0 次
顶贴,同时提醒下楼主,好像9.1后源中没有VIM-FULL啦!我选择安装vimg-nome后一些功能正常,但竟没有SCHEME!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 23 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译