linux学习之vim篇

来源:互联网 发布:蓝牙适配器csr4.0 mac 编辑:程序博客网 时间:2024/05/16 04:19

vim 确实是一把利器,值得程序员深入学习,打造个人的IDE,以发挥它的最大功率,此文做为记忆之用,常期更新

配置文件 $VIMRUTIME/vimrc_example.vim             用户配置:./vimrc


入门学习:vimtutor  命令 可进入基本操作的学习 

用户手册::help user-manual

快速参照::h quickref

速查表:http://coolshell.cn/articles/150.html


按键表  C- = CTRL

C - c      :退出  同<ESC>

C - ]          :跳转标签

C - i           :跳到较新的标签        同<Tab>一样

C - o        :回跳标签

C - t       :回跳标签,同C - o

C - d    :下半页

C - u    :上半页

C - e   : 上一行

C - y    :下一行

C - b    :上页(backward)

C - f     :下页(forward)

C - g  :显示行号等信息

C - r                :redo


a               :append 插入  <数字a>

A                 :行尾插入

b   :移到前一个单词,任何非字母的字符作为分隔符,   <数字b>

B  :以空格作为分隔符

cc       :(change)  删除并进入插入模式, 和d 类似, 也有cw,ce,c$,cc

C     :等于c$

dd             :删除一行;d数字d或数字dd,删除多行;

                dw    :删除单词,在下一个单词前,<数字dw>、<d数字w>

                de      :删除单词,到空格

               dG      :删除到文件尾,            dgg :删除到文件首

                db   , dB

                d + h, j, k, l

D         :等于d$

e  :移到下个单词末尾,任何非字母的字符为分隔符

E  :只以空格为分隔符

f字符  :在当前行(find)查找字符,  <数字f字符>

F字符  :在当前行反向查找字符

ge   :移到前一个单词末尾

gE  : 

gg   :首行

G   :尾行     <数字G> 第n行

h      :向左移动光标

H     :(Home)首行  同gg

i                 :插入

I                 :当行第一个非空字符插入

j       :向下移动光标,<数字j>下移n行

J                :删除换行符,联合两行

k      :向上移动光标,

l     :向右移动光标

L    :(Last) 末行  同G

m +字母      :标记

M   :(Middle)中间行

n     :查找下一项

N     :反向查找下一项

o                 :下行插入行

O      :在上行插入行

p    :(put)粘贴    <数字p>,xp交换前后两个字符

P      :在光标前粘贴

r   :替换字符   <数字r>替换n个字符

R  :替换单词     <数字R>用n个单词分别替换

s     : 等于cl,删除一个字符并进入插入模式

S    :等于cc   修改一行

t 字符  :(to)查找字符,光标定位到前一个字符,像f

T字符   :反向查找字符

u          :undo

U      :撤销当前行的所有的改变 

w :移动到下个单词, <数字w>

W :下一个非字母开头的单词

x                :删除光标下的字符, <数字x>删除n个字符, 等于dl

X                :删除光标左边的字符,等于dh

y       :(yank)复制,yy,yw,ye,y$

Y       :复制一行

zb     :屏幕底部

zt       :屏幕顶部

ZZ     :保存并关闭文件


~:转换大小写

^:  行首非空格

0: 零,行首

$:行尾, <数字$>,后n年的行尾

%    :匹配括号

数字%   ;移到百分比行

:数字     :移到某行

*      :查找光标下单词的下一项                <数字*>

#       :查找光标下单词的上一项               <数字#>

''          :两个'  跳转


set命令:

:set showmode  查询模式,插入等

:set number     加上等号显示   :set nonumber                       nu

:set ruler         右下角显示光标位置   :set noruler             ru

:set ignorecase   区分大小写查找           :set noignorecase           简写ic

:set hlsearch           高亮查找           hls

:set incsearch         边输入边查找

:set nowrapscan       文件结尾时停止搜索

:set backup        覆盖时生成一个~结尾的文件           :set nobackup

:set backupext=.bak


:set showcmd           显示未输入完整的命令

:set syntax=ON         使用高亮

缩进设置

:set autoindent         (no)ai 启动新行时自动缩进

:set smartindent      (no)si  比autoindent 更智能

:set cindent               (no)ci 设置c语言对应的缩进方式

tab设置

:set tabstop=x            ts  tab占多少个空格

:set shiftwidth=x        sw   每层缩进多少空格

:set expandtab          (no)et      tab以空格代替 ctrl-v-tab 则输入tab

:set softtabstop=x     开启et时,退格键删除x个空格

:set smarttab            (no)sta       在行首tab输入sw个空格,非行首输入ts个空格


命令:

:q  退出

:q! 强制退出

:qall

:qall!

:r (:read) 加文件名表示加载文件

:e    (:edit) 编辑,不加文件名表示重新打开当前文件

:e!     强制退出并编辑

:cn  下一项

:cN  上一项

:cprev    上一项

:cfirst   第一项

:clast   最后一项

:copen

:cclose

:options                设置各种选项如 :set showcmd

:scriptnames            列出所有配置文件

:syntax clear      临时关掉语法高亮

:syntax  off         完全关掉色彩

:w        (:write)

:wq

:wall

:wqall

:saveas 文件名         另存为

:file 文件名           修改文件名

:close           关闭窗口,但不会关闭最后一个窗口

:only             剩下当前窗口,其它关闭


/                    查找                     模式:     \<无字符          ^行头         $行尾       .任何字符     

?                 反向查找

.  重复上一个命令


功能点

1)使用标记

          m+字母,  回跳'+字母,:marks 列出所有标记

