做者:JackTian
微信公衆號:傑哥的IT之旅(ID:Jake_Internet)c++
Vim對程序員來講,都不陌生。那究竟有沒有什麼方法能夠更高效的學習 Vim 呢?確定是有。那麼,今天就跟你們介紹一款開源項目:PacVimgit
PacVim 是什麼?
PacVim是一個讓你經過玩遊戲學習 Vim 命令的遊戲,你只須要移動pacman 綠色光標來突出顯示遊戲板上的每一個單詞,同時避免出現紅色障礙物。PacVim 來自 Github 開發者:Jamal Moon,爲了幫助本身學習 VIM,讓學習變的更加輕鬆,所以也就開發出了這款遊戲。程序員
開發者 Jamal Moon
PacVim 創建的目的
VIM 是編輯代碼的好工具,但包括Jamal Moon在內的許多人都在艱難的學習中掙扎,同時也並無找到一種有趣的方法來深刻了解 VIM 命令,所以 PacVim 這款遊戲就誕生了。受經典 PacMan 的啓發,它將給任何人以 VIM 命令進行大量練習的同時,還給你們帶來了不少樂趣。
下載並安裝 PacVim
Mac OS Xgithub
PacVim 已經編譯爲 HomeBrew 包,若是你是 mac 用戶,可執行以下命令進行安裝。docker
$ brew install pacvim
Linux編程
下載,編譯和安裝 GNU ncurses(圖形庫)vim
GNU ncurses 是提供 API 的編程庫,容許程序員以與終端無關的方式編寫文本用戶界面。微信
以 Ubuntu 爲例,可在終端中執行命令:dom
$ sudo apt-get install libncurses5-dev
或經過源碼包的方式解壓,編譯,安裝;(源碼包版本下載地址:http://ftp.gnu.org/pub/gnu/ncurses/)ide
$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz $ tar xzf ncurses-5.7.tar.gz $ cd ncurses-5.7 $ ./configure --prefix=/opt/ncurses $ make && make install $ ls -la /opt/ncurses
或者經過 git 的方式進行安裝;
# git clone https://github.com/jmoon018/PacVim.git 正克隆到 'PacVim'... remote: Enumerating objects: 627, done. remote: Total 627 (delta 0), reused 0 (delta 0), pack-reused 627 接收對象中: 100% (627/627), 3.20 MiB | 22.00 KiB/s, 完成. 處理 delta 中: 100% (341/341), 完成. # cd PacVim # ls COPYING COPYING.LESSER Dockerfile gifs Makefile maps README.md src # make install g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread -c -o src/avatar.o src/avatar.cpp g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread -c -o src/ghost1.o src/ghost1.cpp g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread -c -o src/helperFns.o src/helperFns.cpp g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread -c -o src/game.o src/game.cpp g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread -c -o src/globals.o src/globals.cpp g++ -std=c++11 -DMAPS_LOCATION='"/usr/local/share/pacvim-maps"' -pthread src/avatar.o src/ghost1.o src/helperFns.o src/game.o src/globals.o -o pacvim -lncurses -lpthread install -Dm755 pacvim /usr/local/bin/pacvim install -d /usr/local/share/pacvim-maps install -t /usr/local/share/pacvim-maps maps/map0.txt maps/map1.txt maps/map5.txt maps/map7.txt maps/map2.txt maps/map9.txt maps/map6.txt maps/map3.txt maps/map4.txt maps/map8.txt
使用 Docker
也能夠使用Docker 鏡像來運行,直接執行以下代碼,就能夠啓動 PacVim 遊戲了。
# docker run -it freedomben/pacvim [LEVEL_NUMBER] [MODE]
LEVEL_NUMBER 取值範圍爲 0-9,數字越大,難度越高。
MODE 可選 N 或 H,N 表示 Normal(正常難度);H 則表示 Hard(困難)。
PacVim 怎麼玩?
若是你是在 Ubuntu 環境下安裝的PacVim,可直接執行以下命令進行啓動遊戲。
$ pacvim 8 n
PacVim 的目標與 PacMan 類似,必須在終端下啓動PacVim 遊戲,並在屏幕上運行全部字符,同時避免出現紅色G的障礙。
PacVim 有兩個特殊的障礙:
一、不能進入牆壁(黃色),需必須使用 vim 指定命令進行跳過它們。
二、若是踩波浪號字符(cyan ~),則會輸掉!
PacVim 地圖文件
PacVim 的地圖文件是從/usr/local/share/pacvim-maps文件夾中的文本文件加載的,安裝完成後,能夠調用來使用maps文件夾make MAPDIR=maps。
每一個文本文件的名稱都是採用map#.txt的格式,其中#表明數字,例如0、一、九、14等;並確保在GLOBALS.CPP中更改了NUM_OF_LEVELS個,不然將沒法加載新的地圖,等於最高的地圖編號。
在地圖文本文件中,牆壁用&符號表示#,而波浪號用~表示,必須限制地圖的邊界並使其封閉。
PacVim 遊戲示意圖
獲勝條件:使用vim命令將光標移至字母上方並突出顯示,在全部字母顯示後,將贏得並進入下一關。
失敗條件:若是觸碰到障礙物(紅色G)或波浪號字符,將會失敗。若是您的生命少於0,則會輸掉整個遊戲。
PacVim 項目地址
若是你們對這個項目感興趣並想經過這個項目學習鞏固一下 Vim 知識,能夠去體驗一下。
Github 地址:https://github.com/jmoon018/PacVim