vim+vundle配置

来源:http://www.cnblogs.com/cchust/archive/2016/12/24/6218005.html
-Advertisement-
Play Games

Linux環境下寫代碼雖然沒有IDE,但通過給vim配置幾個插件也足夠好用。一般常用的插件主要包括幾類,查找文件,查找符號的定義或者聲明(函數,變數等)以及自動補全功能。一般流程都是下載需要的工具,然後在vimrc文件中配置載入工具選項,一直這麼用也沒覺得啥。但最近發現通過vundle工具可以很方便 ...


     Linux環境下寫代碼雖然沒有IDE,但通過給vim配置幾個插件也足夠好用。一般常用的插件主要包括幾類,查找文件,查找符號的定義或者聲明(函數,變數等)以及自動補全功能。一般流程都是下載需要的工具,然後在vimrc文件中配置載入工具選項,一直這麼用也沒覺得啥。但最近發現通過vundle工具可以很方便的管理多個插件,非常方便,介紹給大家。

1.安裝vim

./configure --prefix=/usr \
--with-features=huge \
--enable-pythoninterp \
--enable-rubyinterp --enable-luainterp \
--enable-multibyte --enable-sniff --enable-fontset \
--with-features=huge \
--enable-pythoninterp \
--enable-rubyinterp \
--enable-luainterp \
--enable-multibyte \
--enable-sniff \
--enable-cscope

make
sudo make install

2.安裝配置vundle
(1).vundle代碼全部托管在git上,首先下載源碼

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

(2).配置.vimrc文件

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
Bundle 'Valloric/YouCompleteMe'
Bundle 'ctrlpvim/ctrlp.vim'

每個Bundle聲明一個要用Vundle安裝的插件,上面的內容配置了插件YouCompleteMe和ctrlp.vim。
(3).使用vundle
通過命令:BundleList可以查看我們配置的插件,通過命令:BundleInstall,可以安裝所有BundleList顯示的插件,這個過程是全部由vundle代勞。如果需要刪除插件,先在~/.vimrc中移除插件聲明,然後執行命令:BundleClean即可。vundle管理插件的命令如下:
:BundleList -列舉出列表中(.vimrc中)配置的所有插件
:BundleInstall -安裝列表中全部插件
:BundleInstall! -更新列表中全部插件
:BundleSearch foo -查找foo插件
:BundleClean -清除列表中沒有的插件

3.配置cscope/ctags/taglist
(1).安裝配置Ctags
下載源碼安裝,在源碼目錄通過命令ctags -R * 生成索引文件,如果只針對部分文件類型,可以先通過find命令輸出文件列表,然後通過ctags -L參數來生成標簽,比如:

find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.ic" > tags.files
ctags -L tags.files

(2).安裝配置Taglist
Taglist依賴於ctags,實質只包含幾個配置文件,將taglist.txt和taglist.vim拷貝到指定目錄

$cd taglist/
$cp doc/taglist.txt ~/.vim/doc
$cp plugin/taglist.vim ~/.vim/plugin/ 

(3).關聯ctags和taglist
在.vimrc中加入如下代碼:

let Tlist_Ctags_Cmd="/usr/bin/ctags"

vim中執行:Tlist可以在tag列表則表示安裝ok了。

(4).安裝配置cscope

find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.ic" > cscope.files
cscope -bkq -i cscope.files

-R: 在生成索引文件時,搜索子目錄樹中的代碼
-b: 只生成索引文件,不進入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件時,不搜索/usr/include目錄

(5).常用快捷鍵

cs add path/cscope.out (載入cscope索引文件)
cs find c|d|e|f|g|i|s|t name

s: 查找C語言符號,即查找函數名、巨集、枚舉值等出現的地方
g: 查找函數、巨集、枚舉等定義的位置,類似ctags所提供的功能
t: 查找指定的字元串
e: 查找egrep模式,相當於egrep功能,但查找速度快多了
d: 查找本函數調用的函數
c: 查找調用本函數的函數
f: 查找並打開文件,類似vim的find功能
i: 查找包含本文件的文件

(6).設置快捷鍵映射

nmap ffs :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap ffg :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap fft :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap ffe :cs find e <C-R>=expand("<cword>")<CR><CR>