2)可视模式

v  

3)文本对象

daw 删除单词(包括空白),diw删除单词(不包括空白),cis 修改一个句子,cas修改一个句子(包括后面的空格)


4)文件列表  07.2


5)分割窗口   08


6)大范围的修改  10


7)  替换  12

:%s/word1/word2/g   全文搜索world1,并替换为world2

:'a,'bs/word1/word2/g  在第a行和第b行之间替换


8)ins - completion 自带的补全  需要ctags支持(tag补全时,其它补全可以不需要)

C - p      :以上一个单词补全,在弹出菜单中选择

C - n      :以下一个单词补全

C - y          :选择选中项并退出补全弹出菜单

C - e          :取消选择并退出补全弹出菜单

C - x - s       :拼写检查

C - x C - n       :当前文件内(当前buffer)匹配的关键字

C - x C - i         :当前文件以及所包含的文件 include的关键字

C - x C - l         :匹配的整行  line

C - x C - d       :定义或宏 define   在当前文件或include的文件里

C - x C - f       :补全文件名 file

C - x C - o      :全能补全 omni   可自定义补全插件, OmniCppComplete   就是C/C++的插件,需要ctags支持

C - x C - ]         :标签     在tags文件里搜索

C - x C - v            :vim 命令行    vim

C - x C - k         :字典文件内的单词

C - x C - t           :同义词词典文件内的单词

C - x C - u            :用户自定义补全

9)neocomplcache  补全插件

C - x C - f     :打开补全弹出菜单,与自带的补全不同

C - n             :和自带的一样

C - p             :和自带的一样

10)折叠

折叠方式: manual(手动),indent(缩进), expr(表达式),syntax(语法), diff(对比), marker(标志),如

:set foldmethod=syntax  语法折叠和缩进折叠 适合于编程

:set foldlevel=3  打开文件时,大于3倍的折叠被关闭

zf    :手动创建折叠, 如zfap创建段落折叠

zo   :打开         zO   :找开光标行内所有的折叠

zc   :关闭         zC    :关闭光标行内所有的折叠

zd   :删除        zD     :删除光标行内所有的折叠,与折叠方式有关,不能应用到于语法折叠

zr    :减少        ZR     :文件内所有的折叠打开

zm  :更多        ZM     :文件内所有的折叠关闭

zn   :禁示所有的折叠,找开所有被折叠的           zN:恢复所有的折叠,原来折叠的重新折叠            zi  :在zn和zN之间切换


11)ctag

ctags    *.c             shell里为所有.c文件创建tag文件(vim中则用:!ctags *.c)

ctags    -R             当前目录下遍历子目录,创建tag文件

:set tags=./tags   把tags文件加进来

:tag  startlist  跳转到startlist 定义处,:tag 不带名字,则是跳转到标签列表最上面的标签,等于<C - t>,可以在tag前面添加数字等于<数字C - t>。

;tag  /name    以模式搜索引用

:stag  name   类似:tag,但以分割窗口弹出,s表示分割,等于C - w - ]

:tags    列出所有引用

;tfirst                                   到第一个匹配

:[count]tprevious              到上一个匹配

:[count]tnext                      到下一个匹配

:tlast                                   到最后一个匹配

:tselect    name                列出所有引用,然后从其中选出一项

预览窗口的使用,就是打开一个窗口显示查找的定义,但光标并不会跳转到新窗口里

:ptag  name    或  C - w - }

:pedit   filename

:psearch   name

:pclose       关闭窗口


12)cscope插件:和ctag一样,但比ctag强大,它需要ctag配合使用

cscope   -Rbq    生成数据文件,  -R表示所有的子目录,  -b生成数据库后退出不启动自带界面, -q生成cscope.in.out和cscope.po.out加快索引速度

C - d   退出cscope

:cs add  /../cscope.out               把cscope数据文件加进来

:cs f s  name     :s - syntax  变量或类型, 查找name的引用,f是find的缩写, cs 改为scs则为打开一个新窗口显示搜索结果, 快捷键 C - \ - s

;cs f g name     :g - global  全局定义                                          C - \ - f

:cs f c name     :c - call  函数被调用的地方,                           C - \ - f

:cs f d name     :d - called 函数调用的函数,不知怎么用       C - \ - d

:cs f t  name      :t - text 文本                                                        C - \ - t

:cs f e name      :e - egrep  搜索                                                 C - \ - e

:cs f f  name       :f - file 文件                                                        C - \ - f

:cs f i  name       :i - include 包含此文件                                    C - \ - i

13)winmanager 和 taglist 插件

         将目录窗口和taglist窗口管理到一起, 需要tags 文件。:Tlist 打开和关闭taglist窗口。:wm  打开和关闭winmanager窗口

14)quickfix插件,可配合make,cscope等一起使用

:cw          打开窗口

:cn           (:cnext)移到下一项

:cp           (:cprevious)上一项

:cfirst      第一项

:clast      最后一项

:cc          更多出错信息

:clist       出错列表,:clist!   更详细的列表


15)A插件: 在源文件和头文件间切换

:A         跳转到源文件或头文件     :AS   在横向分割窗口中打开源文件或头文件          :AV      纵向分割窗口    :AT       tab标签页形式打开     :AN   (next)下一项匹对项

:IH        光标下文件名字,如include      :IHS             :IHV                  :IHT           :IHN


16)echofun插件:显示函数参数

        ctags -R  --fields=+lS     生成tag文件并导入。插入括号时,下方状态栏就会自动显示函数原型


原创粉丝点击