Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50329
  • 博文数量: 5
  • 博客积分: 83
  • 博客等级: 民兵
  • 技术积分: 91
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-03 10:07
文章分类

全部博文(5)

文章存档

2013年(1)

2012年(4)

我的朋友

分类: LINUX

2012-05-03 10:39:56

1.获取帮助

 WHAT PREPEND    EXAMPLE ~

      Normal mode command      (nothing)   :help x

      Visual mode command  v_   :help v_u

      Insert mode command  i_   :help i_

      Command-line command  :   :help :quit

      Command-line editing  c_   :help c_

      Vim command argument  -   :help -r

      Option  '   :help 'textwidth'

      查看错误信息 (nothing)  :help E37

 

2.命令

 

编辑命令:      

a 添加字符

A 从行尾添加字符

             i(Insert)       插入

I 从行第一个字符开始插入

x(效仿打字机) 删除一个字符

d(delete) 删除

dd 删除一整行

J 删除回行符(合并两行) 合行后中间加一个空格

gJ 删除回行符,合行后首尾空格不去除

u(undo) 撤销上一步操作

U(undo) 撤销一整行操作(此操作算为一次操作,可用u撤销)

Ctrl+R(redo) 从做撤销的操作

i 在当前位置插入

o 在光标的下面插入新行

O 在光标的上面插入新行

r 替换光标下的字符,加上计数器表示连续替换多个字符为一个字符

R 替换整行字符

. 重复上一次更改

p 粘贴默认寄存器中的内容,可用计数器

y 复制选中内容到默认寄存器

~ 切换当前字母大小写

g~ 切换字母大小写

gU 将字母切换成大写

gu 将字母切换成小写

g~~ g~g~ 切换整行字母大小写

gUU gUgU

guu gugu

> 在visual模式下将选中的内容右移,前面填充空格

< 在visual模式下将选中的内容左移,前面的空格删除

:{range}read patch 在当前行的下面插入文件patch中的内容,如果指定了range 则插入到range中最后的一行下面,这里的range可以用特殊的行号0

:{range}read !{command} 将命令的输出插入到文件中

gq 格式化所选文本

 

:[range]m[ove] {address} 把选中的文本移动到address下面

:[range]co[py] {address} 把选中的文本复制到address下面

 

 

等价的:

x=dl

X=dh

D=d$

C=c$

s=cl

S=cc

 

位移命令:

  在普通模式下 hjkl 代表 左下上右

w 往后跳一个单词,光标停在第一个字母上

b 往前挑一个单词,光标停在第一个字母上

e 往后跳一个单词,光标停在最后一个字母上

ge 往前跳一个单词,光标停在最后一个字母上

$ 跳到行尾,可用计数器向下跳多行

0 跳到行首算上空白

^ 跳到行尾不算上空白,加上计数器没有效果

f 向后查找字符,用计数器表示查找到第几个匹配字符

F 向前查找字符,用计数器表示查找到第几个匹配字符

t

T

; 跳到下一个匹配的字符

, 跳到上一个匹配的字符

% 匹配括号 前面加数字表示跳转到文件的百分比

G   前面加数字跳转到明确的行,不加数字表示跳转到文件的最后一行

gg 跳到文件的第一行

H(Home) 跳到屏幕的最上方一行

M(Middle) 跳到屏幕的中间一行

L(Last) 跳到屏幕的最下面一行

CTRL-U(up) 将屏幕向上滚动半个屏幕的文本

CTRL-D(down) 将屏幕向下滚动半个屏幕的文本

CTRL-E 将文字向上提一行

CTRL-Y 将文字向下拉一行

CTRL-F 将屏幕向下滚动一屏

CTRL-B           将屏幕向上滚动一屏

CTRL-]   跳转到标签内部 

CTRL-T   跳转到父标签

  CTRL-O     跳转到更老的jump点 

  CTRL-I     跳转到更新的jump点,与功能相同

