終於掌握vim的寄存器和系統剪貼板的使用了- 要安裝vim-X11包


vim的系統剪貼板

vim的 加號寄存器 "+ 是和系統剪貼板 相關聯的. 加號寄存器和系統剪貼板之間的內容, 可以互相切換.

  • 要把 加號寄存器中的內容, -> 放到/轉移到系統剪貼板中, 使用的是 "+y, (即: "+ => clipboard)
  • 而要把 系統剪貼板 中的內容, 放到/轉移到 加號寄存器, 或者是直接放在vim的光標處, 使用的是 "+p , 或者 "+gp. ( 即: clipboard => "+)

xdebug無所謂服務器端還是 客戶端, 因為xdebug是php的一個 擴展extension, 一個php的so模塊.

他會在客戶端瀏覽器連接時, 會自動監視. 並啟動調試.

Ascii的控制字符, 是指 0~ 31, 和127 表示的字符, 共33個"不可見字符"

其中0, 是表示NUL, null字符.
其他控制字符, 可以用ctrl+一個字母 (A ~ Z) 或符號來表示, 比如: ctrl+J: ^J, 就表示換行符 LF (line feed)

vim中幾個常見的不可見字符: ^J 0x0A, LF 表示換行, ^M表示回車, ^H表示退格 BS, 0x08, ^I表示水平制表符HT, 0x09, ^@ 表示 NULL.


vim的寄存器?

  1. 寄存器 用引號來表示, 引號表示引用, 表示 寄存的意思. 查看寄存器用:reg命令

  2. "", 兩個引號, 表示的無名 unnamed register, 存放最后一次操作的內容(可能是復制的,也可能是刪除的內容), 而且可以是行內的內容, 也可以是 包含換行在內的 "整行內容"

  3. "0 到 "9 共10個數字寄存器, 其中 "0 緩存最近一次復制的內容. "1到"9 緩存最近9次的刪除內容, 但是數字寄存器都要求是"整行"的內容. 即一定要包含^J

  4. 具名寄存器(跟前面的無名寄存器相對應), 即從 "a 到 "z 到 "A, 到 "Z, 我們操作存放內容的時候, 主要就是使用這些 "具名"寄存器.

  5. 只讀寄存器: ": 表示最后依次執行的命令, "% 表示當前文件名

  6. 行內(刪除)寄存器, "- 緩存的是 在一行的內部 刪除的內容.

  7. 行內插入寄存器 ". 其中點號表示插入增加的意思. 他會把期間press的任何鍵都記錄下來,包括BS ^@等退格, 回車等都作為符號記錄下來.

  8. 模式寄存器 "/ 緩存的是最近依次進行模式搜索的內容.

  9. 黑洞寄存器 "_ 表示徹底刪除內容, 不進行緩存.

vim中的p命令, 表示的是put, 放置, 即粘貼的意思. 是從 寄存器 unnamed 中 進行 put. p和gp的意思都是粘貼, 不同的是 p是在當前光標前進行粘貼, gp是 在粘貼后, 將光標移動到粘貼內容之后.

選擇及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI選擇文本,可用於與外部應用交互,使用前提為系統剪切板(clipboard)可用, 使用vim --version來檢查. vim --version | grep 'clipboard'


選擇與拖放寄存器, 共3個, 即: 星號寄存器"* 加號寄存器"+ 約等於寄存器"~

表示最后一行, 在不同的模式下要用不同的符號:
在normal下, 最后一行, 用G表示, 而$表示的是 當前行的末尾
在命令模式下, 最后一行,就是用$ 表示的.

yy命令可以在normal下使用, 但是在命令模式下就不能用yy命令, 會報錯說沒有yy這個命令, 這時應該用 y命令

要創建具名寄存器, 可以有兩種方式

一種是在normal模式下, 先用v/V命令在visual模式下, 選擇好內容, 然后 在normal下, 用 "ay 中間的a可以是其他任何一個 寄存器名稱 , 包括加號寄存器等.
另一種是, 在命令模式下, 直接用 冒火命令, :10,15y"z, 即將10,15行的內容復制到z寄存器中. 這個里面 的引號 可以不用, 但是如果省略的話, y后面一定要有空格, 即: :10,15y z

vim怎樣才能使用 系統剪貼板?

你可以卸載vim , 然后下載源碼, 重新編譯安裝, 配置時使用 ./configure --with-features=huge 就可以使用加號寄存器和系統剪貼板了
但是, 不必這樣麻煩, 可以安裝一個vim的 增強包.
但是, 不是vim-common(各個vim版本共用的庫), 也不是什么vim-gui, 而是/而且只需要 安裝 vim-X11(大寫的X), 這個是為了補充/vim為X graphic system使用的.
安裝vim-X11,會 安裝一個 vim的圖形程序,即 gvim, 但是這個一般都不習慣使用.(gvim也同樣可以使用vim的各種插件,包括 NERDTree等.)
同時, 會給vim添加 加號寄存器, 從而可以使用系統剪貼板.
vim-X11添加一些附加的命令, 比如 evim, gvim等, 最重要的是這個 vimx命令, 他就是 在vim的基礎上增加x系統的支持. 即vimx 是命令行下的vim支持系統剪貼板的版本.
所以只要在 gnome-terminal下, 運行vimx就能使vim支持 加號寄存器.

使用 rpm -ql 'vim-X11'可以查看 該軟件包安裝了哪些增強命令 就是下面這個圖中的 vimx命令!


使用系統剪貼板的過程:

fc23自帶的, 最基本的版本是vi (即vim -v就是 vi) ,
然后安裝 vim-enhanced, 就得到基本增強的vim版本, 但是還不能使用系統剪貼板和加號寄存器.
然后, 要安裝,vim-X11, 就得到 gvim軟件, 和 vimx的 +clipboard 和 +xterm-clipboard版本.


為什么 不能創建大寫字母的寄存器?



#### 定義vim的映射leader 是使用 `let mapleader=',' 或者 let mapleader=';'` leader鍵可以是逗號或分號 . 使用leader是 用 ` ` 的方式

注意gnome-terminal下的復制/粘貼和 vimx本身內部的 復制和粘貼的不同.

  • 前者總是在系統剪貼板上. 而后者是在vim的 加號寄存器 和 系統剪貼板之間 進行轉移/轉換
  • 前者會將界面內的所有的內容(包括vim的行號)都復制下來,而后者只會 操作文檔本身里面的內容. 不包括行號.

"*和"+的區別?

在啟用了 +clipboard 的情況下, 星號寄存器表示的是 被選擇的內容. 這個內容可以是你用鼠標選擇的, 也可以是你用 visual模式下選擇的.
但是, 加號寄存器只能將你 在 visual模式下 選擇的內容 復制到 系統剪貼板上, 你用鼠標拖選 的內容 不能 復制到系統剪貼板上??

所以, 最重要的是, 在設置快捷鍵的時候, 要注意映射模式.

  • 如果是復制到系統剪貼板, 要設置vmap, 或者是設置成 map !! 因為, 你要復制到系統剪貼板, 需要在visual模式下, 你用nmap在normal模式下就無效. 其中的map 會自動檢查, 在vmap下有效, 在nmap下無效!
  • 反之, 如果是從系統剪貼板粘貼到vim中, 則要設置成 在nmap下粘貼, 或者甚至可以在 insert模式下直接粘貼. 但是不能設置成vmap, 因為你在 粘貼 系統剪貼板的內容到vim的時候, 不可能是vmap visual模式. 通常還是normal模式或 insert模式

    所以, 最后的有效配置, 正確配置是:
"在visual模式下,復制到系統剪貼板上.
vmap <leader>c "+y

"在nmap或insert 模式下將系統剪貼板上的內容put到vim中
nmap <leader>v "+gp
nmap <leader>gv "+p

imap <leader>v  <esc>"+gp
imap <leader>gv <esc>"+p

vim的minibuffer中, 是保持 "不同"文件的緩存. 如果是同一個文件, 不管你開多少個窗口, 都認為 只有一個 文件緩存.

即使用vimx啟動, 仍然不能使用鼠標拖動 窗口的 大小, 只有在 gvim中 才能使用鼠標拖動窗口大小.


為了能夠用常用的vim命令 來運行 vimx, 可以在.bashrc中, 加上一個 alias: alias vim=/usr/bin/vimx

注意 雖然安裝了 vim-X11, 但是 /usr/bin/vim 和 /usr/bin/vimx 實際上還是 兩個互補相關的 應用, 在原來的vim中, 仍然並不支持 剪貼板, 查看 --version | grep 'clipboard', 仍然還是沒有啟用剪貼板的特性.
只有 使用 vimx 才能啟用 +clipboard, 和 +xterm_clipboard 特性.
估計 vimx啟動時, 首先是去調用 了 /usr/bin/vim, 然后 再加載 了 / 添加了 加號寄存器的特性.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM