2017-05-16 171 views
2

我最近剛開始使用Vim,剛安裝了NERDTree(一個導航文件的插件)。 訪問該插件的命令是:NERDTree,所以我認爲通過給該命令分配一個開始學習映射是一個不錯的主意。Vim簡單映射

所以我加入到我的.vimrc文件以下行:map :nt :NERDTree - 但是當我在一個VIM文件(即使重新啓動後),我收到以下錯誤消息鍵入:ntnot an editor command: nt

我也嘗試添加映射通過鍵入:map :nt :NERDTree直接編輯文件,但是當我嘗試使用該命令時它返回了相同的錯誤。

我檢查了答案:What is the difference between the remap, noremap, nnoremap and vnoremap mapping commands in vim?,所以在我看來,:map(相對於noremap等)是一個很好的命令。

輸入原始命令時,插件工作正常。

我在做什麼錯? (對於noob問題抱歉)

回答

4
  • :NERDTree是一個命令,而不是映射,所以沒有理由在這裏創建遞歸映射。

  • :map太過分了。您應該使用:<mode>map(用於遞歸映射)或:<mode>noremap(用於nn遞歸映射)。

  • 您在映射結束時缺少一個<CR>來告訴Vim實際執行:NERDTree命令。

在這種特定的情況下,正確的映射是:

nnoremap :tn :NERDTree<CR> 

但映射的東西:<anything>是不是一個好主意,因爲每當你嘗試執行Ex命令將引入超時。這意味着你需要找到另一個組合。爲什麼不是<Space>n

nnoremap <Space>n :NERDTree<CR> 
+0

優秀,thx很多!快速提問你的意思是什麼,「因爲每當你嘗試執行Ex命令時都會引入超時」? –

+0

':'是使您處於命令行模式的正常模式命令。如果你在普通模式下把某些東西映射到':',比如':tn',Vim需要決定你真正想要做什麼並且使用超時。如果你是一個快速的打字員,你可能不會注意到它,但如果你是一個普通的人,你一定會注意到它。 – romainl

1

Here 你可以看出,vim的映射工作和外觀如何;)。不要忘記在使用之前使用新的.vimrc。

+0

好的thx。 「使用前不要忘記使用新的.vimrc文件」是什麼意思? –

+0

他意味着如果你添加一個映射到你的.vimrc,你需要在映射生效前重新啓動vim或者源文件.vimrc:':source〜/ .vimrc' – nickspoon

+0

@jimbasquiat太好了!如果您認爲這個答案是正確的,請將該答案標記爲正確或請注意。關於你的另一個問題:每個rc文件,哪一個都不重要,需要在更新之後找到。所以,如果您在'.vimrc'文件中有任何更改,則需要獲取它。如果您的'pwd'是您的'.vimrc'存在的地方:'source .vimrc'或簡寫'',您必須輸入您的終端。 .vimrc'。只有你的更新將被vim識別。 –

2

通過您的映射,它將需要多次擊鍵。你可以使用一個單一的鑰匙,如F2

nnoremap <F2> :NERDTreeToggle<CR> 

這將在按下F2 切換打開/關閉NERDTree並節省您的一些關鍵中風。