VIM使用入门(汇集)

转自PHPCHINA

在linux下使用VIM进行编程是一件很自然的事情
刚开始时我也对VI超多的指令和完全的放弃鼠标感到不适!
但经过了初期的适应性阶段,我终于放发现,原来放弃了鼠标却也提高了效率!
废话少说,进入正题:
``(TAB上边的点):回到光标跳转前的位置。
dd:删除一行。
5dd:删除光标处以下的五行。
按V键进入可视模式,选择要拷贝的内容,按yy拷贝选中的内容,在需要的地方按p拷贝内容到新光标处或新文件中。
i:进入插入模式。
v:进入可视模式。
Esc:回到基本模式
h,j,k,l:上下左右移动光标
vsp:左右分割窗口。
sp:上下分割窗口。
ctrl+w:在窗口中选择。
:q!:不保存退出。
x:保存退出。
w:只保存不退出。
x:删除一个字符。
u:撤消
CTRL+O:回跳。
CTRL+R:撤消刚才的撤消。
:help:帮助。
zz:退出帮助窗口。
3w :向前移动三个单词。
3b:向后移动三个单词。
CTRL+[:跳到光标单词处。
CTRL+T:跳回。
9k:上移九行。
:e 打开新文件(在多窗口操作中很有用)。
yaw:拷贝一个单词。
CTRL+B:把光标移到当前行的左边首部。
CTRL+E:把光标移到当前行的右边首部。
vim -r doc.txt:恢复文件到修改前。
:/查找单词
H:跳到第一行。
M:跳到中间。
L:跳到最后一行。
CTRL+d,u,f,b:下移半屏,上移半屏,下移一屏,上移一屏。
gg:到文件开始处
G:到文件尾部。
--:找到文件上次修改点。
CTRL+p,n:向上查询一个单词,向下查询一个单词。
zo:打开折叠。l键也可以。
zc:关闭折叠。
zr:全部打开折叠。
zm:全部关闭折叠。
zf:创建折叠。
zR:打开所有折叠(包括嵌套)
zM:关闭所有折叠(包括嵌套)
:!ls,查看目录表。
:`o,找到最后修改的文件。
wq,保存退出。
vim txt1 txt2 txt3 txt4,同时打开多个文件,
以下是同时打开多个文件时(建议用多窗口)
n,下一个文件,
n3,往下第三个文件。
first,第一个文件。
last,最后一个文件 。
:/s#kkk#ccc#g,把文件中的kkk替换为ccc

0. 序言

编程人员花费最长时间的开发工具可能就是编辑器了,一个非常方便、高效的编辑器对开发人员来说是非常有效的。在unix/linux下,甚至windows下,vim都可以说是个非常优秀的编辑器。虽然许多朋友开发过程中都在使用vim,但通常只使用了vim非常有限的功能,没有接触到vim的很多非常符合开发人员需求的功能。下面就从开发人员的角度出发,介绍开发过程经常使用到的功能。读完本文,您会发现vim原来是如此强大的集成开发环境。

Vim是基于GPL的开源项目,是对vi的提升版本,而vi是unix环境下最通用的编辑器。不过由于vim的强大的功能,许多最新发布的linux版本中已经把vim作为默认vi编辑器了。如果您的系统中没有安装vim,可以从vim.sourceforge.net上下载合适的版本。闲话少提,下面从基本编辑命令、通用编辑命令、开发常用命令等方面介绍vim。本文以介绍功能为主,使用细节多尝试一下就明白了。以下讨论基于vim 6.2。

在vim中,使用 :new创建新窗口。

1.基本编辑命令

本节简单分类基本的vim编辑命令,只给出简单的功能说明,作为使用vim的命令速查,详细描述请查看vim的在线帮助。Vim下输入:h <命令>即可。下面的命令是在常态模式下(就是任何状态下多按几次ESC键后到达的状态,为了避免概念模糊,这里对这些状态不进行描述)输入的字符序列。


命令


含义


命令


含义


移动


h

j

k

l


左下上右(和方向键相同含义)


H

M

L


同一页(屏幕)内的第一行、中间行、

最后一行


ctrl+f

ctrl+b


下一页

上一页


ctrl+d

ctrl+u


下半页

上半页


b

w

e


前一个单词首

后一个单词首

后一个单词尾


0

^

$


行首

行首的非空字符

行尾


输入


a

A


当前字符后输入

行尾输入


i

I


当前字符前输入

行前输入


o

O


当前行下插入新行输入

当前行上插入新行输入


:r [filename]


当前行下插入文件[filename]的内容


改变


d[范围]


删除范围内的文字,如:dw(删除到词尾)d$(删除到行尾)


c[范围]


改变,删除指定范围后直接进入编辑状态


~[范围]


改变当前字符或者范围内的大小写


J


连接当前行和下一行


r[char]


替换字符,使用随后输入的字符替换当前字符


R


进入替换模式,输入的字符替换文本的文字


y[范围]


拷贝范围内的文字


p


粘贴到当前字符后


x


删除当前字符


.


重复最后一条改变文本内容的命令


查找


f[char]

F[char]


行内向后查找字符[char]

行内向前查找字符[char]


t[char]

T[char]


行内向后查找字符[char]前

行内向前查找字符[char]前


/[string]

?[string]


向下查找[string]

向上查找[string]

查找后使用n继续查找,使用N向相反方向继续查找


*

#


向下查找光标当前单词

向上查找光标当前单词


n

N


重复最后一次/ ? 命令

相反方向重复最后一次/ ? 命令


其他


:e filename


关闭当前文件,编辑文件


:w filename


写入文件中


ctrl+g

:g


显示文件信息


:help [cmd]


查看vim的命令cmd的帮助信息


:u


undo一个改变


:red


重做undo的改变


U


undo当前行所有的改变

注:

[范围] 是界定上个动作的范围,vim里面称为motion。上面的改变类命令都属于motion命令,意思是指移动了光标位置。


命令


含义


命令


含义


0


到行第一个字符


^


到行第一个非空字符


$


到行最后一个字符


[n]k

[n]j


向上几行

向下几行


[n]w


删除n个单词

上面的分类是个人为便于记忆进行分类,没有特定标准或已有规则。

2. 通用命令

2.1. 搜索

搜索应该说是开发过程中非常常用的命令。最常见的搜索命令是 /  和 ? ,后面加需搜索的词句或者正则表达式(简单的介绍见下面一小结)。然后使用 n 或者 N 找下一个或者上一个搜索结果。

开发过程中最可能的情况是看到一个词希望能够找到它,这时候 * (向下搜索当前词)和 #(向上搜索当前词)命令就非常方便。如果想搜索包含当前词的词都可以可以使用 g* 或者 g# 命令。

找到变量的定义,可以使用gd(当前词的局部变量定义)和gD(当前词的全局变量定义)命令,这两个命令不一定非常准确,但有时候还是比较有用的。

当前词的宏定义,可以使用 [_ctrl-d 找到当前词第一个出现在#define 后的位置。而 [d 显示当前文件和包含文件中当前词的第一个宏定义, [D 列出所有的宏定义。 ] 开始的命令是从当前位置开始搜索。

在当前文件和包含头文件中进行搜索,搜索宏定义可以使用上面说的命令,函数、变量等的声明、引用的搜索,可以使用 [i (从文件头开始搜索包含当前词的位置)命令, [I 列出所有的行。 ] 开始的命令是从当前位置开始搜索。Vim的命令还是比较有一致性的。跳到出现的位置则使用 [_ctrl-i (从第一行开始),或者 ]_ctrl_i (从当前位置开始)。

多文件的搜索可以通过外部命令 :grep 来实现,缺省情况和使用grep命令非常类似,查找出来的列表,可以使用Quickfix类命令来在列表中循环访问,通过此类命令也可以在多个grep命令列表中进行跳转,此类命令初始为编译出错时设计的,在3.4节介绍相关命令时详细描述。

替换命令格式比较长,但有时候又非常有用,必须理解它每一个细节才能保障灵活使用。命令格式如下:

:[range]s[ubstitute]/{pattern}/{string}/[][c][e][g][p][r][i][I] [count]

这个命令的含义就是在range的范围内,查找pattern定义的模式替换为string。

Range的定义可以参考:help range,通常可以指定行数,标记,甚至指定一个搜索也可以,例如:

3,.+1             从3行到当前行的后一行

‘t,$-2            从标记t到文章尾后两行

%                 全部文章,相当于.,$

.,/{pattern}/   从当前行到下一个匹配pattern的行

pattern和上面介绍的搜索模式一样可以是一个字符串或者是正则表达式。

String通常可以是字符串,其他特殊内容可以参考:help sub-replace-special 。

最后的标记的含义如下:

保持上个替换命令的标记

c    每次替换进行确认

g    对每行所有匹配的模式进行替换,缺省一行只替换一次

i     忽略大小写

I     不忽略大小写

2.2. 正则表达式

使用正则表达式极大的增强了搜索、替换的描述能力,但这也增加了学习的难度。这里把开发过程中可能使用的标记简单的罗列一下,然后举几个例子,大家应该可以举一反三,大致知道如何使用了。匹配模式的学习可以参考:help pattern 。


命令


含义


命令


含义


ordinary atom


^

\_^


匹配行首,必须在pattern开始

任何地方匹配行首


$

\_$


匹配行尾,必须在pattern最后

任何地方匹配行尾


.

\_.


匹配任意字符,不能在行尾

任意地方匹配字符


\<

\>


词首

词尾


multi items


*


0或多个


\+


1或多个


\?


0或1个


\{n,m}


n到m个,尽量匹配多数个


\{-n,m}


n到m个,尽量匹配少数个


character classes


\s

\S


空白字符<space> <TAB>

非空白字符


\d

\D


数字

非数字


\x

\X


十六进制数字

非十六进制数字


\a

\A


字母a-zA-Z


\w

\W


词字符包括字母、数字和下划线


\h

\H


首字符包括字母和下划线


其他


\e

\t

\r

\b

\n


<ESC>

<TAB>

<CR>

<BS>

<NewLine>


\c

\C


忽略大小写

匹配大小写

这样c语言的标志符就可以使用 \<\h\w* 来匹配;

\<ca\w*5       匹配以ca为词开始中间包含5的任意词;

2.3. 多窗口

开发过程中有时候需要打开多个文件或者看一个文件的不同部分,这种情况就是多窗口的功用做在。

打开一个新窗口使用 :split [filename] 命令,加文件名打开的窗口编辑此文件,否则编辑当前文件。

关闭当前窗口使用 :q 即可。

Ctrl-w j 下一个窗口

Ctrl-w k 上一个窗口

ctrl-w = 所有窗口等高、宽

ctrl-w + 增加当前窗口高度

ctrl-w – 减少当前窗口高度

不同的文件在内存中的数据是一个buffer,一个buffer可以有1个或多个window,甚至没有window。在多个文件间跳转(后面介绍)时,通常文件所在buffer仍然在内存。可以使用 :buffers 列出当前内存中所有buffer。

使用:bn (下一个buffer)和 :bp (上一个buffer)在buffer间循环。

2.4. 可视模式

图形界面使用太多了,可能觉得使用命令界定范围不直观,可视模式则允许可视的选择一块文本,然后输入相关命令对其进行操作。其使用过程是移动到块开始字符,输入命令进入可视模式;使用各种移动命令移动到块尾;输入相关命令对此块内容进行操作。

v           进入字符选择可视模式

V           进入行选择可视模式

Ctrl-v    进入块选择可视模式

2.5. 标记(mark)

对某行做一个标记有时候是非常有用的功能。以后可以方便的移动到此行,在motion中也可以引用这个位置。

设置标记使用 m{a-zA-Z} 设置一个标记,名字是后面跟的字符,一个文件内可以定义a-z共26个标记,文件间可以定义一个A-Z共26个标记。

移动到标记行,使用 ‘[char] 或者 `[char] 命令移动到[char]对应的标记。

2.6. 文件恢复

敲半天的东西不能因为断电丢失了。Vim缺省输入200个字符或者空闲4秒就自动保存在.swp文件中。

通常的恢复步骤是,移动到文件所在目录下;使用vim –r [filename] 恢复filename文件,如果编辑的文件没有保存使用 vim –r “” 即可;把恢复的文件另存为另一个文件,使用diff程序(可以使用vimdiff)查看是否正确恢复。如果不记得文件名,使用 vim –r 列出所有交换文件。

3. 开发常用命令

3.1. tag

有tag后能够非常方便的在多个源代码文件中进行跳转,这个特性非常方便浏览、阅读代码。

C/C++源程序可以使用 ctags -R *.c *.cpp 产生tag文件,ctag已经包含在最新的vim发布版本中。有了tag文件,就可以方便的跳转了。

使用vim –t [tagname] 启动vim可以直接打开相应的文件,并定位到tagname的位置。在vim里使用命令 :tag [tagname] 可以跳转到tagname的定义,tagname可以使用正则表达式来进行模糊匹配。

使用ctrl-] 可以直接跳动到当前词的定义,如果当前词不是tag,使用右边的第一个tagname。这个跳动过程组成tag堆栈,沿堆栈跳回的命令是 ctrl-t ,沿堆栈上下移动的命令是 :tn (老的项),:tp (新的项)。列出tag堆栈使用 :tags 。

