跪求《理想的儿子下载》百度云

linux vim 操作笔记
作者:佚名
字体:[ ] 来源:互联网 时间:11-01 00:13:44
Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体
V1. 默认字符编码为utf8,打开使用gb2312编码的文件,中文全为乱码,如何恢复正常显示? 输入 edit ++enc=cp936 V2. 如何在vim系统中执行命令? 输入 !cmd V3. 使用vim直接打开并编辑.*gz文件,而无须解压,读取,编辑,再压缩. 压缩文件的支持是通过plugin vim ls-lrR.txt.gz V4. 如何Vim支持语法加亮? 一劳永逸的方法,在~/.vimrc中增加如下语句 syntax on 临时性的方法, 输入命令:syntax on V5. Vim如何在结构文档中快速切换,比如 C语言{ }块之间切换. 输入在{}之间,输入%即可 V6. 如何让Vim记下我的编辑状态,以便下次快速恢复工作? 输入 :mksession file_name_your_session V7. 如何让Vim告诉你编辑文件的字节数,字数,当前位置信息? 输入 g CTRL_G V8. 输入help,打开了帮助窗口,如何快速关闭? 输入CTRL-W ,然后再输入CTRL-Q, 或者输入CTRL-W q V9. 我要每天编辑日志,我不想去输入日期与时间,该怎么办? 现要如这样的日期形式Mon Sep 19 23:19:03 CST 2005,简单,定义 一个快捷键F2,在vim中做这样一个映射 :map gg:read !date V10. 如何使用Vim改变文本文件的编码? 比如,原有1个文档为utf-8编码的,现在要将它改为cp936编码,可用如下指令 :set fileencoding=cp936 然后再保存文件:w V11. 如何将vim记住我的配置选项(比如默认的编码方式,文件类型等)? 请将你的配置命令写到~/.vimrc配置脚本文件中 V12. 如何查看当前编辑的C/C++源文件所有include文件路径? 输入:checkpath V13. 如何保存全局的配置选现(对所有用户都可用)? 先输入:version, 查看系统vimrc配置文件的值 再编辑系统vimrc配置文件,加入你想要vim执行的命令 V14. 如何快速复制Buffer中的一行文字? 输入yy先记录到缓冲区, 移动光标到想要粘贴处,按p V15. 如何利用宏命令,生成数字顺序列表? 1. Create the first list entry, make sure it starts with a number. 2. qa - start recording into buffer &a& 3. Y - yank the entry 4. p - put a copy of the entry below the first one 5. CTRL-A - increment the number 6. q - stop recording 7. @a - repeat the yank, put and increment times V16. 如何实现文本的折叠(Fold)? 自动Fold,假设你的文件是C源文件,输入 :set foldmethod=indent :set foldenable 手动Fold,选中你要折的行,在Normal模式下 输入命令 zf 当Fold创建后,移动光标到Fold所在行 输入 zo, 打开相应的Fold zc, 关闭相应的Fold zM, 关闭文件中所有的Fold zR, 打开文件中所有的Fold za, 自动打开或关闭相应的Fold V17. 如何查看当前文件中的字,字符个数? 输入g CTRL-G 即可,所有字节数按UTF-8的形式进行计数. V18. 如何在Visual模式下快速搜索当前选中的文字? 为了不改变用户使用习惯,我们依然沿用*和#这两键 vnoremap * y/& vnoremap # y?& 注: 指令插入命名寄存器的内容 V19. 如何在源代码中不同块/段落间来回跳跃? 输入 { , 前进至上一段落 输入 } , 前进至后一段落 V20. 如何文本中的TAB转化为固定长度的空格? 输入 :set expandtab 输入 :set tabstop=4 输入 :retab V21. vim中paste剪贴板中的数据如何让它不缩进,保持原格式? paste时,输入的文本大多会包含换行字符,还有一些特殊字符,vim会自动对文本缩进,并 且自动换行等,为了避免这些智能选项的影响,可以把paste开关打开 V22. 有趣的几个功能 gg 到文件首 gd 到变量声明 gg=G 全篇自动缩进 , =G 单行缩进 K(shift+k) man crl+] 函数原型处 crl+t 回 ( ctags ) ctl+p 自动补全( 编辑状态 ) :X 加密保存( 要输入密码 ) 使用说明: 以下的例子中 xxx 表示在命令模式下输入 xxx 并回车 以下的例子中 :xxx 表示在扩展模式下输入 xxx 并回车 小括号中的命令表示相关命令. 在编辑模式或可视模式下输入的命令会另外注明. 1. 查找 /xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx可以是正规表达式,关于正规式就不多说了. 一般来说是区分大小写的, 要想不区分大小写, 那得先输入 :set ignorecase 查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. *(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的 下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方 向查找. g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而 是匹配包含该单词的所有字符串. gd 本命令查找与光标所在单词相匹配的单词, 并将光标停留在文档的非 注释段中第一次出现这个单词的地方. % 本命令查找与光标所在处相匹配的反括号, 包括 () [] {} f(F)x 本命令表示在光标所在行进行查找, 查找光标右(左)方第一个x字符. 找到后: 输入 ; 表示继续往下找 输入 , 表示反方向查找 2. 快速移动光标 在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定 位和编辑. 因此能更快一点移动光标是很有用的. w(e) 移动光标到下一个单词. b 移动光标到上一个单词. 0 移动光标到本行最开头. ^ 移动光标到本行最开头的字符处. $ 移动光标到本行结尾处. H 移动光标到屏幕的首行. M 移动光标到屏幕的中间一行. L 移动光标到屏幕的尾行. gg 移动光标到文档首行. G 移动光标到文档尾行. c-f (即 ctrl 键与 f 键一同按下) 本命令即 page down. c-b (即 ctrl 键与 b 键一同按下, 后同) 本命令即 page up. & 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查 找到某个单词后, 再输入此命令则回到上次停留的位置. &. 此命令相当好使, 它移动光标到上一次的修改行. `. 此命令相当强大, 它移动光标到上一次的修改点. 3. 拷贝, 删除与粘贴 在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令 结合的, 看几个例子就能够明白了. yw 表示拷贝从当前光标到光标所在单词结尾的内容. dw 表示删除从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. d0 表示删除从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. d$ 表示删除从当前光标到光标所在行尾的内容. yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容. dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容. 特殊地: yy 表示拷贝光标所在行. dd 表示删除光标所在行. D 表示删除从当前光标到光标所在行尾的内容. 关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询. 4. 数字与命令 在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行 号定位. 如: 5fx 表示查找光标后第 5 个 x 字符. 5w(e) 移动光标到下五个单词. 5yy 表示拷贝光标以下 5 行. 5dd 表示删除光标以下 5 行. y2fa 表示拷贝从当前光标到光标后面的第二个a字符之间的内容. :12,24y 表示拷贝第12行到第24行之间的内容. :12,y 表示拷贝第12行到光标所在行之间的内容. :,24y 表示拷贝光标所在行到第24行之间的内容. 删除类似. 5. 快速输入字符 在 vi 中, 不要求你输入每一个字符, 可以有很多种方法快速输入一些字符. 使用 linux/unix 的同学一定有一个经验, 在命令行下输入命令时敲入头几个字符再按 TAB 系统就会自动将剩下的字符补齐, 假如有多个匹配则会打印出来. 这就是著名的命令 补齐(其实windows中也有文件名补齐功能). vi 中有许多的字符串补齐命令, 非常方便. c-p(c-n) 在编辑模式中, 输入几个字符后再输入此命令则 vi 开始向上(下)搜 索开头与其匹配的单词并补齐, 不断输入此命令则循环查找. 此命令 会在所有在这个 vim 程序中打开的文件中进行匹配. c-x-l 在编辑模式中, 此命令快速补齐整行内容, 但是仅在本窗口中出现的 文档中进行匹配. c-x-f 在编辑模式中, 这个命令表示补齐文件名. 如输入: /usr/local/tom 后再输入此命令则它会自动匹配出: /usr/local/tomcat/ abbr 即缩写. 这是一个宏操作, 可以在编辑模式中用一个缩写代替另一个 字符串. 比如编写java文件的常常输入 System.out.println, 这很 是麻烦, 所以应该用缩写来减少敲字. 可以这么做: :abbr sprt System.out.println 以后在输入sprt后再输入其他非字母符号, 它就会自动扩展为System. out.println 6. 替换 替换是 vi 的强项, 因为可以用正规表达式来匹配字符串.以下提供几个例子. :s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb :s/\/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词 :%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb :12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa 替换为 bb :12,23s/^/#/ 将从12行到23行的行首加入 # 字符 :%s= *$== 将所有行尾多余的空格删除 :g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除. 7. 多文件编辑 在一个 vim 程序中打开很多文件进行编辑是挺方便的. :sp(:vsp) 文件名 vim 将分割出一个横(纵)向窗口, 并在该窗口中打开新文件. 从 vim6.0 开始, 文件名可以是一个目录的名称, 这样, vim 会 把该目录打开并显示文件列表, 在文件名上按回车则在本窗口打 开该文件, 若输入 O 则在新窗口中打开该文件, 输入 ? 可以看 到帮助信息. :e 文件名 vim 将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存. c-w-w vim 分割了好几个窗口怎么办? 输入此命令可以将光标循环定位 到各个窗口之中. :ls 此命令查看本 vim 程序已经打开了多少个文件, 在屏幕的最下方 会显示出如下数据: 1 %a &usevim.html& 行 162 2 # &xxxxxx.html& 行 0 其中: 1 表示打开的文件序号, 这个序号很有用处. %a 表示文件代号, % 表示当前编辑的文件, # 表示上次编辑的文件 &usevim.html& 表示文件名. 行 162 表示光标位置. :b 序号(代号) 此命令将指定序号(代号)的文件在本窗口打开, 其中的序号(代号) 就是用 :ls 命令看到的. :set diff 此命令用于比较两个文件, 可以用 :vsp filename 命令打开另一个文件, 然后在每个文件窗口中输入此命令,就能看 到效果了. 8. 宏替换 vi 不仅可以用 abbr 来替换文字, 也可以进行命令的宏定义. 有些命令输起来很费劲, 因此我把它们定义到 - 上, 这样就很方便了.这些配置可以预先写到 ~/.vimrc (windows 下为 $VIM/_vimrc) 中, 写进去的时候不用写前面的冒号. :nmap :nohls 取消被搜索字串的高亮 :nmap w 命令模式下转移光标到不同窗口 :imap 输入模式下运行 :nmap :%s= *$== 删除所有行尾多余的空格. :imap 同上 :java 中: (注, 这里为什么说 java 中, 因为以下定义对其他文件格式不起作用, 下文 会说到如何实现这一点) :nmap :comp javac:mak -d . % 此命令用 javac 编译 java 文件, 它会自动将光标定位到出错点. 不过这需要定 义一个 javac.vim 文件在 $VIM/compiler 下, 在 javac.vim 里面只有两行字: setlocal makeprg=javac setlocal errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%# :nmap :comp ant:mak 此命令用 ant 编译 java 文件, 它会自动将光标定位到出错点. 一般来说, 安装 vim 后已经有了compiler/ant.vim文件, 因此这个命令可以直接使用. 但是需要 在当前目录下有 build.xml 文件, 当然还必须安装 ant 才行. :nmap :cl 此命令用于查看所有的编译错误. :imap :nmap :cc 此命令用于查看当前的编译错误. :imap :nmap :cn 此命令用于跳到下一个出错位置. :imap :nmap :cp 此命令用于跳到上一个出错位置. :imap :nmap :JavaBrowser 此命令用于在窗口左部分割出一个新窗口, 里面的内容是 java 的资源树, 包括 本文件中出现的类, 类的成员变量及成员方法, 就好像 JCreator 表现的那样. 在这个窗口中输入 ? 会看到帮助. 嘿嘿, 很好用, 不过需要 ctags 支持. :imap 9. TAB TAB 就是制表符, 单独拿出来做一节是因为这个东西确实很有用. && 输入此命令则光标所在行向左移动一个 tab. && 输入此命令则光标所在行向右移动一个 tab. 5&& 输入此命令则光标后 5 行向右移动一个 tab. :12,24& 此命令将12行到14行的数据都向右移动一个 tab. :12,24&& 此命令将12行到14行的数据都向右移动两个 tab. 那么如何定义 tab 的大小呢? 有人愿意使用 8 个空格位, 有人用4个, 有的用2个. 有的人希望 tab 完全用空格代替, 也有的人希望 tab 就是 tab. 没关系, vim 能 帮助你.以下的设置一般也都先写入配置文件中, 免得老敲. :set shiftwidth=4 设置自动缩进 4 个空格, 当然要设自动缩进先. :set sts=4 即设置 softtabstop 为 4. 输入 tab 后就跳了 4 格. :set tabstop=4 实际的 tab 即为 4 个空格, 而不是缺省的 8 个. :set expandtab 在输入 tab 后, vim 用恰当的空格来填充这个 tab. 10. autocmd 这个命令十分的强大, 可以用这个命令实现对不同的文件格式应用不同的配置; 可以 在新建文件时自动添加上版权声明等等. 这些命令一般定义在 ~/.vimrc 这样的配置文件 里面. 由于他很强大, 所以我不能给出很具体的说明, 只能举几个例子, 详细的请看帮助. :autocmd! 删除所有之前的自动命令. autocmd FileType java source ~/.vim/files/java.vim autocmd FileType java source ~/.vim/files/jcommenter.vim 以上两条命令让我在打开 java 文件时才应用后面提到的两个配置文件. autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel 以上这条命令让我在新建 java 文件时自动加入 java.skel 文件的内容. autocmd BufNewFile *.java normal gnp 以上这条命令让我在新建 java 文件时自动运行 gnp 命令, 这个命令进行一些特殊化 处理, 比如将新 java 文件中的 __date__ 替换成今天的日期什么的. 11. 常用脚本 在 vim.sf.net 你可以发现很多脚本(script), 这些脚本常常有让你意想不到的作用. 我常用的有: jcommenter.vim 自动加入 javadoc 风格的注释. JBrowser.vim 类资源浏览. C, C++ 等可以用 Tlist 还有许多有用的, 比如 checkstyle.vim 可以检验你的编程风格, jad.vim 可以直接 反编译 .class 文件等等. 12. 常用配置 在~/.vimrc 配置文件中你常常需要一些个性化配置. 比如上面写的一些宏定义, 一些 autocmd 定义等等. 比如: set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc 这样在vim中打开文件时, 按 tab 键补齐文件名时它会忽略上述文件. set nu 显示行号 set ai 设置自动缩进 map Y y$ 让 Y 和 D 一样, 要不然 Y 的本意和 yy 一样. 13. 其他 还有许多有意思的命令, 记录在这里免得忘记. . 重复上次编辑命令. :g/^/exec &s/^/&.strpart(line(&.&).& &, 0, 4) 在行首插入行号 :runtime! syntax/2html.vim 转换 txt 成 html, 会按照你的 颜色配置来转
大家感兴趣的内容
12345678910
最近更新的内容linux下vim命令总结
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
linux下vim命令总结
一、光标控制命令
&& 命令&&&&&&&&&&&&&&&&&&
k&&&&&&&&&&&&&&&&&&
向上移一行
j&&&&&&&&&&&&&&&&&&
向下移一行
h&&&&&&&&&&&&&&&&&&
向左移一个字符
l&&&&&&&&&&&&&&&&&&
向右移一个字符
&&&&&&&&&&&&&&&&
移到文件的首行
G&&&&&&&&&&&&&&&&&&
移到文件的末行
H&&&&&&&&&&&&&&&&&&
移到屏幕的第一行
w&&&&&&&&&&&&&&&&&&
移到下一个字的开头
W&&&&&&&&&&&&&&&&&&
移到下一个字的开头,忽略标点符号
e&&&&&&&&&&&&&&&&&&
移到下一个字的结尾
E&&&&&&&&&&&&&&&&&&
移到下一个字的结尾,忽略标点符号
^&&&&&&&&&&&&&&&&&&
移到当前行首
$&&&&&&&&&&&&&&&&&&
移到当前行尾
{&&&&&&&&&&&&&&&&&&
移到上一段开头
}&&&&&&&&&&&&&&&&&&
移到上一段结尾
Enter&&&&&&&&&&&&&&
移到下一行行首
二、在 vim 中添加文本
&& 命令&&&&&&&&&&&&&&&&&&
i&&&&&&&&&&&&&&&&&&
在光标前插入文本
I&&&&&&&&&&&&&&&&&&
在当前行首插入文本
a&&&&&&&&&&&&&&&&&&
在光标后插入文本
A&&&&&&&&&&&&&&&&&&
在当前行末插入文本
o&&&&&&&&&&&&&&&&&&
在当前行的下边插入新行
O&&&&&&&&&&&&&&&&&&
在当前行的上边插入新行
s&&&&&&&&&&&&&&&&&&
删除光标所在处字符,并进入插入模式
S&&&&&&&&&&&&&&&&&&
删除光标所在的行,并进入插入模式
:r filename
读入指定文件内容,并插在当前行后
file&&&&&&&&&&&
读入文件 file 内容,并插在第 n 行后
Esc&&&&&&&&&&&&&&&&
回到命令模式
三、在 vim 中删除文本
&&& 命令&&&&&&&&&&&&&&&&&&
x&&&&&&&&&&&&&&&&&&
删除光标处的字符
db&&&&&&&&&&&&&&&&&
删除光标前面的字
dw&&&&&&&&&&&&&&&&&
删至下一个字的开头
dd&&&&&&&&&&&&&&&&&
:n,md&&&&&&&&&&&&&&
从第 m 行开始往前删除 n 行
d$&&&&&&&&&&&&&&&&&
从光标处删除到行尾
&&&&&&&&&&&&&&&&
从光标处删除到行首
四、在 vim 中查找与替换
& & 命令&&&&&&&&&&&&&&&&&
查找与替换
&&&&&&&&&&&&&
在文件中向前查找 target
?target&&&&&&&&&&&&&&
在文件中向后查找 target
n&&&&&&&&&&&&&&&&&&&
查找下一个
N&&&&&&&&&&&&&&&&&&&
查找上一个
ic&&&&&&&&&&&&&&&
查找时忽略大小写
noic&&&&&&&&&&&&&
查找时对大小写敏感
%s/text1/text2/g
& 在整个文件中查找text1并且替换为text2
五、在 vim 中复制文本
& & 命令&&&&&&&&&&&&&&&&&&&&&
yy&&&&&&&&&&&&&&&&&&
复制当前行
nyy&&&&&&&&&&&&&&&&&
从当前开始复制n行
p&&&&&&&&&&&&&&&&&&
粘贴至光标前
P&&&&&&&&&&&&&&&&&&
粘贴至光标后
u&&&&&&&&&&&&&&&&&&
撤消上一次修改
U&&&&&&&&&&&&&&&&&&
撤消所有修改
六、保存与退出vim
&&& 命令&&&&&&&&&&&&&&&&&&&&&
保存或退出
:w&&&&&&&&&&&&&&&&&&
保存文件但不退出
file&&&&&&&&&&&&&
将修改保存在 file 中但不退出
& :wq 或 ZZ
:x&&&&&&&&
保存文件并退出
:q!&&&&&&&&&&&&&&&&&
不保存文件,强制退出
:e!&&&&&&&&&&&&&&&&&&
放弃所有修改,从上次保存文件开始再编辑
七、其他选项
选项&&&&&&&&&&&&&&&&&&&&&
all&&&&&&&&&&&&
查看所有选项
nu&&&&&&&&&&&&&
showmode&&&&&&&
显示是输入模式还是替换模式
&&&&&&&&&&
为文本输入设置 tab stops
nonumber&&&&&&&
取消显示行数
:.=&&&&&&&&&&&&&&&&&
查看当前行的行号
:=&&&&&&&&&&&&&&&&&&
查看总行数
ctrl+g&&&&&&&&&&&&
显示文件名、当前的行号、文件的总行数和文件位置的百分比
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 27466
博文数量: 18
博客积分: 31
博客等级: 民兵
技术积分: 172
注册时间:
一步一个阶梯,向人类进化。
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
原文地址: 作者:
VIM是Linux功能最为强大的编辑器,它是由Unix下传统的文本编辑器VI发展而来的,VI M- Vi IMproved,VI的增强版,有彩色和高亮等特性,VIM和VI的区别可参看vi_diff.txt(:help vi_diff.txt),目前好多版本的Linux中调用VI是链接到VIM,作为Linux学习系统管理和编程基本工具,是要好好学习下VIM的使用基本操作命令,以下整理图书和网络上对于VIM的概述和操作命令的介绍,以备记录和查询之用:
& & 1.VIM的编辑模式
&&&&& & VIM和VI一样都是有模式的编辑器,详细了解VIM模式,在VIM里输入:help mode,主要有如下几种模式:
& &(1)命令模式(Normal mode)& &
&&&&&&&&&&&&& & 一进入VIM就是出于命令模式,该模式下所有键盘输入都作为命令来对待,不会输入都文件里,其他任何模式都可以通过Esc键回到命令模式;
& &(2)编辑模式(Insert mode)
& & & & & & & & & 在命令模式中输入a、i、A、I、o、O等命令即可进入该模式,此时在状态列会有INSERT字样。在该模式下才能输入文字,按Esc键回到命令模式;
& & (3)命令行模式模式(Command-line mode)
& & & & & & & & &在命令模式中输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)进入该模式。此时屏幕左下角出现一个冒号提示符,等待输入命令,命令行模式下的命令输入完成后按Enter键才会执行,按Esc键回到命令模式;
& & (4)可视模式(Visual mode)
&&&&&&&&&&&&& & 在命令模式中通过v(按字符选择)、V(按行选择)、Ctrl+V(按块选择)进入该模式,在屏幕底部会有“-VISUAL-"、“-VISUAL LINE-"、“-VISUAL BLOCK-"等提示。在该模式下,通过移动光标选择文本,选中的文本将反白显示。按Esc键回到命令模式;
2.1进入vi的命令&
1.启动进入vi操作
进入vi而不读入任何文件
vi filename
进入vi并读入或新建指定名称的文件,并将光标置于第一行首 &&
vi filename....filename
打开多个文件,依次进行编辑
vi +n filename
进入vi打开文件,并将光标置于第n行首。
vi + filename
进入vi打开文件,并将光标置于最后一行首 。
vi +/pattern filename
打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename
在上次正用vi编辑时发生系统崩溃,恢复filename
vim -R file
只读方式打开文件
vimdiff fileA fileB
比较编辑两个不同的文件
2.存储及退出文件
:wq&或者&:x
存文件,并且退出vi
保存并退出&(:x&表示仅在需要时保存,ZZ不需要输入冒号并回车) ZZ = wq
保存当前文件
:w filename
写入指定文件,相当于另存为,但未退出vi(若未指定文件名则为当前工作的文件名)
可带行范围&&:n1,n2 w filename
既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1
不作任何修改并退出vi (多屏时用qa)
放弃任何修改并退出vi
无条件退出
:e filename
打开文件filename进行编辑[相当于退出当前的并打开另一个文件]?
放弃修改文件内容,重新载入该文件编辑
重新载入【类似刷新】
:w !sudo tee %
以普通用户身份打开的vim,修改后以root身份保存
ctrl + z&&/&&&&fg
暂时挂到后台/跳回编辑页面
:f 或 Ctrl-g&&
显示文件名,当前光标所在行的行号,总的行数,以及当前行所在文件中的百分比和当前光标所在的列的信息
暂时退出vi并执行shell指令,执行完毕后再回到vi
:r!command
将命令command的输出结果放到当前行【强大】
暂时退出vi到系统下,结束时按Ctrl + d则回到vi。
vim -x exam.txt
新编辑的文件加密,会提示输入密码
文件加密,会提示输入密码
列出当前已定义的映射
(如何定义映射?)
列出关于你曾经跳转过的位置的列表,你最后一个跳转的位置被特别以一个”>”号标记
列出自定义的标记,包含VIM内部自定义的标识
要对包含空行的所有行进行编号(所有行之前插入行号^I)
显示VIM版本信息,包含特性、编译方式及配置文件目录
:n1,n2 w ! command
将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入【注意空格】例如& :1,4 w! grep tom
打开一个新窗口,&在该窗口的最开头的注释下面是一个选项列表(do what?)
:r filename
在光标所在处插入一个文件的内容(read)
可加入数字 :nr filename
:f filename
改变编辑中的文件名(file)
相当于复制了一个文件,执行这个命令后,新编辑不会应用于原文件
vim特殊打开文件的方法,打开光标所在处的 word 为名的文件,当然,这个文件要在当前目录内,否则会创建新文件
4.光标移动
字符&默认1,可加n
光标左移一个字符[回退键Backspace]
光标右移一个字符[空格键Space]
hkjl作为移动光标【important,同方向键,建议使用这四个】
单词&&默认1,可加n
光标跳到下个word的第一个字母&[常用]
移到下一个字的开头,忽略标点符号
光标回到上个word的第一个字母
移到前一个字的开头,忽略标点符号&BACK
光标跳到下个word的最后一个字母
移到下一个字的结尾,忽略标点符号&END
移到当前一行的开始[Home]
数字零,到行头
移到当前一行的最后[End]
命令将光标移动到当前行的第一个非空白字符上
到本行最后一个不是blank字符的位置
光标上移一行Ctrl+p
光标下移一行Ctrl+n
光标下移一行
光标下移n行【按上档键&数字shift +】
光标上移n行
移到文件的最后一行
移到文件的第n行???
移动到文档的开始
文件开始位置——开始行
文件结束位置——末尾行
光标移至屏幕顶行&&&&HEAD
光标定位在显示屏的第一行
移到屏幕的中间行开头&Middle
光标定位在显示屏的中间
移到屏幕的最后一行?&LAST
光标定位在显示屏的最后一行
光标移至句首
光标移至句尾
移到段落的开头
移到下一个段落的开头
匹配括号移动,包括&(,&{,&[.(陈皓注:你需要把光标先移到括号上)
跳转到与之匹配的括号处
&匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
折叠(需加方向键)
展开(空格也可以展开)
可以zf进行折叠, 用zo打开折叠,也可以方向键向右打开折叠,zc 关闭折叠(只要在被折叠的块中的任一个语句就行)???
向文件首翻半屏up
向文件尾翻半屏down
向文件尾翻一屏&forward&(fact整屏去两行)
向文件首翻一屏back&(fact整屏去两行)
跳转到当前光标所在单词对应的主题
回到前一个位置
命令会把当前行置为屏幕正中央(z字取其象形意义模拟一张纸的折叠及变形位置重置)
命令会把当前行置于屏幕顶端(top)
命令会把当前行置于屏幕底端(bottom)
光标定位在文件的中间
跳转到最近光标定位的位置(只能记忆最近两个位置)&反引号
在光标前开始插入字符&&insert
在当前行首开始插入字符
在光标位置后开始加字&&append
在光标所在行的最后面开始加字
在光标下加一空白行并开始加字&open
在光标上加一空白行并开始加字
替换当前字符
替换当前字符及其后的字符【当前及其后字符被覆盖】
默认删除光标所在字符,输入内容插入之
默认删除当前行内容,输入内容作为当前行新内容= dd+o
删除由光标位置起始后的n个字符(含光标位置)
x =dl(删除当前光标下的字符)
删除由光标位置起始前的n个字符(含光标位置)
X =dh(删除当前光标左边的字符)
删至行首(数字零)
表示删除从当前光标到光标后面的第一个a字符之间的内容
代表d$(删除到行尾的内容)
代表c$(修改到行尾的内容)
删除光标处开始及其后的n-1个字
删除光标处开始及其前的n-1个字
删除当前光标所在的word(不包括空白字符),意为Delete Inner Word&两个符号之间的单词
删除当前光标所在的word(包括空白字符),意为Delete A Word
删除当前行及其后n-1行
将&n1行到n2行之间的内容删除
删除当前行至文件尾的内容
删除当前行至文件头的内容
删除2行【包括光标一行】
【删除就是剪切,它会覆盖之前复制的内容】
删除并进入输入模式
删除当前字,并进入输入模式
【很好用,快速更改一个单词】
相当于dw+i
删除当前字及其后的n-1个字,并进入输入模式\
修改指定数目的字
删除当前行,并进入输入模式
删除当前行及其后的n-1行,并进入输入模式
光标下的单词变为小写
光标下的单词变为大写
左右交换光标处两字符的位置
显示光标下的字符在当前使用的encoding下的内码
7.复制和黏贴
nyl&&&&&&&&&&&
复制n个字符(也可nyh)
复制一个单词
表示拷贝从当前光标到光标所在行首的内容
复制从当前位置到行尾
表示拷贝从当前光标到光标后面的第一个a字符之间的内容
复制从所在行到最后一行
将光标所在位置开始的n行数据复制暂存
复制一整行
ctrl + v&&&方向&&y
复制选择的很多行:先使用V进入visual模式,然后j向下移动到你想复制的行为止,然后y
复制暂存数据在光标的下一行
复制暂存数据在光标的上一行
:n1,n2 co n3
将n1行到n2行之间的内容拷贝到第n3+1行【n3行的下一行】
:n1,n2 m n3
将n1行到n2行之间的内容移至到第n3行下
把下一行的数据连接到本行之后
改变当前光标下字符的大小写
从光标开始处向文件尾搜索pattern
从光标开始处向文件首搜索pattern
在同一方向重复上一次搜索命令
在反方向上重复上一次搜索命令??
向上完整匹配光标下的单词
相当于?word
向下完整匹配光标下的单词
相当于/word
查找对应的( [ {匹配
在当前行查找光标后第n个x(一般直接fx)
:s/p1/p2/g
将当前行中所有p1均用p2替代
无g,则只替换第一个
:s/p1/p2/c
查找替换要求确认
:n1,n2s/p1/p2/g
将第n1至n2行中所有p1均用p2替代
:%s/p1/p2/g
全局,使用p2替换p1
:%s/p1/p2/gc
替换前询问
:n,$s/vivian/sky/
替换第n行开始到最后一行中每一行的第一个vivian为sky,n为数字
:.,$s/vivian/sky/g
替换当前行开始到最后一行中每一行所有vivian为sky
:s/vivian\//sky\//
替换当前行第一个vivian/为sky/,可以使用\作为转义符
:1,$s/^/some string/
在文件的第一行至最后一行的行首前插入some string
:%s/$/some string/g
在整个文件每一行的行尾添加some string
:%s/\s\+$//
去掉所有的行尾空格,“\s”表示空白字符(空格和制表符),“\+”对前面的字符匹配一次或多次(越多越好),“$”匹配行尾(使用“\$”表示单纯的“$”字符)
:%s/\(\s*\n\)\+/\r/
去掉所有的空白行,“\(”和“\)”对表达式进行分组,使其被视作一个不可分割的整体
:%s!\s*//.*!!
去掉所有的“//”注释
:%s!\s*/\*\_.\{-}\*/\s*!!g
去掉所有的“/* */”注释
将所有行尾多余的空格删除(没看懂)
:g/^\s*$/d
将所有不包含字符(空格也不包含)的空行删除
替换当前字符
替换当前字符及其后的字符,直至按ESC键
命令说明:
:[range]s/pattern/string/[c,e,g,i]
?&&&range&指的是範圍,1,7指從第一行至第七行,1,$&指從第一行&至最後一行,也就是整篇文章,也可以%&代表&(目前編輯的文章)。
?&&&pattern&就是要被替換掉的字串,可以用regexp&來表示。
?&&&string:&&&將pattern&由&string&所取代。
?&&&c: confirm,每次替換前會詢問。
?&&&e:&不顯示error。
?&&&g: globe,不詢問,整行替換。
?&&&&i: ignore&不分大小寫。
?&&&g&大概都是要加的,否則只會替換每一行的第一個符合字串。
?&&&可以合起來用
其中s为substitute,%表示所有行,g表示globa
10.编辑多个文件
:r filename
将指定文件的内容读入光标所在行下
显示编辑名单中的各个文件名列表
切换到下一个文件
切换到上一个文件
回到首个文件
读入编辑名单内的前一个文件
读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w&存档。
强迫读入另一个文件进入vi,原文件不作存档动作。
放弃当前一切修改,重新载入文件
:bn&和&:bp&
你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件
:files或&:buffers或&:ls
会列出目前 buffer 中的所有文件
11.其他命令
重复前一指令
取消前一指令undo
:u也行,一般不用,操作太多
恢复【只对u有效】redo
刷新屏幕显示
然后&ctrl+A是^A
&&&&Ctrl+I是\t
输入特殊字符
然后用j、k、l、h或方向键上下选中多列,之后&I I&&&a A&&r&&x等,最后按esc,生效
进入visual模式【ESC】退出
多行选中模式
【set可以简写为se】
附录:set的所有选项
列出所有选项设置情况
:se number
简写&:se nonum
显示文件的行号&
简写:se nu&&se nonu
显示制表位(Ctrl+I)和行尾标志($)&&se nolist
将超出屏幕行分多行显示&se nowrap
打开/关闭换行
vim贴代码的时候,格式乱掉
先之后,黏贴,就不会乱掉
:set ignorecase
设置在搜索中忽略大小写
:set hlsearch
高亮显示搜索结果&
可以取消高亮
设置终端类型
显示由面向行的命令修改过的数目
显示简短的警告信息
在转到别的文件时若没保存当前文件则显示NO write信息
允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan
禁止vi在搜索到达文件两端时,又从另一端开始
允许vi显示其他用户用write写到自己终端上的信息
:set autowrite
设置自动存盘
:set backup
:set backupext=.bak
设置备份文件名后辍,默认原文件名~
:syntax enable
:set autoindent
让Vim在开始一个新行时对该行施以上一行的缩进方式
:set showcmd
在Vim窗口的右下角显示一个完整的命令已经完成的部分
去掉文件加密
设置每行起始位置(以光标当前位置为起始)
:set noai?
取消行起始位置设定
:set incsearch
键入目标字符串的过程中Vim就同时开始了搜索工作
:set expandtab
一个Tab自动转换成4个空格
12分屏操作
分屏启动Vim
vim -On file1 file2 ...
使用大写的O参数来垂直分屏
vim -on file1 file2 ...
使用小写的o参数来水平分屏。
注释:&n是数字,表示分成几个屏【只会出现n屏,后面跟多了文件不会显示】
使用VIM的帮助&:help split
上下分割当前打开的文件
左右分割当前打开的文件
:sp filename
上下分割,并打开一个新的文件
:vsp filename
左右分割,并打开一个新的文件
关闭当前窗口【关闭不了最后一个】
关闭当前窗口,如果只剩最后一个了,则退出Vim
退出vim,并关闭所有屏
保存所有分屏并关闭
把光标移到右边的屏
把光标移到左边的屏中
把光标移到上边的屏中
把光标移到下边的屏中
把光标移到下一个的屏中
要在各个屏间切换,只需要先按一下Ctrl+W&
&: dir就是方向,可以是&hjkl&或是&←↓↑→中的一个,其用来切换分屏
这个功能还是使用了Vim的光标键,只不过都是大写。当然了,如果你的分屏很乱很复杂的话,这个功能可能会出现一些非常奇怪的症状。
下面是改变尺寸的一些操作,主要是高度,对于宽度你可以使用Ctrl+W ,但这可能需要最新的版本才支持
当同时打开几个文件时,按 _ 使当前窗口最大化
让所有的屏都有一样的高度
Ctrl+W +【shift +=键】
+&(或&-)&&增加尺寸
Ctrl+W -【shift –键】
最大化尺寸&(|&垂直分屏)
关闭分割窗口可以用:close 其实用:q也行
13 vim的帮助指令
Vim拥有一个细致全面的在线帮助系统,进入帮助
键&(如果键盘上有的话)
键(如果键盘上有的话)
:help command
&&&例如:help w
&&&&&&&&:help insert-index
常见问题及应用技巧
1) 在一个新文件中读/etc/passwd中的内容,取出用户名部分
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分
:3r /etc/passwd 这是在指定的行号后面读入文件内容
另外一种方法删掉文件中所有的空行及以#开始的注释行
#cat squid.conf.default | grep -v '^$' | grep -v '^#'
2) 在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘
:w /tmp/1 既然没法存盘,不想放弃所做的所有修改,先临时存到/tmp/1
:20,59w /tmp/1 或者仅仅把第20到59行之间的内容存盘成文件/tmp/1
3) 用VI编辑一个文件,但需要删除大段大段的内容
Ctrl+G 把光标移到需要删除的行的处按ctrl+G显示行号,再到结尾处再按Ctrl+G.
:23,1045d 假定两次行号为23和1045,则把这几间的内容全删除
也可以在开始和结束两行中用ma,mb命令标记后用:'a,'bd删除.
4) 在整个文件或某几行中在行首或行尾加一些字符串
:3,$s/^/some string / 在文件的第一行至最后一行的行首前插入some string
:%s/$/ some string/g 在整个文件每一行的行尾添加 some string
:%s/string1/string2/g 在整个文件中替换string1成string2
:3,7s/string1/string2/ 仅替换文件中的第三到七行中的string1成string2
Note: s为substitute,%表示所有行,g表示global
5) 同时编辑两个文件,在两个文件中拷贝剪贴文本
vi file1 file2
yy 同时打开两个文件,在文件1的光标所在处拷贝所在行
:n 切换到文件2 (n=next)
p 在文件2的光标所在处粘贴所拷贝的行
:N 切换回文件1
6) 替换文件中的路径
:%s#/usr/bin#/bin#g 把文件中所有路径/usr/bin换成/bin
:%s//usr/bin//bin/g 在'/'前用符号指出'/'是真的单个字符'/'
7) 用 vi 多行注释
如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,重复上个命令。如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是:
:.,+499 s/^/#/g
若需全文的行首插入可用以下命令
14&七个习惯
1&&&&&快速移动
2&&&&&&不要两次键入同样的东西
3&&&&&&错误修复
4&&&&&&经常需要编辑不止一个文件
5&&&&&&协同作业
6&&&&&&文本是结构化的
7&&&&&&养成习惯
1.&快速移动
在文本中随意漫游是非常常见的操作。所以高效编辑的第一要义是学习如何能够在文本中快速移动,准确定位。有三个步骤可以使你学到你需要的技巧:
当你编辑文件的时侯,留意一下你经常要重复进行的操作是什么;
练习使用这些命令,直到你的手指可以不假思索地运用自如;
浏览一下参考手册你就会发现关于tag的主题。文档会告诉你如何使用这一功能跳转到函数的定义处。
2.&不要两次键入同样的东西
借助":s"替换命令或者"."重复命令等快捷操作代替重复操作。
3.&错误修复
缩写功能来纠正。一些例子是::abbr Lnuix Linux。
语法高亮机制。
4.&经常需要编辑不止一个文件
创建tag文件。
将光标定位在你要查看其原型的函数名上,然后按下"[I"命令, Vim将会显示include文件中匹配这个函数名的一个清单。
预览标签机制会打开一个特殊的预览窗口,并且使光标仍然停留在你当前所在的位置,在预览窗口中的文本列出了当前光标所在处的函数的声明(有些可能不是声明)将当前光标移动到另一个函数名上,&停留几秒钟,&预览窗口中的内容就会变成是关于新函数名的声明。
5.&协同作业
Unix的哲学是使用独立的小程序,每个小程序做一项专门的任务,并且把它作好,将它们的工作整合到一起来完成一个复杂的任务。
Vim的做法是将一些分散的小程序整合起来,产生强大的处理能力,在这方面Vim还有待在将来进一步提高。
在编辑器领域, emacs是这方面的一个典范(有人甚至说它是一个能编辑文本的操作系统)
6.文本是结构化的
加速你的编辑-编译-修改的周期。
":make"&命令编译程序项目,捕获编译的错误/警告并允许你直接跳转到引起这一错误/警告的程序行上去;
`errorformat'选项告诉Vim你的编译器将生成何种格式的错误信息,以便于它能识别;
写一些自定义的宏,如要跳转到manual&帮助文档,&这对于查看交叉索引是一种简捷有效的办法;
使用上面的三项原则可以对付任何形式的结构化文本。
7.&养成习惯
绝大多数人只需要学习其中的10-20%的命令就足以应付它们的工作了。
建立适合自己的命令集,不时地回顾以往所做的事,&看看是不是可以自动完成一些重复的工作。
不断地重复练习你的解决方案直到你的手指可以条件反射地自动完成,从而达到你所期望的境界。
不要一次尝试太多的东西,一次做一件事并多做几次会好得多。
对于不经常的操作,最好记下你的处理步骤以备将来不时之需。
不管怎样,只要目标明确。你就能找到让你的编辑变得更加高效的办法。
阅读(475) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 理想的儿子土豆 的文章

 

随机推荐