4.vim常用的快捷鍵
(1)跳轉
% 跳轉到相配對的括弧
$ 跳轉至行尾
0 數字0,跳轉至行首
[] 跳往上一個函數的結束大括弧 (在函數中間時,調到函數頭)
][ 跳往下一個函數的結束大括弧 (在函數中間時,調到函數尾)
ctrl+b 向後翻一頁
ctrl+f 向前翻一頁
gg 跳轉到文件頭
GG 跳轉到文件尾

(2).編輯
set cursorline (顯示橫線,方便看清楚在哪一行)
set shiftwidth=2 (塊操作,選中塊,按下>表示向右移動2列,按下<表示向左移動2列)
Ndd (N為數字,表示刪除N行,類似剪切功能)
Nyy (N為數字,表示覆制N行)

(3).多標簽
:vsplit (垂直切分視窗,可以參考代碼)
ctrl+w (視窗切換)

(4).常用快捷鍵
Ngt (切換到第幾個標簽)
:tabc (關閉當前的tab)
:tabo (關閉所有其他的tab)
:tablast (最後一個tab)
:tabfirst (第一個tab)
:tabnext (下一個tab)
:tabpre (上一個tab)
gt,gT (在tab之間切換)

(5).快捷鍵映射

nmap ff1 1gt
nmap ff2 2gt
nmap ff3 3gt
nmap ff4 4gt
nmap ff5 5gt
nmap ff6 6gt
nmap ff7 7gt
nmap ff8 8gt
nmap ff9 9gt
nmap ffc :tabc<CR>
nmap ffo :tabo<CR>
nmap fff :tabfirst<CR>
nmap ffl :tablast<CR>
nmap ffn :tabnext<CR>
nmap ffp :tabpre<CR>

(6).其它
:so ~/.vimrc (動態載入vimrc修改)
:shell (vim與shell切換)
:exit (返回vim)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 不同於Windows 8應用,Windows 10引入了“漢堡菜單”這一導航模式。說具體點,就拿官方的天氣應用來說,左上角三條橫杠的圖標外加一個SplitView控制項組成的這一導航模式就叫“漢堡菜單”。 本文討論的是如何實現官方的這一樣式(點擊後左側出現一個填充矩形),普通實現網上到處都是,有需要的 ...
  • 一、概述 運行時變更就是設備在運行時發生變化(例如屏幕旋轉、鍵盤可用性及語言)。發生這些變化,Android會重啟Activity,這時就需要保存activity的狀態及與activity相關的任務,以便恢復activity的狀態。 為此,google提供了三種解決方案: 下麵會逐一介紹三種情況,其 ...
  • 當我們要在App實現功能:輸入地名,編碼為經緯度,實現導航功能。 那麼,我需要用到原生地圖中的地理編碼功能,而在Core Location中主要包含了定位、地理編碼(包括反編碼)功能。 在文件中導入 #import <CoreLocation/CoreLocation.h> 地理編碼: 地理反編碼: ...
  • 備註:oracle版本Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 說明:創建臨時表空間註意關鍵字和創建表空間有所差別,語句類似 關於創建語句解說請查看:http://blog.chinaunix.net/uid-20802110 ...
  • 1.地址 2.Units單位 1 配置大小單位,開頭定義了一些基本的度量單位,只支持bytes,不支持bit 2 對大小寫不敏感 3.includes包含 ...
  • 存儲過程語法、概念、介紹;如何處理並記錄複雜存儲過程中發生的錯誤 ...
  • 本文出處:http://www.cnblogs.com/wy123/p/6217772.html 字元串自身相加, 雖然賦值給了varchar(max)類型的變了,在某些特殊情況下仍然會被“截斷”,這到底是varchar(max)長度的問題還是操作的問題? 1,兩個不超過8000長度的字元串自身相加 ...
  • 隔離級別定義事務操作資源和更新數據的隔離程度,在SQL Server中,隔離級別隻會影響讀操作申請的共用鎖,而不會影響寫操作申請的互斥鎖。隔離級別控制事務在執行讀操作時: 在讀數據時是否使用共用鎖,申請何種類型的隔離級別; 事務持有讀鎖的時間 讀操作引用其他事務更新的數據行時,控制讀操作的行為: 被 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...