vim 中Ctags的安裝和使用

Ctags是一個用來為源文件中的標識符(如變量、函數、類成員、宏定義等)創建索引文件的程序。這些tags文件能被編輯器或其它工具用來快速查找定位源代碼中的符號(tag/symbol),如變量名,函數名等。

?

Tags文件中包括這些對象的列表:

1、用#define定義的宏

2、枚舉型變量的值

3、函數的定義、原型和聲明

4、名字空間(namespace)

5、類型定義(typedefs)

6、變量(包括定義和聲明)

7、類(class)、結構(struct)、枚舉類型(enum)和聯合(union)

8、類、結構和聯合中成員變量或函數

?

使用說明:

1、安裝:sudoapt-get install ctags

2、移到相應目錄:cd/usr/include

3、生成索引文件:sudoctags -R

4、打開要查找的變量名或函數名:vi-t tag ?(請把tag替換為您欲查找的變量或函數名)例如:vi –t size_t

5、使用ctrl+]跟進,使用ctrl+t后退

?

跳轉快捷鍵:

ctrl-] :跳轉至光標所在對象定義之處

ctrl-t :返回跳轉前位置

[n]ctrl-t :[n]為數字,向回跳轉n次;等價于重復n次ctrl-t操作

?

命令解釋:

“$ctags –R *”:“-R”表示遞歸創建,也就包括源代碼根目錄(當前目錄)下的所有子目錄。“*”表示所有文件。這條命令會在當前目錄下產生一個“tags”文件,當用戶在當前目錄中運行vi時,會自動載入此tags文件。

定位這些對象的方法:

“$vi –t tag” :在運行vim的時候加上“-t”參數,例如:[/usr/src]$vim -t main

這個命令將打開定義“main”(變量或函數或其它)的文件,并把光標定位到這一行。

最方便的方法是把光標移到變量名或函數名上,然后按下“Ctrl+]”,這樣就能直接跳到這個變量或函數定義的源文件中,并把光標定位到這一行。用“Ctrl+t”可以退回原來的地方。即使用戶使用了N次“Ctrl+]”查找了N個變量,按N次“Ctrl+t”也能回到最初打開的文件,它會按原路返回。

?

設置索引文件的位置:

Vim在運行過程中需要知道tag的索引文件位置,如果不指定的話,Vim會在當前目錄下尋找名為tags的文件作為tag索引文件。

在.vimrc添加:settags=/home/lfy/XX/XX/tags這里一定要用絕對路徑。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537173.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537173.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java并發編程之AbstractQueuedSynchronizer(AQS)源碼解析

自己一個人隨便看看源碼學習的心得,分享一下啦,不過我覺得還是建議去買本Java并發編程的書來看會比較好點,畢竟個人的理解有限嘛。 獨占鎖和共享鎖 首先先引入這兩個鎖的概念:獨占鎖即同一時刻只有一個線程才能獲取到鎖&#xf…

采集用python還是火車頭_我才知道爬蟲也可以醬紫--火車采集器

我才知道爬蟲還可以這樣—火車采集器的使用說在前面額。。。好吧,我這一個三毛錢的屌絲也開始步入實習階段了,在北京其實也挺好的,雖說壓力大,但是今后就業機會也相對而言大一些。好了,說回今天的主題,之前…

mvn 使用中的錯誤

出現這種錯誤的時候:mvn Error building POM may not be this projects POM,報的是那個jar 包,就刪除那個jar 包,重新mvn clean install .ok

Java并發編程之FutureTask源碼解析