3.2. 预览窗口

调用函数时,通常非常需要查看函数的参数,使用tag技术和预览窗口可以方便的实现这个功能。

命令 :ptag [tagname] 在预览窗口显示跳转到tagname定义。当前词作为tagname,可以直接输入 ctrl-w } ,在预览窗口查看当前词的定义。

关闭预览窗口使用 :pclose 命令。

在预览窗口打开一个文件,使用 :pedit [filename] 命令。在当前文件和包含文件中搜索某个词,并显示到预览窗口中,可以使用 :psearch [name]。通常使用这个命令搜索函数原型。

3.2. 移动

vim缺省非常好的支持多种缩进方式。调整缩进可以使用 < (向左缩进)或者 >(向右缩进),前面可以加范围,或者后面加motion。

使用 ={motion} 命令对一块文字进行自动缩进。

找到对应的{}、[]、(),有时候比较麻烦,使用 % 命令可以非常方便找到对应的符号,除了上面的几组符号,还可以是 /* */ 或者 #if #ifdef #else #elif #endif 等。

代码块通常是由{}包括的,在各个代码块之间移动是非常方便的。 [{ 移动到光标所在块首, ]} 移动到所在块尾。使用命令 [[ 跳转到最外层的{,]] 跳转到最外层的},最外层通常是C/C++程序的函数边界。第二层的{使用 [m 命令,第二层的}使用 ]m 命令,通常java程序第二层才是函数的边界。

