2011-10-13 50 views
2

我想在可視模式下映射ctrl + a以選擇並複製當前緩衝區中的所有文本。Vim映射以可視模式複製所有文本

基本思想是執行:%y *(將所有緩衝區複製到剪貼板)。因此,映射應該是:XMAP:%Y *(XMAP僅用於可視模式)

但是,每當我跑這個映射,這個輸出顯示:

E492: Not an editor command: '<,'>%y* 

而且,我覺得Vim的是正確的:-)。當視覺模式,按「:」,使得CMD線顯示這些奇怪的字符:

":'<,'>" 

唯一相關的一塊信息在哪裏可以找到這種模式(「<,」>)是那一個:http://vimdoc.sourceforge.net/htmldoc/cmdline.html#v_: (它並沒有幫助我)。

問題:我做錯了什麼(配置...)?有我的需要的另一個答案(複製所有文本到剪貼板)?

我運行的Vim 7.3,我只對你有所幫助設置nocompatible在我的vimrc

感謝, 湯姆

+2

'」 <,'>'裝置所選擇的區域。 –

+0

另請參閱':help v_:'關於那些「奇怪」的標記...... – Benoit

+1

@Sebastian PaaskeTørholm:爲了更準確,這意味着選擇延伸的*行*的範圍。 – Benoit

回答

7

用途:

xnoremap <whatever> :<c-u>%y*<return> 

附加CTRL - ü擦除命令行直到光標。

從VIM參考:

      *c_CTRL-U* 
CTRL-U Remove all characters between the cursor position and 
     the beginning of the line. Previous versions of vim 
     deleted all characters on the line. If that is the 
     preferred behavior, add the following to your .vimrc: > 
     :cnoremap <C-U> <C-E><C-U> 
+0

謝謝,這個伎倆。 – Tom

2

使用下面的映射:

nmap <C-A> ggVGy 

它猛拉所有當前文件。順便說一下,我不確定這正是你的意思。我不明白你爲什麼想要一個視覺映射。

+0

默認情況下,Ctrl + a在正常模式下綁定爲遞增數字。而且,我認爲視覺模式是我應該用來「選擇」文本的,不是嗎? – Tom

+0

@Tom:您使用可視化模式*選擇*文本,並使用'y'命令來複制(抽出)它。既然你的目標是要拉開,忘記視覺模式。 –

+1

順便說一句,你可以做同樣的事情,而不需要通過視覺模式:'ggyG'。 –