` 跳转到某标签的光标位置

' 跳转到某标签的行首

 

文本对象:(很像计数器+位移命令)

a     包括前后空格

       i                不包括前后空格

w 单词

s 句子

p 段落

 

 

其他命令:

------------------多文件-------------------------

vim one.c two.c three.c   通过VIM同时编辑三个文件

:next  编辑下一个文件  可以用计数器 :2next

:wnext  保存并编辑下一个文件

:args  显示打开VIM时编辑的文件列表

:previous  编辑上一个文件 可以用计数器

:wprevious  保存并编辑上一个文件

:first  编辑第一个文件(没有w版本)

:last  编辑最后一个文件(没有w版本)

:args *.txt  从新编辑文件列表,未保存文件将提示,可以用通配符,可以用强制符

-------------------多窗口----------------------------------

vim -o one.txt two.txt 水平多个窗口打开多个文件

vim -O one.txt two.txt   垂直多个窗口打开多个文件

:all 为列表中的文件各开一个窗口(可vertical)

:split 上下分割当前窗口,在上面打开新窗口

:vsplit 左右分割窗体,在左边打开新窗口

:split two.c 在新窗口编辑文件

:3split alpha.c 设定新窗口的高度

:new 创建新窗口创建新文件在当前窗口上面

:vnew 创建新窗口创建新文件在当前窗口左面

:vertical new 等同于vnew

:vertical 加在任何分割窗口的命令前面,使其垂直分割

CTRL-W w 窗口切换

CTRL-W CTRL-W 和CTRL+W w一样

:close 关闭窗口

:only 关闭其他所有窗口

CTRL-W + 增大窗口,可以用计数器

CTRL-W - 减小窗口,可以用计数器

15CTRL-W _ 指定当前窗口高度为15

CTRL-W _ 最大化当前窗口

CTRL-W h move to the window on the left

CTRL-W j move to the window below

CTRL-W k move to the window above

CTRL-W l move to the window on the right

CTRL-W t move to the TOP window

CTRL-W b move to the BOTTOM window

CTRL-W H move window to the far left

CTRL-W J move window to the bottom

CTRL-W K move window to the top

CTRL-W L move window to the far right

:qall 退出所有窗口

:wall 存储所有文件

:wqall 存储并退出所有文件

:qall! 放弃存储退出所有文件

------------------------文件对比--------------------------

vimdiff a.c b.c 对比两个文件的差别

zc 关闭折叠

zo 打开折叠

-----------------------tab栏------------------------------

gT 反向的gT

:tab split 通过一个新tab打开当前文件

:tab help

:tabonly 除了当前的tab其它的都关闭

-----------------------GUI选项----------------------------

:set guioptions 设置GUI的选项 T代表toolsbar l代表左滚动条

:behave xterm 把鼠标设置成Xterm模式

:behave mswin 把鼠标设置成mswin模式

 

'mouse' in which mode the mouse is used by Vim

'mousemodel' what effect a mouse click has

'mousetime' time between clicks for a double-click

'mousehide' hide the mouse while typing

'selectmode' whether the mouse starts Visual or Select mode

:set selectmode+=mouse 通过鼠标选择文本进入选择模式,选择模式下输入字符会使用新字符替换之前选中的字符。

-------------------------其它的---------------------------

:{range}write>>logfile 将当前内容追加到指定文件中

:{range}write 保存,后面加路径为另存为

:{range}write {command} 将当前文件保存到command中表示把当前文件作为被调用命令的参数 如 :write !wc 返回当前文件的字符数

:w :write的缩写

:edit(e) 打开,编辑

ZZ         保存并退出

zz   将光标所在行移至窗口中间

:q   退出

vim -R file 用只读模式打开file unix中view file等效,通过w!可以强制存盘

vim -M file 用只读模式打开file 通过 :set modifiable :set write 可以去除这种保护

vim -r file 用swp文件恢复当前打开文件,恢复一个还没有命名保存的文件时用 vim -r "" ,其中file可以是被恢复的原文件,也可以是用于恢复的交换文件(VIM会根据交换文件自动找到原文件)

vim -r 列出当前可用的所有交换文件,然后选择用哪个恢复

:recover 用交换文件恢复当前文件

:set shortmess 选择关闭信息提示功能

:saveas move.s 将当前文件另存为move.s

:file move.c 将当前文件重命名为move.c

{command}!   强制符

!{motion}{program} 执行外部程序 输入完!{motion}部分后命令会自动跳转到命令行部分,会通过motion部分的内用调用program然后用返回结果覆盖调motion选择的部分 例如:!5Gsort

!! 在当前行执行程序 相当于 :.!

:jumps 列出跳转记录

:marks 列出所有标签

:reg 查看寄存器内的内容

    取消命令

CTRL-G     显示行数等信息 

m 创建标签,用a-z 是局域标签,A-Z是全局标签

v 进入visual模式

V 进入visual模式,以行为对象

CTRL-V 进入visual模式,以矩形为对象

o 在以矩形为单位的visual模式时 光标对角切换

O 在以矩形为单位的visual模式时 光标平角切换

"{a-Z,+,*等} 选择寄存器复制/剪切/粘贴 大写字母表示追加

'" 跳到上次退出此文件时的位置

'. 跳到最后编辑此文件的位置

:TOhtml 把当前文件转化成HTML格式

:source $VIMRUNTIME/syntax/2html.vim  把2html.vim转化成HTML显示在屏幕上 

g Ctrl-G 统计字数,可以在visual模式下选择要统计的字符

---------------------------------------------------------------

 

3.配置与设置

在布尔型参数前加no表示关闭选项

配置项支持-= 和 +=

拷贝默认的配置文件:      :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc

VIM的默认安装路径:/usr/share/vim

VIM的默认配置文件路径: ~/.vim/

VIM的默认插件文件路径: ~/.vim/plugin/

VIM的默认文件类型配置文件路径: ~/.vim/ftplugin/

VIM的默认文档安装路径: ~/.vim/doc

文件类型配置文件多文件的配置方式:

ftplugin/.vim

ftplugin/_.vim

ftplugin//.vim

mkdir $VIM/vimfiles/ftplugin/fortran

$VIM/vimfiles/ftplugin/fortran/too.vim

  高亮字体设置的路径:$VIMRUNTIME/syntax

配色方案的路径:$VIMRUNTIME/colors   ~/.vim/colors

 

生成帮助文件的tags:               :helptags ~/.vim/doc

查看本地添加的所有帮助文件:  :help local-additions

 

打开配置文件 :edit $MYVIMRC

查看版本和一些文件配置信息        :version

把所有选项摄制成默认              :set all&

查看所有和默认不一样的设置        :set

打开设置窗口  :options

 

配置命令:

在所有配置项后面添加&表示设置为默认值

:set showmode                       显示当前的模式

:set compatible?                       查看当前是否为兼容模式

:set number                       显示行号

:set ruler                       在屏幕右下角显示光标位置

:set ignorecase                        搜索乎略大小写

        :set hlsearch                       设置搜索结果高亮

:nohlsearch       关闭当前搜索结果的高亮

:set incsearch                       (incomplete)在输入单词的同时显示搜索结果

:set wrapscan                       搜索到文件底部的时候从文件的开头继续搜索反之亦然

:set wrap       是否自动换行

:set whichwrap       设置那些命令可以跨行b是backspace s是Space 具体查看'whichwrap'

:set sidescroll       设置左右自动滚动的触发字符数

:set scrolloff       设置上下自动滚动的触发行数

:set compatible                        是否与vi兼容

:set backspace=indent,eol,start        设置在Insert模式下backspace键可以删除 行前的自动缩进,回行,和进入插入模式时光标之前的字符

:set autoindent                        自动缩进(在Insert中回车或者在正常模式下o)

:set backup       覆盖一个文件时备份它

:set history       设置命令和搜索的历史记录数量

:set showcmd       在右下角显示按键命令

:set list       制表符高亮

:set listchars=tab:>-,trail:-       设置制表符的替换字符串

:set iskeyword       设置关键字的组成字母@表示a-Z

:set cmdheight       设置命令区高度

:map Q gq       设置映射

:map i{ea}       映射F5的功能为给一个单词加{}

:set shiftwidth       设置左右移动的距离

:set joinspaces       设置合行后的空格数

:set textwidth       设置文本的宽度

:set updatetime       设置多长时间没有编辑文件就自动存盘,毫秒为单位

:set updatecount       设置输入多少字符后自动存盘

:set directory       设置查看在哪里存储交换文件

:set autowrite       自动存盘,此存盘是在必要时刻自动存储不像word那样隔几分钟存一次

 

配置文件中的特殊用法:

autocmd 自动执行命令

autocmd FileType text setlocal textwidth=78 设置 文本文件 文本宽度为78

手动设置文件的高亮配置文件:

在文件开头或者结尾写入  # vim: syntax=make

在VIM中执行shell的时候可以配置shell备置列表如下:

'shell' specifies the program that Vim uses to execute external programs.

'shellcmdflag' argument to pass a command to the shell

'shellquote' quote to be used around the command

'shellxquote' quote to be used around the command and redirection

'shelltype' kind of shell (only for the Amiga)

'shellslash' use forward slashes in the command (only for MS-Windows and alikes)

'shellredir' string used to write the command output into a file

 

 

 

4.搜索

搜索支持正则表达式

 

/ 向后搜索

? 向前所搜

n 下一个匹配项

N 上一个匹配项

* 从上向下搜索单词

# 从下向上搜索单词

搜索单词: //  这样指定了单词的开始和结尾

 

5.常用套路技巧:

套路:

x delete character under the cursor (short for "dl")

X delete character before the cursor (short for "dh")

D delete from cursor to end of line (short for "d$")

dw delete from cursor to next start of word

db delete from cursor to previous start of word

diw delete word under the cursor (excluding white space)

daw delete word under the cursor (including white space)

dG delete until the end of the file

dgg delete until the start of the file

 

技巧:

'* 是选区寄存器(用鼠标中键)  '+ 是粘贴寄存器(一般是菜单里的复制粘贴选项)

Insert模式和Replace模式可以用Insert键切换

将Doe,John 替换成 John Doe 用如下方法: 

:%s//([^,]*/),/(.*/)//2 /1/        其中/1 表示正则表达式中第一个匹配部分,整句的匹配部分用 /0表示

反序排列的方法:

首先到要反序的第一行,用mt标注当前位置,然后到要替换的反序的最后一行,输入命令:'t+1,.g/^/m 't 可以用.范围(global默认是%)然后编辑反射这样就可以挑出想要的内容,还可以不确定范围用0代替 't将对整个文件进行反序

挑选文本的方法:

:map :.g/^/co 'p :normal 需要首先用mp定义p的位置

 

6.配色方案:

命令:

:syntax on       打开语法高亮

:syntax clear       清楚当前的语法高亮

:syntax off       关闭语法高亮

:syntax manual       将高亮模式设置为手动

:set syntax=ON       设置以上选项后,用这个命令开启语法高亮

:filetype on       打开文件类型检测

:set filetype       设置当前文件类型

:plugin on       使用文件类型插件

:indent on       打开文件类型自动缩进

        :set background       手动配置背景色(VIM一般会自动推断终端的背景色) 此命令必须放置在 :syntax enable 前 否则不起作用

:syntax reset       vim重新设置默认颜色

:runtime syntax/colortest.vim       查看配色方案的实例

:colorscheme       选择配色方案

:colorscheme mine       一直使用自己的配色方案

CTRL-L       重绘VIM的屏幕

 

 

配色方案文件中的关键字及作用:

配色方案的路径:$VIMRUNTIME/colors   ~/.vim/colors

term attributes in a B&W terminal

cterm attributes in a color terminal

ctermfg foreground color in a color terminal

ctermbg background color in a color terminal

gui attributes in the GUI

guifg foreground color in the GUI

guibg background color in the GUI

 

可以这样设置:highlight Comment ctermfg=green guifg=green

 

 

 

7.命令记录与回放

q{a-z} 用于开始记录宏,放在寄存器里面的命令可以当成文本粘贴出来,大写字母表示追加

q 结束宏

@{a-z} 执行宏

@@ 用上一次执行宏的寄存器执行宏

 

8.搜索替换

:[range]substitute/from/to/[flags] 搜索替换的格式 substitute缩写为s,=和+也可以用于分隔符

[range] 默认为当前行

[flags] 默认指替换第一个

g(gloabl) 替换范围内全局

p(print) 显示替换的最后一行

e 告诉VIM未找到匹配时不要报错

c(confirm) 每次替换要求用户确认

y Yes; make this change.

n No; skip this match.

a All; make this change and all remaining ones without further confirmation.

q Quit; don't make any more changes.

l Last; make this change and then quit.

CTRL-E Scroll the text one line up.

CTRL-Y Scroll the text one line down.

9.全局命令

:[range]global/{pattern}/{command} 全局命令的一般形式,其中global可以缩写成g,command必须是:命令,正常模式下的命令可以通过 :normal实现

 

 

10.命令范围

任何命令都可以有一个范围

{number} number是行号,指定一行

{number},{number} 指定多行,包含指定的两行,这里的number可以是一个搜索模式, ?abc?  表示向上搜索abc /abc/ 表示向下搜索abc ,当开始行大于结束行的时候它会问你是否交换两个参数,可以在任何number后面添加偏移量,例如: .+1,$-3  或者 ?a?+1,/b/-1等等,还可以在visual模式下选择范围当按下:时会出现 :'<,'> 这时的作用范围即是选区开始的字符到选区结束的字符,要注意的是即使是CTRL-V进入的块选区也是以行为基本单位

. 光标的当前行

1 第一行

$ 最后一行

% 相当于 1,$

'a-z' number还可以用mark表示

`< 上一个选区开始的位置

`> 上一个选区结束的位置

'< 上一个选区开始的行

'> 上一个选区结束的行

5: 就是在:前面加计数器将会在命令栏打开 :.,.+4 可以用任意的计数器

 

 

*.需要注意的:

1. d2e 和 d2w 的区别

2. cw 和 ce 的结果一样,都是c2e的结果

3. ^命令加上计数器没有效果

4. Y和yy 的结果一样,都是yy的结果,如果想用Y的效果只能y$了

  5. vnoremap _g y:exe "grep /" . escape(@", '///') . "/ *.c *.h" 这句没看懂      05.2* The example vimrc file explained

6. autocmd BufReadPost *

   / if line("'/"") > 1 && line("'/"") <= line("$") |

   /   exe "normal! g`/"" |

   / endif

没看懂 05.2* The example vimrc file explained

7. 关于自定义高亮 查看 mysyntaxfile     和  syntax

8. 关于自定义文件类型 查看    new-filetype|


阅读(1974) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Emacs实现C++ 语法高亮、自动补全、各种跳转

给主人留下些什么吧!~~