VIM源生linux代码编辑器使用

本文介绍的均为非常实用的vim使用技巧和配置技巧

内容from日常使用经验和网络

1. 索引工具ctags使用

参考:vim插件ctags的安装和使用_G_BrightBoy的专栏-CSDN博客

1.1 配置.vimrc

参考:强大的vim配置文件,让编程更随意 - ma6174 - 博客园

在启动vim时,当前用户根目录下的.vimrc文件会被自动读取

注意服务器的vimrc存放在etc/vim/vimrc目录,但不要试图修改它(没有权限)

在用户目录下添加.vimrc文件即可覆盖跟目录下的.vimrc配置

$vim ~/.vimrc

"tags=tags 会递归向上寻找到第一个tags
set tags=tags;
set tags+=~/data/work/wifi/wpa_supplicant-2.6/src/tags;
set tags+=~/data/work/wifi/wpa_supplicant-2.6/wpa_supplicant;
set tags+=~/data/work/linux-3.10/tags;

1.2 生成ctags

服务器需要安装了ctags,这一点可以通过在某一目录下执行ctags命令验证

进入目录,执行ctags -R,会生成当前目录及所有子目录文件的索引tags文件

指定所选中的目录生成tags

ctags * -R kernel/kernel_sdk/ modules/

1.3 定义跳转

跳转至变量和函数的定义处

ctrl + ]

返回跳转前位置

ctrl + o/t

1.4 显示历史跳转路径

在分析代码路径时很有用

:tags

1.5 代码补全功能

参考:vim基础知识和常用命令_行者-CSDN博客

命令功能
ctrl-p上一个补全
ctrl-n下一个补全
ctrl-e停止补全并回到原来录入的文字

2. 头文件引用路径

2.1 默认头文件路径

默认查找库文件路径为: /usr/include/

//默认路径为  /usr/include/
#include <stdio.h>     //C标准库,用户空间调用
#include <linux/fs.h>  //内核编程可以引用的库
  1. C标准库(用户空间编程)直接存放在该路径下

  2. 驱动编程(内核空间编程)时引用的系统头文件库在默认路径下的linux文件夹中

  3. /usr目录存放用户目录、用户库等

2.2 头文件跳转

修改用户目录.vimrc

"默认路径 /usr/include
set path+=/usr/src/linux-headers-3.5.0-23/include/linux;
  • vim中光标指向头文件名,然后按g + f就可以了

  • 如# include <fcntl.h>,则光标定位到f处,按g + f就跳到fcntl.h中了

3. 开始使用vim

基本命令操作网址:Linux vi/vim | 菜鸟教程

3.1 在vim中纵向选择内容

  • 按住alt键,然后按下鼠标左键

    • 可以纵向选中内容,非常有用的小技巧,很多其他的编辑器也支持这一操作

3.2 复制 &粘贴 &撤销

yy        #复制整行
p         #粘贴
:reg      #查看剪贴板中的内容,vim是将复制的内容暂存到寄存器中
u         #撤销上一步的操作
Ctrl+r    #恢复上一步被撤销的操作

3.3 查找 &统计 &替换

:%s/from/to/g    #替换所有行的from字段为to字段
:%s/yes//gn      #查找当前文件yes出现的数量

3.4 显示当前文件路径

  • 在vim的底部显示当前打开文件的绝对路径

1          //先按1
Ctrl + G   //然后同时按下Ctrl G

 3.5 批量缩退、缩进

  • 命令模式下,输入“行号1,行号2>”,为统一缩进一个tab键;<为缩退

  • “行号1,行号2»”缩进两个tab键;但是是以4个空格代表一个tab键的

:1,9>>     //1到9行缩进两个tab键

3.6 选中连续的整个单词

  • shift + 8

"语法高亮
:set hlsearch

3.7 Taglist使用

:Tlist
  • enter键(Tlist):跳转标签对应的代码定义位置(光标跳转到代码窗格)

  • p(Tlist):跳转标签对应的代码定义位置(光标仍停留在Tlist窗格)

  • o(Tlist):新建一个代码窗口,同时跳转标签到代码定义位置(光标移动到新窗格)

3.8 dos文件格式转unix

dos2unix filename
  • 方法二:vim打开文件

:set ff         #查看当前文件格式
:set ff=unix    #修改为unix文件格式

3.9 快速移动光标

  • 光标快速移动到每个空格的下一个连续字符串开头,在阅读代码时很好用

ctrl + 左右按键
  • 快速切换代码位置

