VIM第七版

ZZ:退出并保存

e!:退回到上次保存时的样子

cw:修改单词(自动进入插入模式)

cc:修改一整行的内容

cs:修改一个词(自动进入插入模式)

.:可以重复上一个命令

J:将下一行内容合并到本行末尾,自动添加空格。

EX命令

 

 

EX命令的逻辑是 将命令作用与指定的地址,有些命令只有源地址参数,而有些命令则由目的地址参数。

 

EX命令:

      d:删除行

m:移动行(有目的地址)

t/co:复制行(有目的地址)

p:打印行

nu:显示行号

w:保存行

#:显示行号

EX定位行的方法

绝对方式: a.   "."表示当前行,为默认值,如果没有显示指定则为默认行(相当于有一个".")

b.   "$"最后一行

c.   "0"第一行之前

d.   "num"第num行

e.   /pattern/模式匹配出现的第一次所在行

相对方式:a. [一个绝对行号]+[num]   如果没有”绝对行号“则相对于当前行, 如果没有num则为1 ,绝对行后面的第num行

b.  [一个绝对行号]-[num]   如果没有”绝对行号“则相对于当前行, 如果没有num则为1 ,绝对行前面的第num行

相对地址和绝对地址组合构成各式各样的地址和地址范围

  例如命令:

     :1,20 s/awk/sed/g

     :/^luo/,/^lcm/s/awk/sed/g  将"luo"开头的行到"lcm"开头的行中的所有行做替换操作

     :g/^luo/s/awk/sed/g   将所有以luo开始的行执行替换操作

:=  ->列出总行数

:.=  ->列出当前行

:/pattern/=  ->列出第一次匹配的行号

有些时候,希望后续地址是针对前序匹配的地址进行偏移,则使用分号表示地址分隔符,例如:

(当前光标在120行) 则    100,+20   表示的是100,140行的范围

而 100+20则表示100,120的访问

g表示 定位范围内的所有匹配的 ,g!相反 。如果没有g则表示是第一次出现。

可以用‘|’合并多个命令,后续命令作用在前序命名的结果之上。

":x"与":wq"命令的差别,前者只有文件有改变是才写人,而后者无条件写人。

:w file_name  -> saveas file_name ->另存为

:范围 w file_name  -> 将范围内的内容保存到新文件

:w >> file_name   ->将当前文件内容追加到新文件中

:地址 r file_name  ->将文件读到当前文件的地址之下

操作多个文件

在命令行加多个文件名作为参数,打开多个文件,视图位于第一个文件,

使用命令“:ar[gs]”可以查看打开的文件列表,由"[]"包括的文件名,是真正编辑的文件。

通过:n,ctrl+^切换文件。

“rew"切换到第一个文件

”last“切换到最后一个文件。

:e! ->加载最后一次保存的文件

%:代表当前的文件名称

#:代表候补的文件名称

用":e"命令加载新文件时,不会清除命名缓冲区的内容。

:ya ->将内容拖入缓冲

:pu ->将内容从缓冲复制到文件。

:g/pattern/s/old/new/g:在满足模式的行做替换操作(第一个g表示作用于所有模式匹配的行,第二个g表示作用于匹配行里面的所有匹配old的地方)。

:g/pattern/s//new/g将匹配的行的内容替换成new  s后面的“//"表示之前匹配的内容

替换串(new) 中的特殊字符含义

\n: 代表捕获

&:代表匹配的串

~:代表上一次替换时,用来替换的串

\u:将后接的字符变成大写

\U:将后接的字符串变成大写

\l:将后接的字符变成小写

\L:将后接的字符串变成小写

&:重复上一次执行的替换操作

选项设置

1.vi首先从terminfo数据库读取当前终端的配置信息

2.vi 打开之前首先执行环境变量EXINIT中的命令,然后是家目录的".exrc"文件中的命令。

3.":set"命令支持两类选项设置

a.    :set option   /    set nooption (打开或关闭某个选项)