在文件内或者文件间跳转,有时候需要返回上次光标所在位置。可以使用ctrl-o 命令跳转到以前的位置,ctrl-i 命令跳转到新的位置。使用命令 :jumps 列出所有跳转列表。这些跳转命令包括跳转到标记、跳转到tag、搜索、替换、%、多于一行或一列的移动等。

3.3. 帮助

编写程序时,经常需要使用 man [section] funcname 来查看某个系统函数的帮助,在vim中使用 [section] K 命令直接查看当前词的manpage。

如果确实需要执行shell命令,可以在不离开vim环境和当前终端的情况下,使用 :!<cmd> 来执行一个shell命令,要获得一个shell,可以使用 :shell 。

3.4. 编译

说vim可以是集成开发环境,就是它可以方便的实现编辑-编译-编辑的循环。如果你的程序有makefile,使用 :make 命令来进行编译,而且更方便的是vim可以识别编译输出的错误,并定位到相应的位置。命令 :cc [num] 显示第num个完整的错误消息。

在错误列表中移动,可以使用 :cn (下一个错误)和 :cp (上一个错误)。列出整个错误列表使用命令 :clist 。

Vim保存多个错误列表,老的错误列表使用 :colder ,新的错误列表使用 :cnewer 。

这些命令被称为QuickFix命令,上面介绍的grep命令也使用这些命令。

