<span id='82rg'></span>

  • <tr id='82rg'><strong id='82rg'></strong><small id='82rg'></small><button id='82rg'></button><li id='82rg'><noscript id='82rg'><big id='82rg'></big><dt id='82rg'></dt></noscript></li></tr><ol id='82rg'><table id='82rg'><blockquote id='82rg'><tbody id='82rg'></tbody></blockquote></table></ol><u id='82rg'></u><kbd id='82rg'><kbd id='82rg'></kbd></kbd>

        <ins id='82rg'></ins>
        <i id='82rg'><div id='82rg'><ins id='82rg'></ins></div></i>
        <acronym id='82rg'><em id='82rg'></em><td id='82rg'><div id='82rg'></div></td></acronym><address id='82rg'><big id='82rg'><big id='82rg'></big><legend id='82rg'></legend></big></address>

        <i id='82rg'></i>

        <code id='82rg'><strong id='82rg'></strong></code>
          <fieldset id='82rg'></fieldset>
          1. <dl id='82rg'></dl>

          2. linux vim 操作笔记

            • 时间:
            • 浏览:8
            • 来源:124软件资讯网

                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, 会根据你的

                颜色设置来转