ctrl+o      #后退
ctrl+i      #前进

3.10 转换空格到tab键

  • 将4个空格转换成一个tab按键

  1. 用vim打开待转换的文件

  2. 依次输入下方的命令

:set ts=4         //设置把4个空格转换成1个tab按键
:set noexpandtab
:%retab!

3.11 重载vim已经打开的文件

  • 如果文件同时被多个编辑器打开,在不关闭vim重新打开文件的前提下重载文件

:e           #to reload the file

3.12 vimdiff

vimdiff  FILE_LEFT  FILE_RIGHT

dp           #(diff "put")
             #如果希望把一个差异点中当前文件的内容复制到另一个文件里,可以使用命令
             
do           #(diff "get",之所以不用dg,是因为dg已经被另一个命令占用了)
             #如果希望把另一个文件的内容复制到当前行中,可以使用命令
             
zo           #(folding open,之所以用z这个字母,是因为它看上去比较像折叠着的纸)
             #临时展开被折叠的相同的文本行
             
zc           #(folding close)
             #重新折叠

IBM Developer 正在整合其语言站点组合。 – IBM Developer

4. 多vim同时工作

  • 我们经常需要使用vim在不同目录下的code间切换

  • 将vim置于后台,切换回shell,进一步通过快捷键在多个vim窗格中切换

4.1 将vim置于后台

ctrl + z
  1. 将当前的vim置于后台

  2. 然后可以去别的目录再打开一个

  3. 通过jobs命令可以查看哪些vim在后台

  4. 最后打fg序号,将需要的vim置于前台

4.2 vim同时显示和切换多个文件

  • 如果在终端中还没有打开窗口
$ vim -o file1 file2    //上下两个窗口
$ vim -O file1 file2    //左右两个窗口
  • 如果vim已经打开了一个文件,再打开其他窗口

:sp file   //上下分割窗口
:vs file   //左右分割窗口
:open file //打开新的文件,可以通过ctrl+6 或 bn\bp等跳转
  • 在split打开的多个窗格之间切换
[ctrl_w] + 方向键    //切换到其他的窗格
[ctrl_w_w]           //依次向后切换到下一个窗格中
[ctrl_w_t]           //t:top直接跳转到左上角窗口
[ctrl_w_b]           //b:bottom直接跳转到右下角窗口
:q                   //关闭光标所在窗口
:qa                  //关闭所有窗口
  • 同一个窗口的交替文件切换
ctrl + 6    //下一个文件
:bn         //下一个文件
:bp         //上一个文件
  •  显示vim已打开文件列表
:tabs    #查看所有打开的标签页
  • 显示vim缓冲区中的文件列表 
:ls        #列出缓冲区的全部文件   +表示已经修改  #表示前一次编辑的文档  %编辑中的文档
:bX        #切换到X文档
:bwX       #完全关闭某个文件缓存

4.3 调整vim分割窗口大小

  • 通过加大数字调节光标所在窗格的大小。

:vertical res 20     //左右窗口调节宽度  20标识全部窗口长度的20%
:res 20              //上下窗口调节宽度
[ctrl_w] + '='       //恢复均等

4.4 显示当前文件夹下的目录树

  • 打开新窗口,并显示当前文件夹下的目录树

:Ve
  • 如果想指定键盘触发该功能,则在.vimrc中加入

map <F3> :Ve .<CR>

5. vim配置问题Q&A

5.1 方向键上方的功能键无法正常使用

  • Session→Terminal→Emulation 中的风格选择Linux即可

6. 我的.vimrc配置

"vim更改注释颜色为天蓝色
hi comment ctermfg=6

set tags=tags;

"语法高亮
set hlsearch

"显示行数
set nu

"每一个tab键为8个空格长
set tabstop=8
"保持换行时自动缩进1个tab
"与tabstop保持数值一致,在换行时自动缩进一个tab,否则是对应数量的空格
set shiftwidth=8

"默认打开Taglist
let Tlist_Auto_Open=1

"在右侧窗口中显示taglist窗口
let Tlist_Use_Right_Window = 0

"列出当前目录文件
map <F2> :Ve .<CR>
map <F3> :vertical res 150<CR>
map <F4> :vertical res 80<CR>

"搜索忽略大小写
set ignorecase

" 在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\

"只同时显示1个文件的tag
let Tlist_Show_One_File=1


"自动补全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
        if getline('.')[col('.') - 1] == a:char
                return "\<Right>"
        else
                return a:char
        endif
endfunction
filetype plugin indent on
"打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值