4. 参考资料

1. vim homepage http://vim.sourceforge.net/

2. vim 文档主页http://vimdoc.sourceforge.net/

3. vim 使用手册,也是vim的在线帮助文档,非常全面。http://vimdoc.sourceforge.net/dion/vimum.html

4. vim的书,讲的非常详细。http://www.truth.sk/vim/vimbook-OPL.pdf

5. 关于作者

mounton @ www.ihere.org 当前关注于网络安全产品的开发、研究;软件开发过程等方面。您可以通过mount0n@yahoo.com和他联系。

本文来自:http://doc.linuxpk.com/80508.html


来自:http://doc.linuxpk.com/80507.html


联系:linuxmine#gmail.com


分类:[vi]

-

用editplus时,用“另存为...”保存文件时,可以手工选择编码类型:ANSI、Unicode、UTF-8等。在用VIM时如何设置文件 的编码类型呢。在vim中,缺省情况下都会按ANSI方式保存,有时我们用vim编写一些jsp文件时,一不小心,就容易犯错误了,因为在我们的开发团队 中,是统一使用utf-8编码的,如果用ansi方式保存了,在网页的显示时就会出现乱码问题。

所以如果不清楚自己的缺省编码设置,可以手工输入设置命令:

:set fileencoding=utf-8

然后再保存就行了:

:w

这样无论之前的编码是什么,都会转换成utf-8保存。

如果希望缺省保存方式就是utf-8,就需要在_vimrc中加入以下设置:

set encoding=utf-8

set fileencoding=utf-8

set fileencodings=ucs-bom,utf-8,chinese

把这三行放在_vimrc的最开始的位置比较好。

取消高亮:

:set nohls

本文来自:http://doc.linuxpk.com/80507.html

原文地址:https://www.cnblogs.com/lcinx/p/10568830.html

时间: 2024-10-19 08:09:05

VIM使用入门(汇集)的相关文章