b.    :set option=数字或字符串

4.":set all"显示所有选项的当前设置值

":set"显示特殊设置值

":set option?"查看某个选项当前的设置值。

.exrc文件

1.在.exrc中的命令不需要加前导":"号。

2.要使本地.exrc文件生效,需要在家目录的.exrc中设置命令"set exrc"

3.可以将命令写入其他任何文件,然后用命令":so 文件名"将该文件的设置在vi中生效。

使用unix命令

1.  :!:产生一个子sh后面跟命令

2.  :sh 打开一个shell连续执行命令,ctrl+d返回vim

3.  :[linenum]r !command 将命令结果插入到 linenum下
4.  :[linenum]r file 将文件内容读入到linenum下

//将文件中的内容作为命令的输入,命令输出将覆盖文件当前的内容

5.  :[linenum1,linenum2] !cmd

6. vi的方式 不用冒号 [replay times]![文本行范围定位命令]  unix命令

7.在vi中可以设置缩写(在插入模式输入缩写,在按下非字母键时会补全)

:ab 查看当前定义的所有缩写

:ab lcm luo cai min   //将"luo cai min"设置成缩写串 lcm

:unab lcm 取消缩写

8.设置命令缩写

:map shortcmd  cmd cmd cmd //在命令里面出现的功能键需要先按ctrl+v再输入

map rd          :r !date +‘\%Y\%m\%d‘<CR>^ywI/* luocaimin delete begin <Esc>A */<CR>#if 0<CR>#else<CR>#endif<CR><Esc>pI/* luocaimin delete end <Esc>A */<CR>

map ra          :r !date +‘\%Y\%m\%d‘<CR>^ywI/* luocaimin add begin <Esc>A */<CR><Esc>pI/* luocaimin add end <Esc>A */<CR>

map rae           :r !date +‘\%Y\%m\%d‘<CR>I/* luocaimin add end <Esc>A */<CR>
map rab           :r !date +‘\%Y\%m\%d‘<CR>I/* luocaimin add begin <Esc>A */<CR>
map ra          :r !date +‘\%Y\%m\%d‘<CR>^ywI/* luocaimin add begin <Esc>A */<CR><Esc>pI/* luocaimin add end <Esc>A */<CR>
map rd          :r !date +‘\%Y\%m\%d‘<CR>^ywI/* luocaimin delete begin <Esc>A */<CR>#if 0<CR>#else<CR>#endif<CR><Esc>pI/* luocaimin delete end <Esc>A */<CR>

"求当前行代表的公式之和

map lsum  yyp:.!bc<CR>I<C-H>i=<Esc>

在单词末尾进入插入模式  :map e ea

对调两个单词                  :map K dwwp

保存一个文件并进入下一个文件   :map q :w^M:n^M

