亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

帶上你的Vim,走!

geekidentity / 1881人閱讀

摘要:帶上你的,走下面講到的配置主要出自我自用的配置,感興趣的可以參考一鍵裝機(jī)之的幾乎所有配置都可以保存在一個(gè)文件中,因此把同步起來(lái),直接拷貝到相應(yīng)位置并指定,則可以恢復(fù)相應(yīng)的配置。

首發(fā)自簡(jiǎn)書(shū)

每個(gè)Vimer都有自己的一個(gè)配置,猶如每個(gè)劍客都有自己的一把劍(應(yīng)該是吧)。(爭(zhēng)?。┳鳛橐粋€(gè)傳說(shuō)中的全棧開(kāi)發(fā)者,換機(jī)器就像換衣服一樣頻繁;在“異國(guó)他鄉(xiāng)”的機(jī)器上,是否懷念那一套屬于你的指法呢?下面會(huì)講一下我在 Windows 上打包Vim的一些經(jīng)驗(yàn)。帶上你的Vim,走!

下面講到的配置主要出自我自用的Vim配置VimConf,感興趣的可以參考!

一鍵裝機(jī)之Vimrc

Vim的幾乎所有配置都可以保存在一個(gè)vimrc文件中,因此把vimrc同步起來(lái),直接拷貝到相應(yīng)位置并指定,則可以恢復(fù)相應(yīng)的Vim配置。所以很多Vimer的做法是建立一個(gè)Github倉(cāng)庫(kù)保存vimrc,在新的機(jī)器上只要Clone該倉(cāng)庫(kù)就可以將配置同步到該機(jī)器上。

得到配置文件后,還需要將該文件拷貝到對(duì)應(yīng)的位置并應(yīng)用,且可能還需要其他一些輔助文件。因此,為了一勞永逸,一般都會(huì)添加一個(gè)初始化腳本進(jìn)行“一鍵安裝”。而Linux和Windows上配置文件的位置還不太一樣,因此,往往就需要各自一個(gè)腳本了。

下面講講在Clone了配置文件后,Windows下的腳本文件應(yīng)該干些啥。

首先你得有GVim
where gvim > NUL 2> NUL
if %ERRORLEVEL% NEQ 0 (
    echo GVim is needed >&2
    set /A ret=1
    goto :end
)
for /f "tokens=*" %%i in ("where gvim 2^> NUL") do set vim_folder=%%i
if /I "%vim_folder:~-3%" EQU "bat" (
    findstr /b /c:"set VIM_EXE_DIR=" "!vim_folder!" > tmpvim_folder.txt 2> NUL
    set /p vim_folder=

通過(guò)where gvim獲得當(dāng)前GVim可執(zhí)行文件的路徑。有可能是一個(gè)啟動(dòng)腳本GVim.bat,因此需要進(jìn)一步分析該腳本,獲取GVim的真實(shí)路徑。

沒(méi)有GVim就沒(méi)有一切了,所以必須安裝好GVim。

其次你得有Git
where git > NUL 2> NUL

同樣,沒(méi)有Git也就沒(méi)有一切了,所以必須安裝好Git。

更新子模塊

我的vimrc中包含了一個(gè)配色子模塊 Detorte,因此這里需要初始化該模塊。

git submodule update --init > NUL 2> NUL

執(zhí)行后,配置根目錄下的detorte目錄會(huì)包含配色方案的相關(guān)文件,下面需要將這些文件拷貝到指定位置。

拷貝配色方案

因?yàn)槲沂褂玫氖亲约旱呐渖桨福赃@里需要將其拷貝到指定的位置,以便Vim能檢測(cè)到該方案。

set detorte_folder=%vimfiles_folder%colors
xcopy /Y /i detortecolors %detorte_folder% /s /e > NUL 2> NUL
安裝Vundle

我使用的是Vundle進(jìn)行Vim插件管理,所以為了之后能安裝Vim插件,這里需要把Vundle下載并安裝好。我們直接從Vundle的Github上Clone到指定目錄%vimfiles_folder%undleVundle.vim,這樣,后面可以直接在Vim中使用Vundle了。

set vundle_repo=https://github.com/VundleVim/Vundle.vim.git
set vundle_folder=%vimfiles_folder%undleVundle.vim
if not exist %vundle_folder% (
    git clone %vundle_repo% %vundle_folder% > NUL 2> NUL
    if %ERRORLEVEL% NEQ 0 (
        echo Failed to clone Vundle.vim >&2
        set /A ret=1
        goto :end
    )
)
安裝小工具

我們還需要一些小工具來(lái)輔助Vim這個(gè)大殺器。一個(gè)方便的做法是專(zhuān)門(mén)使用一個(gè)Github倉(cāng)庫(kù)來(lái)保存這些小工具。

Curl

Vundle需要使用curl.exe來(lái)進(jìn)行插件的搜索,所以我們需要下載curl.exe。我們會(huì)將這些需要的小工具提前下載并上傳到一個(gè)Github倉(cāng)庫(kù)中,這里call :clone_win_utils會(huì)將該倉(cāng)庫(kù)下載到一個(gè)臨時(shí)目錄中。另外,需要將可執(zhí)行文件拷貝到Vim的安裝目錄中,Vim才能檢測(cè)得到。

if not exist "%vim_folder%curl.exe" (
    call :clone_win_utils
    if !ERRORLEVEL! NEQ 0 (
        set /A ret=1
        goto :end
    )
    copy /Y %win_utils_folder%curl.exe "%vim_folder%" > NUL 2> NUL
    if !ERRORLEVEL! NEQ 0 (
        echo Failed to copy curl.exe, make sure you run this script as Administrator
        set /A ret=1
        goto :end
    )
)
Ag

ag.exe是一個(gè)比grep更好用的文件查找工具,在Windows下開(kāi)發(fā)更是讓人欲罷不能。另外,Vim的很多插件也會(huì)可以通過(guò)使用Ag來(lái)進(jìn)行加速。和Curl類(lèi)似,我們也是通過(guò)提前準(zhǔn)備好的倉(cāng)庫(kù)下載該工具,然后拷貝到Vim的目錄。

if not exist "%vim_folder%ag.exe" (
    call :clone_win_utils
    if !ERRORLEVEL! NEQ 0 (
        set /A ret=1
        goto :end
    )
    copy /Y %win_utils_folder%ag.exe "%vim_folder%" > NUL 2> NUL
    if !ERRORLEVEL! NEQ 0 (
        echo Failed to copy ag.exe, make sure you run this script as Administrator
        set /A ret=1
        goto :end
    )
)
Ctags

Ctags就不用多說(shuō)了,用Vim的都懂!類(lèi)似的處理方法。

if not exist "%vim_folder%ctags.exe" (
    call :clone_win_utils
    if !ERRORLEVEL! NEQ 0 (
        set /A ret=1
        goto :end
    )
    copy /Y %win_utils_folder%ctags.exe "%vim_folder%" > NUL 2> NUL
    if !ERRORLEVEL! NEQ 0 (
        echo Failed to copy ctags.exe, make sure you run this script as Administrator
        set /A ret=1
        goto :end
    )
)
GNU Global

結(jié)合Ctags使用,能夠反向查詢(xún)引用。類(lèi)似的處理方法。

if not exist "%vim_folder%gtags.exe" (
    call :clone_win_utils
    if !ERRORLEVEL! NEQ 0 (
        set /A ret=1
        goto :end
    )
    copy /Y %win_utils_folder%global "%vim_folder%" > NUL 2> NUL
    if !ERRORLEVEL! NEQ 0 (
        echo Failed to copy GNU Global, make sure you run this script as Administrator
        set /A ret=1
        goto :end
    )
)
markdown2ctags.py

這個(gè)Python腳本是為了使Tagbar插件支持Markdown語(yǔ)法,從而顯示大綱的,在vimrc中會(huì)使用到。

copy /Y markdown2ctags.py %vimfiles_folder% > NUL 2> NUL
拷貝vimrc

這個(gè)不用解釋了吧?

set vimrc_file=%USERPROFILE%\_vimrc
copy /Y .vimrc %vimrc_file% > NUL 2> NUL

至此,啟動(dòng)GVim,:VundleInstall安裝配置好的插件,就可以好好享受那熟悉的手指健美操了。

一鍵部署

對(duì)于遠(yuǎn)程桌面的服務(wù)器或者不能聯(lián)網(wǎng)的機(jī)器,上面提到的一鍵安裝就顯得不是很適用了。其實(shí),我們可以在已經(jīng)安裝好的機(jī)器上,生成一個(gè)“綠色”的GVim,帶上所有的配置和Vim插件,然后拷貝到別的機(jī)器上直接運(yùn)行即可。win_init.cmd portable會(huì)在根目錄下生成一個(gè)包含GVim的壓縮包。下面,我們?cè)敿?xì)說(shuō)一下其中的魔法。

