adermxl的专栏

微博 http://weibo.com/123964163 http://t.qq.com/X-L2008

Vim+命令

Vim 中的内部命令与 vi 编辑器中的内部命令类似。表 1 提供了 Vim 中的光标移动命令。
表 1. 用于移动光标的 Vim 命令

命令 动作
h 将光标向左移动
j、加号 (+)、Enter 或 Return 将光标向下移动
k、减号 (-) 将光标向上移动
l 将光标向右移动
} 将光标移动到当前段落的末尾
{ 将光标移动到当前段落的开头
) 将光标移动到当前句子的末尾
( 将光标移动到当前句子的开头
^ 移动到当前行的第一个非空字符
$ 移动到当前行末尾
0 (zero) 移动到当前行开头
w or W 移动到下一单词的开头
b or B 移动到上一单词的开头
e 移动到下一单词的末尾
H 移动到屏幕的第一行
M 移动到屏幕的中间一行
L 移动到屏幕的最后一行
G 移动到文件末尾
gg 移动到文件开头
:n 移动到行 n

表 2 显示了用于删除文本的 Vim 命令。


表 2. 用于删除文本的 Vim 命令
命令 动作
d 删除选中的区域
dd 删除整个当前行
10dd 删除从当前行开始的 10 行,
dw 从当前位置向前删除单词
db 从当前光标位置左边开始向后删除单词
dl 删除当前光标位置的字符
dh 删除当前光标位置左边的字符
d0 (zero) 删除当前光标位置到行开头之间的单词
D | d$ 删除从当前光标位置开始的整个行
x 删除光标当前位置的字符
X 删除光标当前位置之前的字符

表 3 提供了其他几个有用的 Vim 命令。


表 3. 常用 Vim 命令
命令 动作
ih 进入插入模式并在当前光标处插入
I 进入插入模式并在当前行的开始处插入
a 进入插入模式并追加到光标后面
A 进入插入模式并追加到当前行末尾
c 更改选中的区域
C 更改从光标当前位置开始的整个行
o 在光标当前所在行下方创建一个新空行,并将光标移动到这一新空行的开头
O 在光标当前所在行的上方创建一个新空行,并将光标移动到这一新空行的开头
r 替换光标当前位置的单个字符
R 替换从光标当前位置开始的多个字符,并在退出插入模式时结束
<Esc> 退出插入或可视模式
> or <Tab> 向选中区域右边缩进
< 向选中区域左边缩进
v 启动时突出显示字符
V 启动时突出显示的整个行
yy 将当前行移动/复制到内存
10yy 将从当前行开始的 10 行移动/复制到内存
p 粘贴复制或剪切的文本;如果字符被复制(yw dw 或 D),就在光标当前位置之后粘贴这些字符。如果复制的是行,就在光标当前所在的行下面粘贴这些行
P 作用和 p 一样,但是它在光标当前位置的前面粘贴字符,在光标当前所在行上面粘贴行
u 撤消最后的更改
<Ctrl> R 重做
/<pattern> 搜索已找到的下一个模式,并将光标放在已找到的模式的开头
?<pattern> 搜索已找到的上一个模式,并将光标放在已找到的模式的开头
n 重复上一次的搜索
N 重复上一次的搜索,但搜索的方向相反
!<cmd> 在 Vim 会话外执行 <cmd>




回页首


行模式

尽管广泛使用的是命令和插入模式,但行模式同样重要,只是有时候没有被充分理解和使用。行模式进入行编辑器,使您可以在一行或多行上处理命令。考虑到 vi 以 ex 编辑器命名,所以它只适合进入 ex 编辑器的行模式。

要从命令模式进入行模式,输入冒号(:)即可。然后将光标移动到窗口左下角。继续输入时,所有文本都会出现在窗口底部的冒号后面。单击 Enter,开始计算和执行行模式命令。如果确定不执行在行模式下输入的行,则单击 Escape 返回到命令模式。

使用编辑器的行模式时,请记住两种命令样式。首先,在输入命令时,vi 或 Vim 按原样执行命令。如果执行的命令与修改数据有关,当前行就是目标。但是,使用第二种方法可以提供行数以处理指定的行。要输入行,请在冒号后面输入要处理的行数或行范围,并用逗号(,)分隔开始和结束范围。

例如,如果只处理行 23,那么命令以 :23 开始。如果要修改 2319 到 3819 之间的行,则输入 :2319,3819。要处理从行 45 开始到文件结尾之间的一个命令,需要将最后行的参数替换为美元符号($)— 即 :45,$

以下命令只是可以在行模式下执行的最基本命令:

  • :w <file name>将文件写入磁盘。如果提供一个参数,编辑器会试图将数据写入 <file name>。

    注意:如果提供一个参数,而且存在 <file name>,编辑器不会覆盖现有文件的数据。

  • :w! <file name>将文件写入磁盘并覆盖文件中的所有数据。
  • :<x>,<y> w <file name>将从 <x> 到 <y> 之间的行写入 <file name>。
  • :q试图在不保存的情况下退出编辑器。

    注意:如果数据已修改,则需要先保存文件再退出编辑器,否则将导致文件未被保存。

  • :q!退出编辑器,不将文件写入磁盘。
  • :n如果编辑多个文件,首先编辑编辑列表中的下一个文件。
  • :e <file name>编辑 <file name>。
  • :e#如果编辑两个文件,则在两个文件之间切换。
  • :s/<str1>/<str2>/用当前行中的 <str2> 替换第一次出现的 <str1>。
  • :1,$ s/<str1>/<str2>/g从行 1 开始,在整个文件中执行,用 <str2> 替换所有的 <str1>。
  • :r <file name>将 <file name> 读入当前编辑器会话中。
  • :<x>,<y> d删除从 <x> 到 <y> 之间的行。
  • :<x>,<y> y复制从 <x> 到 <y> 之间的行。
按v进入visual状态,选择多行,用>或<缩进或缩出 
通常根据语言特征使用自动缩进排版:在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format。使用gg=G可对整篇代码进行排版。



在WORD间移动

除了word之外,Vim还有一种概念WORD。虽然这只是大小写的不同,但是他们却代表了两种不同的事物。word是指由iskeyword选项定义的字符串;而WORD则是指用空白符分隔的字符串。与WORD相关的一些命令如下:

[count]B   向后移动count个WORDS
[count]E   向前移动count个WORDS,并且将光标置于WORD的末尾.
[count]gE   向后移动count个WORDS,并且将光标置于WORD的末尾.
[count]W   向前移动count个OWRDS.

命令小结
w 向前移动一个word
e
b 向后移动一个word
set iskeyword 定义word选项
W 向前移动一个WORD
E
B 向后移动一个WORD


非正常关闭vi编辑器时会生成一个.swp文件

关于swp文件
使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么一个.(filename)swp文件 以备不测(不测下面讨论),如果你正常退出,那么这个这个swp文件将会自动删除 。下面说不测。
不测分为:1当你用多个程序编辑同一个文件时。
         2非常规退出时。
第一种情况的话,为了避免同一个文件产生两个不同的版本(vim中的原话),还是建议选择readonly为好。
第二种情况的话,你可以用vim -r filename恢复,然后再把swp文件删除(这个时候要确保你的swp文件没有用处了,要不然你会伤心的)

swp文件的来历,当你强行关闭vi时,比如电源突然断掉或者你使用了Ctrl+ZZ,vi自动生成一个.swp文件,下次你再编辑时,就会出现一些提示。

你可以使用

vi -r {your file name}

来恢复文件,然后用下面的命令删除swp文件,不然每一次编辑时总是有这个提示。

rm .{your file name}.swp

在网上搜到了一个类似的提示,不同的linux提示可能不一样

“.xorg.conf.swp” already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit:

当然可以用R键恢复。

vi编辑器要正常退出可以使用Shift-ZZ 。

如果不想每次vi崩溃时不保存swp文件,可以修改文件,




阅读更多
个人分类: Unix+学习
想对作者说点什么? 我来说一句

Viatc 5.2 VIM的TC软件

2012年11月21日 527KB 下载

vim+命令大全

2011年11月17日 180KB 下载

vim+命令大全(for vim7)

2011年06月25日 156KB 下载

vim+破解方法

2012年07月11日 975KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