上次總結一下AQS的一些相關知識,這次總結了一下FutureTask的東西,相對于AQS來說簡單好多呀 之前提到過一個LockSupport的工具類,也了解一下這個工具類的用法,這里也鞏固一下吧 /*** Makes available the permit for the given th…

java 刪除二維數組中的null_避免在Java中檢查Null語句

1.概述通常,在Java代碼中處理null變量、引用和集合很棘手。它們不僅難以識別,而且處理起來也很復雜。事實上,在編譯時無法識別處理null的任何錯誤,會導致運行時NullPointerException。在本教程中,我們將了解在Java中檢…

Java并發編程之并發容器ConcurrentHashMap(JDK1.7)解析

最近看了一下ConcurrentHashMap的相關代碼,感覺JDK1.7和JDK1.8差別挺大的,這次先看下JDK1.7是怎么實現的吧 哈希(hash) 先了解一下啥是哈希(網上有很多介紹),是一種散列函數,簡單來…

帶控制端的邏輯運算電路_分別完成正整數的平方、立方和階乘的運算verilog語言...

練習:設計一個帶控制端的邏輯運算電路,分別完成正整數的平方、立方和階乘的運算。 //--------------myfunction---------- modulemyfunction(clk,n,result,reset,sl); output[6:0]result; input[2:0] n; input reset,clk; input [1:0] sl; reg[6:0]resul…

Java并發編程之并發容器ConcurrentHashMap(JDK1.8)解析

這個版本ConcurrentHashMap難度提升了很多,就簡單的談一下常用的方法就好了,可能有些講的不太清楚,麻煩發現的大佬指正一下 主要數據結構 1.8將Segment取消了,保留了table數組的形式,但是不在以HashEntry純鏈表的形式…

simulink顯示多個數據_如何在 Simulink 中使用 PID Tuner 進行 PID 調參?

作者 | 安布奇責編 | 胡雪蕊出品 | CSDN(ID: CSDNnews)本文為一篇技術干貨,主要講述在Simulink如何使用PID Tuner進行PID調參。PID調參器( PIDTuner)概述1.1 簡介使用PID Tuner可以對Simulink模型中的PID控制器,離散PID控制器,兩自由度PID控制…

Java并發編程之堵塞隊列介紹以及SkipList(跳表)

堵塞隊列 先了解一下生產者消費者模式: 生產者就是生產數據的一方,消費者就是消費數據的另一方。在多線程開發中,如果生產者處理速度很快,而消費者處理速度很慢,那么生產者就必須等待消費者處理完,才能繼…

python生成list的時候 可以用lamda也可以不用_python 可迭代對象,迭代器和生成器,lambda表達式...

分頁查找#5.隨意寫一個20行以上的文件(divmod)# 運行程序,先將內容讀到內存中,用列表存儲。# l []# 提示:一共有多少頁# 接收用戶輸入頁碼,每頁5條,僅輸出當頁的內容def read_page(bk_list,n,endlineNone):startline …

數據挖掘技術簡介[轉]

關鍵詞: 關鍵詞:數據挖掘 數據集合 1. 引言  數據挖掘(Data Mining)是從大量的、不完全的、有噪聲的、模糊的、隨機的數據中提取隱含在其中的、人們事先不知道的、但又是潛在有用的信息和知識的過程。隨…

樹莓派安裝smbus_樹莓派使用smbus不兼容問題(no module named 'smbus')

樹莓派使用smbus不兼容問題(no module named ‘smbus’)python3.5–3.6可以使用smbus2代替smbus1. 先參考以下方法:github討論樹莓派社區2.Pypi上可以下載smbus2smbus2PyPi介紹:當前支持的功能有:獲取i2c功能(I2C_FUNCS)read_bytewrite_byter…

Java并發編程之線程池ThreadPoolExecutor解析

線程池存在的意義 平常使用線程即new Thread()然后調用start()方法去啟動這個線程,但是在頻繁的業務情況下如果在生產環境大量的創建Thread對象是則會浪費資源,不僅增加GC回收壓力,并且還浪費了時間,創建線程是需要花時間的&…

面向過程的門面模式

{*******************************************************}{ }{ 業務邏輯一 }{ }{ 版權所有 (C) 2008 陳…

Java并發編程之線程定時器ScheduledThreadPoolExecutor解析

定時器 就是需要周期性的執行任務,也叫調度任務,在JDK中有個類Timer是支持周期性執行,但是這個類不建議使用了。 ScheduledThreadPoolExecutor 繼承自ThreadPoolExecutor線程池,在Executors默認創建了兩種: newSin…

python xml轉換鍵值對_Python 提取dict轉換為xml/json/table并輸出

#!/usr/bin/python#-*- coding:gbk -*-#設置源文件輸出格式import sysimport getoptimport jsonimport createDictimport myConToXMLimport myConToTabledef getRsDataToDict():#獲取控制臺中輸入的參數,并根據參數找到源文件獲取源數據csDict{}try:#通過getopt獲取…

應用開發框架之——根據數據表中的存儲的方法名稱來調用方法

功用一:在框架里面根據存儲在數據表中的方法名來動態調用執行方法。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 class(TForm) Button1: TButton; procedu…

Spring IOC容器組件注入的幾種方式

整理一下之前Spring的學習筆記,大致有一下幾種Spring注入到容器中的方法: 1)、配置在xml的方式。 2)、開啟包掃描ComponentScan使用Component,Service,Controller,Repository(其實后三個都繼承…

我們是如何拿下Google和Facebook Offer的?

http://posts.careerengine.us/p/57c3a1c1a09633ee7e57803c 大家好,我是小高,CMU CS Master,來Offer第一期學員,2014年初在孫老師的帶領下我在幾個月的時間內進入了Yahoo,并工作了近2年。2016年初,Yahoo工作…