vim+makefile入门编辑,编译,差错实例

vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打开vim,找到对应行修改,感觉是不是很烦很NC.其实vim自带的Quickfix列表就能帮助我们无需退出vim,即可进行编译代码,浏览错误信息. 简单单个文件的调试,只需增添环境变量makeprg即可. 编写一个简单的命名为hi.c的如下程序: #include<stdio.h> int main

转:vim快速入门

vim快速入门 2007-07-09 20:19:13|  分类: Linux|举报|字号 订阅 vim有三种模式-普通(可视命令)模式,命令行模式,编辑模式.启动vim后在任何模式下按Esc键进入到普通模式.普通模式下输入:回车进入命令行模式,此时vim最窗口最下面一行为:   后面可以输入命令行命令.在执行任何命令前要确保在相应的模式下. 1.启动与退出 1)vi filename   (启动vim) 2)命令行模式下 :wq=> 保存并退出,:q!=>强行退出,:e!=>放弃修改文

vim使用入门的连接网站

谁说Vim不是IDE?(二)(三) http://www.cnblogs.com/chijianqiang/archive/2012/10/31/vim-2.html Vim新手入门资料和一些Vim实用小技巧http://www.cnblogs.com/Jack47/p/vim-resources-and-tips.html Centos 下安装与设置VIM编辑器http://blog.csdn.net/houqd2012/article/details/8111738 Manage Vim P

Vim 从入门到精通

Vim from zero to hero - Vim 从入门到精通 原文地址:https://github.com/mhinz/vim-galore 原文作者:Marco Hinz 简介 什么是 Vim? Vim 哲学 入门 精简的 vimrc 我正在使用什么样的 Vim 备忘录 基础 缓冲区,窗口,标签 已激活.已载入.已列出.已命名的缓冲区 参数列表 按键映射 映射前置键 寄存器 范围 标注 补全 动作,操作符,文本对象 自动命令 变更历史,跳转历史 内容变更历史记录 全局位置信息表,局部

vim高级入门功能

2.1 多文件编辑 2.1.1 使用vim编辑多个文件 编辑多个文件有两种形式,一种是在进入vim前使用的参数就是多个文件.另一种就是进入vim后再编辑其他的文件. 同时创建两个新文件并编辑 vim   1.txt  2.txt 默认进入1.txt文件的编辑界面 命令行模式下输入:n编辑2.txt文件,可以加!即:n!强制切换,之前一个文件的输入没有保存,仅仅切换到另一个文件 命令行模式下输入:N编辑1.txt文件,可以加!即:N!强制切换,之前文件内的输入没有保存,仅仅是切换到另一个文件 2.

vim快速入门

vim模式介绍 vim的3种模式介绍 vim存在三种工作模式,分别是命令模式,插入模式和底行模式. 命令模式:输入vim命令后启动vim默认进入命令模式,此时所有键部是功能键. 插入模式:命令模式下按“i”就可以进入插入模式,这时就像记事本一样编辑文本了. 底行模式:在命令模式下输入“:”进入底行模式,可以用以保存文件.退出vim以及设置环境执行编译命令等. 3种模式的切换 vim启动进入命令模式 处于插入模式或底行模式时只需按“Esc”退出键即可进入命令模式. 命令模式中按“i”(插入)或“a

关于vim的入门使用

vim normal .:重复上一条命令 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 ^:跳到目前行第一个非空白字符 h :光标左移一个字符 l :光标右移一个字符 j:光标下移一个字符 k:光标上移一个字符 K:help i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 s:删除当前字符,变为插入模式 cc或C或S:删除当前行,变为插入模式 ~:翻转大小写 gg:到文件首 G:到文件尾 gUU:当前行转化为大写 g

vim编辑器入门

一  vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成)或者鼠标输入.Vim和vi一样,仅仅通过键盘来在这些模式之中切换.这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作.对文字录入员或者程序员可以大大增强速度和效率.

装逼神器vim的入门学习

命令vim可以启动vim编辑器 一般情况下我们通过vim 目标文件路径 的形式来使用vim 如果目标文件存在,则用vim打开该文件 如果目标文件不存在则新建并打开文件 vim拥有三种模式: 1.命令模式 ESC 2.插入模式 i 3.ex模式 : vim启动后,默认进入命令模式,任何的模式通过按Esc都可以回到命令模式.命令模式的常用命令如下: i 在光标前插入文本 o 在当前行下面插入新的一行 (转变成了插入模式) dd 删除整行 yy 将当前行的内容放入缓存区(复制) n + yy 将从该行