admin 管理员组文章数量: 887021
VIM已经用了很长一段时间了,作为一个强大的编辑器,学会容易精通难,最近抽空拜读了一下《学习VI和VIM编辑器(第7版)》第一部分和第二部分,随手做了点笔记写在下面备查。
vi和vim总结(《学习VI和VIM编辑器第7版中文》第一部分、第二部分)
(command)(number)(text object)
(number)(text object)(command)
i\c\d\y是常用Command number是可选
1.进入输入状态
当前位置插入 i
后面位置插入 a
本行开始插入 I
本行末插入 A
上一行插入 O
下一行插入 o
插入#个重复字符X #(i/a/o/I/A/O)X-ESC
替换#个重复字符X #rX-ESC
进入覆盖模式 R
覆盖输入指定范围 c (cw c#w c0 c$ cb c#b cc=S)
覆盖输入几个字符 s
覆盖当前字符 r
替换当前单词 cw
替换当前#个单词 c#w
删除当前字符 x
删除#字符 #x
删除当前单词或其局部 dw de dE db
删除当前行或其局部 dd d0 d$=D
删除#行 d#d #dd
大小写更换当前字符 ~
将下一行与当前行合并 J
将下(#-1)行与当前行合并 #J
2.移动光标
左右上下一个字符 h l k j
左右上下#个字符 #h #l #k #j
当前行开始字符 ^
跳转到行首 0
当前行行尾 $
下一个词 w W(不算标点符号)
下#个词 #w #W
上一个词 b B(不算标点符号)
上#个词 #b #B(不算标点符号)
显示文件行数等信息 Ctrl-G
跳转到#行 #G
跳转到文件开头 1G gg
跳转到文件结尾 G
上一行第一个字符 - (忽略空格、TAB)
下一行第一个字符 +, Enter (忽略空格、TAB)
跳转到屏幕的第一行 H
调转到屏幕的第#行 #H
跳转到屏幕的中间 M
跳转到屏幕的最后一行 L
跳转到屏幕的倒数第#行 #L
跳转到本行第一个非空字符 ^
跳转到本行第#列 #|
跳转到#%行 #%
单词结尾 e E(忽略标点符号)
重画屏幕 Ctrl-L
滚动到上一页 Ctrl+b
滚动到下一页 Ctrl+f
滚动到上半页 Ctrl+u
滚动到下半页 Ctrl+d
滚动下一行 Ctrl+e
滚动上一行 Ctrl+y
使当前行滚动为第一行 z-Enter
使当前行滚动为中间 z.
使第#行滚动为中间 #z.
使当前行滚动为最后一行 z-
返回上一个位置 ``
返回上一个位置的开头处 ''
跳到第一行第一个字符(并不总有效) Ctrl-Home
调到最后一行最后一个字符(并不总有效) Ctrl-End
找到对应的括号 %
寻找C语言函数的定义 :tag [function name]
(用shell的ctags命令可以建立tags文件包括所有函数的定义)
3.查找和替换
查找某个字符串 /patter(空格区分单词)-Enter 缺省是区分大小写
不区分大小写查找 :set ic(ignorecase :set noic相反,是不区分大小写)
/\cWord(/CWord区分大小写)
继续查找 n N(反方向) /-Enter ?-Enter
逆向查找 ?
使用正则表达式进行查找 \<表明开始 \>表明结束 正则表达式的字符都用\来标明转义
行内搜索字符x fx Fx tx Tx ; ,
删除查找的字符串 d/pattern d?pattern
替换 :[范围]s/source/replce/gc
替换字符串 :%s/source/replace/c(确认每次替换)
全部替换 :%s/source/replace/g
替换行内第一个满足的字符串 :s/source/replace/
对满足某个模式的行中进行替换 :g/pattern/s/source(如果与pattern相同则可以省略)/replace/g
模式 :/pattern/
不区分大小写替换 :set ic(set noic是区分大小写)
用正则表达式替换特别 &(反应匹配的内容) \L \l \U \u \e \E (大小写) \<
\>(单词开头或结尾)
\(\)(可定义9个模式的缓存,可以保存在更换前和更换后用相同的字符串)
~(上一次匹配的正则表达式)
正则表达式中可以用;或:等代替/,特别是在处理含路径的文件时特别有用
全局上一次的匹配 :%&g
用新模式来代替就模式来完成替换 :%~g
4.使用剪贴板(删除的内容也会被放入剪贴板)
复制当前行 yy=Y
复制当前行到a缓冲区 "ayy
扩展当前行到a缓冲区 "Ayy
剪切当前行 dd
复制当前单词 yw
剪切当前单词 dw
复制当前n个单词 y#w
剪切当前的n个单词 d#w
复制到本行行首 y0
剪切到本行行首 d0
复制到本行行尾 y$
剪切到本行行尾 d$
拷贝或剪切反向选取n个单词: y/d#B
拷贝或剪切到指定行: y或d加#G
拷贝或剪切指定字符: y或d加#l
拷贝或剪切到屏幕第一行/中间/最后一行 y或d加H/M/L
粘贴#号缓冲区 "#p "#P
粘贴a缓冲区 "ap "aP (a~z 26个命名缓冲区)
粘贴 p P (注意删除的内容都会放入剪贴板)
5.Undo和Redo
Undo u U(一行内的撤销操作)
Redo Ctrl-R
重复命令 .
6.操作多个文件
打开多个窗口 -o -O(后者是垂直打开) 添加数字则打开指定数目的窗口
在新窗口中打开新文件 split vsplit
窗口中切换 ^W
交换轮转窗口 ^Wr ^WR ^Wx ^WX n^Wx n^WX ^WH ^WJ ^Wk ^WL ^Wt ^Wb ^Wp
文件满屏 ^WT
列出所有缓冲区(打开的文件) :unhide
退出全部的文件 :qa
编辑二进制文件 -b :set binary (防止出现不必要的文末换行符)
同一个文件在两个窗口打开 (v)split 不带文件名参数
设置窗口大小 选项winheight winwidth
窗口参数 laststatus=1/2
分割当前窗口为两个窗口 split vsplit(垂直分割) new(打开空白文件) vnew sview [filename]
sfind topleft
有文件参数则在新窗口打开该指定文件 :[n] split [++opt] [+cmd] [file]
窗口命令 ^W开始 例如^Ws分割当前窗口 ^Wv垂直分割当前窗口
扩大或缩小 :resize +/-n
命令 ls files buffer help bNext sbNext
分页 :tabnew :tabclose :tabonly
关闭窗口 close quit only close
7.环境互动
打开一个新文件 :e [filename]
部分文件内容保存到新文件中 :[范围]w [new file name] :w %.new
部分文件内容保存到另一个文件的末尾 :[范围]w >> [file name]
执行一个命令 ![命令名]
强制保存 w!
另存 w [new file name]
保存并退出 ZZ
退出并不保存 q!
保存并退出 wq
强制保存并退出 wq!
只有需要保存时才保存然后退出 x
放弃所有修改重新打开文件 e!
新建一个Shell sh 用Ctrl-D或exit返回
挂起当前vi Ctrl-D fg返回
只读方式打开的参数 -R 或用shell命令view
恢复文件的参数 -r
执行Shell命令 :![Shell命令]
将Shell命令结果插入文件 :r ![Shell命令]
将文件内容做参数 :[范围]![Shell命令]
用当前这一行作为参数 :!![Shell命令]
8.vim设置
设置参数 :set option
取消参数 :set nooption
看参数 :set all :set option?
读入制定配置文件或脚本文件 :so [文件名]
缺省配置文件 .vimrc .exrc
常见参数 wrapmargin ic wrapscan autoindent number
autowrite(从安全角度最好不要改这个参数缺省值)
缩进 :set autoindent Ctrl-D(上一层的缩排) Ctrl-T(另一层的缩排)
左右缩进 << >> (:set shiftwidth=8)
tab设置 :set tabstop=8
显示行号 :set nu
不显示行号 set nonu
定义缩写 ab [缩写] [全文]
取消缩写 unab [缩写]
定义取消命令序列 map unmap (Ctrl-V用来引用vi定义的操作)
将a缓冲区中的内容作为操作执行 @a
将TAB和行尾特别显示出来 :set list (临时命令用l)
设置是否与vi兼容 :set compatible
配置文件 .vimrc .exrc
配置文件的注释 "
设置自动转行显示 set wrapmargin=#
激活鼠标 set mouse=a
9.书签
设置x书签 mx
到x书签所在位置 `x
到x书签做在行第一个字符 'x
10.ex命令
:{目标}{命令}{位置}
:g 可以在指定执行命令的范围时在全局进行执行
显示某几行 :#,# #;#(后者可以以前一个为准进行+n等变化而不是以当前行号) . $ % - +
显示行数行号 := .= nu
基本命令 co/t m d s(替换)
合并命令 |
搜索 :g/pattern/ :g!/pattern/=v/pattern/
打印/显示 p
将其他文件插入到当前位置 :read [file name] :r [file name]
将其他文件插入到指定位置 :[positin 0 /pattern/]read [file name] :[positin 0 /pattern/]r [file name]
转到第一个文件 :rewind
转到下一个文件 :n
列出所有在编辑的文件 :args
显示当前文件 e %
显示备选文件 e #
在文件中切换 Ctrl-^
将文本复制到a缓冲区 :[范围]ya a
把a缓冲区文本复制到当前位置 :pu a
进入ex模式 Q
11.vim特别字符
前文件名 %
替换文件名 #
前次插入的文本 .
可以编辑目录,包括改名等
获取帮助 :help
12.可视化操作
进入可视模式 v
可以用移动光标的命令来进行选择 见2
其他选择的方式 countaw countaW countiw countiW
13.Vim脚本
数学运算函数只能针对整数
14.gvim
自定义菜单 :amenu
配置文件 .vimrc .gvimrc
15.程序开发
保留折叠 :mkview :loadview
手动创建折叠 #zF #zfj
打开折叠 zo
关闭折叠 zc
删除折叠 zE
删除所有折叠 zD
递增/递减foldlevel选项 zm/zr
foldlevel选项设置为0 zM
缩进折叠 :set foldmethod=indent :set shiftwidth=#
设置显示的层数 :set foldlevel=#
语法折叠 :set foldenable :set foldmethod=syntax
diff模式折叠
缩排模式 :set autoindent / smartindent / cindent / indentexpr
paste选项会改变缩排自动功能,返回成自动缩排 :set nopaste
自动补全^X开始 ^F ^N ^P ^L ^D
映射键 map imap
标签 标签栈 tags ^]
高亮 :syntax enable :syntax on :set syntax=sh
编译 :make
16.其他
编辑二进制文件 -b :set binary
输入特殊字符 ^K……
自动保存设置 :set autowrite
生成HTML格式表现文件 :runtime!syntax/2html.vim :#,#TOhtml
比较两个文件 vim -d vimdiff
撤销功能设置 :set undolevel=# 1000
撤销重做命令 :undo :redo u ^r
保存当前会话 :mksession [filename]
取得会话信息 :source [filename]
设置内容行大小 :set wrap :set nowrap :set sidescroll=# :set sidescrolloff=#
:set listchars=……
获取帮助 F1
获得命令行历史 上下按钮 ^F
版权声明:本文标题:学习VI和VIM总结 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1724513001h753748.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论