mkdir %vim_portable_folder% 2> NUL

copy /Y .vimrc %vim_portable_folder%\_vimrc > NUL
set /A portable_ret=!portable_ret!+!ERRORLEVEL!

call :get_file_name "%vim_folder%" vim_exe_folder
xcopy /Y /i "%vim_folder%" "%vim_portable_folder%!vim_exe_folder!" /s /e > NUL
set /A portable_ret=!portable_ret!+!ERRORLEVEL!

call :get_parent_dir "%vim_folder%" vim_install_folder
xcopy /Y /i "!vim_install_folder!vimfiles" "%vim_portable_folder%vimfiles" /s /e > NUL
set /A portable_ret=!portable_ret!+!ERRORLEVEL!

xcopy /Y /i "%vimfiles_folder%" "%vim_portable_folder%vimfiles" /s /e > NUL
set /A portable_ret=!portable_ret!+!ERRORLEVEL!

新建一個(gè)目錄以存放綠色版的GVim;

拷貝vimrc;

拷貝GVim可執(zhí)行文件所在的目錄(即主程序);

拷貝GVim的安裝目錄;

拷貝vimfiles目錄,主要是把Vundle安裝好的插件和我們的Detorte配色拷貝上;

好了,現(xiàn)在將這個(gè)目錄打包好后拷貝到別的機(jī)器上就能有一份一模一樣的Vim配置了。