注释代码    :map rmk I/* ^[A */^[

9.需要在插入模式中将某个插入值作为命令则需要在map后面加上!

eg:xml tag自动补全

:map! >  >^[F<lyf>f>a<\^[p

10. 在编辑模式输入命令串,然后读入命令缓存(通过删除的方式" "gdd "将命令读入命名缓存区g),通过“@命名缓存”来执行命令。“@”会解释为vi命令

“@@”或“."都可以用来重复命令。

11.自动缩排 :  ":set autoindent" 的作用是让新行与上一行有相同的缩进。

在自动缩排下输入代码时(插入模式),在行头"ctrl t"将执行下一层缩排,"ctrl d"相反。

"5<<"将包括当前行在内的以下5行向左缩进8个字符的位置 "5>>"相反

:set tabstop=4  设置tab的宽度为4个字符

12: ":set list"显示整个文件的隐藏字符。  ":l"显示当前行的隐藏字符

13:"%"如果没有在括号字符‘{([])}‘上,会移到本行的向前找到的第一个括号上。

14:  ":set showmatch"在输入括号时会高亮显示其匹配的括号。

15:ctags

15.1 ctags -R 从当前目录迭代搜索源文件,并建立tags文件。

15.2 ":set tags=tags文件" 指定tags文件

15.3  ":tag  GET_BALANCE" 查找并跳转到GET_BALANCE所在文件和位置 ,":stag tagname"用横屏分页的方式显示符号

15.4  将光标位于符号之上,ctrl+] 跳转到符号所在文件和位置  , ctrl+w+]  用横屏分页的方式显示符号

15.5   ctrl+t 返回到跳转之前的位置

15.6 ":stag[!] tagname" 新窗口打开标签

16: ‘*‘高亮显示光标下的单词并进入搜索模式,‘#‘高亮显示光标下的单词,并进入反向搜索模式。

17: ‘viw‘可视模式下选中一个单词

18.自动添加tag(当文件有变化时自动更新tags文件)

autocmd BufWritePost *.cpp,*.c,*.h :!cur_dir=`pwd` && cd ~ && ctags -a %:p && cd -

注  %:p表示带路径的当前文件名

19. 在可视模式下的选中区

19.1  "niw":选中光标下及后面的n个单词,标点号和空字符都算一个单词

19.2  "niW":选中光标下及后面的n个单词,空格算一个单词

19.3  "naw":选中光标下及后面的n个单词,标点算一个单词,空格算分隔符

19.4  "naW":选中光标下及后面的n个单词,标点不算一个单词,空格算分隔符

19.5  "as","is":选中一句话

19.6  "ap","ip": 选择一段话。

vi -o[n] file1 file2

set laststatus=n

set winheight=n

set winwidth=n

ctrl+w+s/v

ctrl+w+h/j/k/l/t/b

ctrl+w+q

ctrl+w+c

:split otherfile

:vsplit otherfile

:new

:[N]sp[lit] ++opt +cmd other

 

缓冲区

ls:列出缓冲区

ls!:列出包括“非列出缓冲区”的缓冲区

列出的缓冲区信息

缓冲区命令

:windo cmd   在当前可见页的所有窗口中执行命令cmd,如果cmd报错,则停留在报错窗口

:bufdo[!] cmd 在所有缓冲中(包括所有可见和不可见窗口)执行命令cmd,如果cmd报错,则停留在报错窗口

标签:

:tabnew  filename

:tabclose/tabc

:tabonly

:tabn

:tabp

:tabd[o]

VIM脚本

所有命令和选项都是脚本的有效输入

标准流控制(if...then....else,while)

具有函数变量等

变量的作用域与变量的名称有关系

根据时间设置配色方案的例子

let curhour = strftime("%H")
echo "curhour is ".curhour
if curhour < 6
     let colshm="darkblue"
elseif curhour < 12
     let colshm="morning"
elseif curhour < 18
     let colshm="shine"
else
     let colshm="evening"
endif
echo "setting color scheme to ".colshm
execute "colorscheme ".colshm (colshm是字符串和下面的直接命令选项不同,命令和命令选项可以直接执行,命令和字符串不可直接执行,需要使用execute命令将命令本身识别为字符串,然后在和后续字符串组成命令加选项的字符串执行)

"let curhour = strftime("%H")
"echo "curhour is ".curhour
"if curhour < 6
"     let colshm="darkblue"
"elseif curhour < 12
"     let colshm="morning"
"elseif curhour < 18
"     colorscheme shine
"     echo "setting color scheme to shine"
"else
"     let colshm="evening"
"endif

定义函数

定义函数:vim使用function  funcname(param1,param2,...)...endfunction定义函数(函数名称必须以大写字符开头)

调用函数:call funcname(param1,param2,...)

statusline可以自定义,在statusline发生变化时会重写,所以可以利用这一点,执行需要频繁检查的操作。

重复检查

let g:colorname = "xyzzy"
"根据时间设置配色方案
function Settimeofcolor()
     let curhour = strftime("%H")
     echo "curhour is ".curhour
     if curhour < 6
          let colshm="darkblue"
     elseif curhour < 12
          let colshm="morning"
     elseif curhour < 18
          let colshm="shine"
     else
          let colshm="evening"
     endif
     if g:colorname !~ colshm
          echo "setting color scheme to ".colshm
          execute "colorscheme ".colshm
     endif
endfunction

打开文件后

set statusline+=\%{Settimeofcolor()}

全局数组定义

let g:onearray=["itme1","item2","item3"]

最终版本

let g:colorname = "xyzzy"
let g:colorarray=["darkblue","morning","shine","evening"]
"根据时间设置配色方案
function Settimeofcolor()
     let curhour = strftime("%H")
     echo "curhour is ".curhour
     let colshm=g:colorarray[curhour/6]
     if g:colorname !~ colshm
          echo "setting color scheme to ".colshm
          execute "colorscheme ".colshm
     endif
endfunction

VIM自动命令

自动命令格式

"&vim选项":取vim选项的值 eg: &filetype

"exists(变量名或函数名)":检查变量或函数是否已经定义

eg:

if exists("b:iscount")==0

"如果没有定义变量b:iscount则定义并赋值

let b:iscount=0

endif

文件类型自动检测脚本

"定义新自动命令组

augroup newFileDetection
autocmd CursorMovedI * call CheckFileType()  "为组添加自动命令
augroup END

function CheckFileType()
if exists("b:countCheck") == 0
let b:countCheck = 0
endifh
let b:countCheck += 1
" Don‘t start detecting until approx. 20 chars.
if &filetype == "" && b:countCheck > 20 && b:countCheck < 200
filetype detect
" If we’ve exceeded the count threshold (200), OR a filetype has been detected
" delete the autocmd!

elseif b:countCheck >= 200 || &filetype != ""

”如果不需要自动命令,则通过取消组的自动命令来消除其对性能的影响
autocmd! newFileDetection
endif
endfunction

"      删除组 augroup! newFileDetection

function SetCppPreSet()                        
        set cindent                            
        set foldmethod=syntax                          
        set foldlevel=10

set foldcolumn=6

syntax enable

syntax on

set ai         
endfunction                                    
                                               
autocmd BufReadPost *.cpp,*.h call SetCppPreSet()

保存编辑会话  ":mksession sessionfile_name"

载入会话:":source sessionfile_name"

程序员扩展功能

折叠

‘:mkview‘: 在创建了很多折叠的后,保存折叠

‘:loadview‘: 加载保存的折叠

文件比较

vimdiff file1 file2

撤销与重做

"U",撤销

"ctrl+R"重做  //set undolevels=n 设置可以重做的深度

在命令模式下(":") ctrl+f,打开历史命令窗口,查找和执行历史命令。

时间: 2024-10-06 14:00:41

VIM第七版的相关文章

一般的linux系统默认安装的vim是精简版

一般的linux系统默认安装的vim是精简版(vim-tiny),所以不能配置语法检查等属性或获取在线帮助.需要安装vim-x:x.x.x,vim-common,vim-runtime. :syntax on 启动语法检查 或 :set syntax=sh :set hlsearch 搜索高亮 :set tabstop=4 tab为多少个空格 :set autoindent 自动缩进,即与上一行对其 可以将这些配置放在~/.vimrc中,不带冒号,一行一个命令.

《高等数学第七版》《线性代数(第六版)》《概率论与数理统计(浙大四版)》全套考研教材及解析PDF

资源链接:https://pan.baidu.com/s/1bxEFcGAqAx2iBA9dxKyr5Q考研数学全套基础教材及习题全解数学备考建议:推荐直接看<张宇36讲>,然后结合基础教材<概率论与数理统计(浙大四版)><同济高等数学第七版>以及<同济线性代数(第六版)>进行理解.看张宇的视频是必不可少的,近三年的均可,因为基础内容是一样的.王式安的红皮复习全书可读性有点差,李正元的复习全书又太难,不适合备考.所以极力推荐大家跟着张宇老师一起复习,更多资料

解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6

前言 大家好.这是开通本号的第一篇文章.从事IT行业已经20年了,从使用PowerBuilder做企业信息系统开始,做了七八年开发,然后转型Java不是很成功,从07年之后,我转做产品经理,机缘巧合,在2012年之后,又接触到.Net编程,在2016年正式回归到开发的行列,整整10年.最近几年,在技术上要补以前落下的课,所以变化很快,进步也很快,16年基于DevExpress做Winform开发,17年转到基于asp.net mvc做web开发,再转java web开发,又转Andriod Ja

解读经典《C#高级编程》第七版 Page45-50.核心C#.Chapter2

前言 本篇讲述枚举和名称空间. 01 枚举 首先需要明确枚举的概念:枚举是用户定义的整数类型.使用枚举的目标是,使用一组容易记忆的名称,来使得代码更容易编写和维护. 我们对比枚举的定义和类的定义,会发现它们有像的地方,有不像的地方,这不同之处体现了枚举的特性.我们按下图举例: C#中,一般习惯于一个文件定义一个类.而一个项目中可能有大量枚举,一般建议将多个枚举定义在一个文件中. 很多书中对于枚举只有一个称谓"枚举",但是,如上图,到底是OrgType1是枚举,还是Vendor是枚举?实

解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2

前言 本篇讲述Main方法,控制台,注释,预处理指令,编程规范等.这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明. 01 Main方法 Main方法并不是所有应用类型的入口方法,它只是控制台程序.Winform程序的入口方法. 创建项目时自动生成的Main方法,其修饰符是未指定的(未指定时默认为private),这说明入口方法并不要求public修饰符. 可以为应用程序指定多个Main方法,但编译时你必须显式的告诉编译器以哪个方法作为入口,否则编译会报错.所谓显式的告诉编译器,就是

《计算机网络(第七版)谢希仁著》PDF高清版,计算机考研推荐

<计算机网络(第七版)谢希仁著> 链接: https://pan.baidu.com/s/1vKLoNwiziDQwO0V-aGVQfA 提取码: imwy ? ? 内容简介  · · · · · · 本书自1989年首次出版以来,曾于1994年.1999年.2003年.2008年和2013年分别出了修订版.在2006年本书通过了教育部的评审,被纳入普通高等教育“十一五”国家级规划教材:2008年出版的第5版获得了教育部2009年精品教材称号.2013年出版的第6版是“十二五”普通高等教育本科

高等数学同济第七版课后答案下册

下载地址: 链接:https://pan.baidu.com/s/185C8RB4Y9pYO84V4Rup1Wg提取码:p7o4 如果链接失效扫一扫右侧,回复 高等数学答案 即可免费获取 百度文库所有文档原格式下载方法  回复 文库免费下载 高等数学同济第七版课后答案上册 原文地址:https://www.cnblogs.com/need/p/11494994.html

高等数学同济第七版课后答案上册

高等数学同济第七版课后答案上册 下载地址: 链接:https://pan.baidu.com/s/185C8RB4Y9pYO84V4Rup1Wg提取码:p7o4 如果链接失效扫一扫右侧,回复 高等数学答案 即可免费获取 百度文库所有文档原格式下载方法  回复 文库免费下载 高等数学同济第七版课后答案下册 原文地址:https://www.cnblogs.com/need/p/11491277.html

高等数学课后答案下册同济大学第七版

下载地址: 链接:https://pan.baidu.com/s/185C8RB4Y9pYO84V4Rup1Wg提取码:p7o4 如果链接失效扫一扫右侧,回复 高等数学答案 即可免费获取 百度文库所有文档原格式下载方法  回复 文库免费下载 高等数学同济第七版课后答案上册 转载自:https://www.cnblogs.com/need/p/11494994.html 原文地址:https://www.cnblogs.com/xnsx/p/11525010.html