完美主義者

為何不添加一個(gè)啟動(dòng)快捷方式來(lái)啟動(dòng)GVim呢?

下面的腳本會(huì)生成一個(gè)init.cmd腳本。在目的機(jī)器上運(yùn)行該腳本一次,就會(huì)往系統(tǒng)盤(pán)添加一個(gè)啟動(dòng)腳本。

(echo @echo off
     echo setlocal EnableExtensions
     echo set dest_gvim=C:Windowsgvim.bat
     echo if exist "%%dest_gvim%%" EXIT /B 0
     echo set cur_dir=%%~dp0
     echo if /I "%%cur_dir:~-1%%" EQU "" set cur_dir=%%cur_dir:~0,-1%%
     echo set exe_dir=%%cur_dir%%!vim_exe_folder!
     echo echo @echo off ^> %%dest_gvim%%
     echo echo start "" "%%exe_dir%%gvim.exe" %%%%* ^>^> %%dest_gvim%%
     echo pause
    ) >> "%init_cmd%"
結(jié)語(yǔ)

從此,Vimer和Vim幸福地生活在一起!

但是,有一天,Vimer又不開(kāi)心了,聽(tīng)說(shuō)是要寫(xiě)Markdown筆記?好吧,出門(mén)左轉(zhuǎn):Vim與Markdown,實(shí)現(xiàn)鍵不離手!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/24933.html

相關(guān)文章

  • 前端周刊第41期

    摘要:注意本文為前端周刊早期整理的舊文重發(fā),不過(guò)大部分內(nèi)容并沒(méi)有過(guò)時(shí),已經(jīng)看過(guò)的同學(xué)可以直接去文末訂閱前端周刊微信公眾號(hào)。想和我面對(duì)面交流掃下方二維碼添加我為好友。 注意:本文為前端周刊早期整理的舊文重發(fā),不過(guò)大部分內(nèi)容并沒(méi)有過(guò)時(shí),已經(jīng)看過(guò)的同學(xué)可以直接去文末訂閱前端周刊微信公眾號(hào)。 文章教程 手把手教你玩轉(zhuǎn) Github Pages 24ways.org 有人說(shuō) Github 就是工程師的...

    ixlei 評(píng)論0 收藏0
  • 前端周刊第41期

    摘要:注意本文為前端周刊早期整理的舊文重發(fā),不過(guò)大部分內(nèi)容并沒(méi)有過(guò)時(shí),已經(jīng)看過(guò)的同學(xué)可以直接去文末訂閱前端周刊微信公眾號(hào)。想和我面對(duì)面交流掃下方二維碼添加我為好友。 注意:本文為前端周刊早期整理的舊文重發(fā),不過(guò)大部分內(nèi)容并沒(méi)有過(guò)時(shí),已經(jīng)看過(guò)的同學(xué)可以直接去文末訂閱前端周刊微信公眾號(hào)。 文章教程 手把手教你玩轉(zhuǎn) Github Pages 24ways.org 有人說(shuō) Github 就是工程師的...

    yanwei 評(píng)論0 收藏0
  • 完蛋,公司被一條 update 語(yǔ)句干趴了!

    摘要:假設(shè)有兩個(gè)事務(wù)的執(zhí)行順序如下可以看到,這次事務(wù)的語(yǔ)句被阻塞了。這是因?yàn)槭聞?wù)的語(yǔ)句中條件沒(méi)有索引列,所有記錄都會(huì)被加鎖,也就是這條語(yǔ)句產(chǎn)生了個(gè)記錄鎖和個(gè)間隙鎖,相當(dāng)于鎖住了全表。 ...

    wendux 評(píng)論0 收藏0
  • VPS搭建個(gè)人Hexo博客

    摘要:原文地址作為一個(gè)天天造的人,必然要經(jīng)常訪問(wèn)谷歌等網(wǎng)站,所以前些日子買(mǎi)了自己搭了梯子。今天就跟大家分享一下,如何使用搭建個(gè)人博客。創(chuàng)建用戶(hù),建立裸庫(kù),配置。 原文地址:https://www.xksblog.top/use-V... 作為一個(gè)天天造BUG的人,必然要經(jīng)常訪問(wèn)谷歌等網(wǎng)站,所以前些日子買(mǎi)了VPS自己搭了梯子。但如果只是用VPS來(lái)搭梯子那就太浪費(fèi)了,所以又折騰了一天,把自己之...

    warmcheng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<