2012年8月31日 星期五
ArchLinux 下使用羅技 Unifying 進行一對多配對
本來想打在自己的 Blog 上,不過考慮到是從 ArchWiki 上看來的,而且該文不長,所以直接在 Archwiki 上進行了翻譯(再怎麼說也是 Archwiki 的觀看人數比較多),相關內容可見Logitech Unifying Receiver。
2012年8月29日 星期三
vim 化 w3m
W3M 是所知最好的文字瀏覽器, 然而即使有著類似 vim 的上下移動鍵,他是一款 emacs-like 而非 vim-like 的瀏覽器。較明顯的分別法從 C-f/C-b是做為游標移動到下/上一個位置而非 vi 系的下/上一頁就可略知一二,更別提滿滿的 Meta- 組合鍵了。所以很早就有將其 Vim 化的想法。但那時只找尋過相關文章,並直接套用其設定了事。
直到最近凍仁翔分享了 w3m 自訂快捷鍵的相關知識及個人自定義按鍵後,才想要重新設定過 w3m 的快捷鍵。
Vim 化中有幾個難點:一、他的命令都是大寫的要使用命令列輸入不好打;二、在命令列中沒有自動補完的功能;三、快捷鍵的明稱沒有統一性,要記起來頗有難度;四、沒有別名功能;五、快捷鍵只辨識前兩個序列,也就是說快捷鍵 :buffer(歷史記錄)和 :bmarks(書籤),w3m 都會判定成 :b,容易造成大量衝突。
不過也 w3m 定義 keybinding 很靈活:一、可做為快捷鍵的按鍵很多, /:?., 等符號都可使用;二、能以兩個按鍵做為一個動作的快捷,雖然只有兩個而不能以快捷捷模擬別名(alias),但除此之外的 Vim 一個動作也很少超過兩個鍵,因此設定起來相當充足;三、w3m 有 menu 的設定,可以利用 menu 做為命令列的代替之一。
以下是自己w3m 的快捷鍵設定,相較於 Vim,也使用了不少 pentadactyl 的概念在裡面。因此,Buffer 和 tab(分頁) 同義,而使用 history 來指稱歷史記錄。在 vim 中,buffer 指的是所有開啓過檔案的暫存,包含分頁開啓的。
另外,如果有更新版本會同步到lycsjm/homeconfig 下的 .w3m 中。
直到最近凍仁翔分享了 w3m 自訂快捷鍵的相關知識及個人自定義按鍵後,才想要重新設定過 w3m 的快捷鍵。
Vim 化中有幾個難點:一、他的命令都是大寫的要使用命令列輸入不好打;二、在命令列中沒有自動補完的功能;三、快捷鍵的明稱沒有統一性,要記起來頗有難度;四、沒有別名功能;五、快捷鍵只辨識前兩個序列,也就是說快捷鍵 :buffer(歷史記錄)和 :bmarks(書籤),w3m 都會判定成 :b,容易造成大量衝突。
不過也 w3m 定義 keybinding 很靈活:一、可做為快捷鍵的按鍵很多, /:?., 等符號都可使用;二、能以兩個按鍵做為一個動作的快捷,雖然只有兩個而不能以快捷捷模擬別名(alias),但除此之外的 Vim 一個動作也很少超過兩個鍵,因此設定起來相當充足;三、w3m 有 menu 的設定,可以利用 menu 做為命令列的代替之一。
以下是自己w3m 的快捷鍵設定,相較於 Vim,也使用了不少 pentadactyl 的概念在裡面。因此,Buffer 和 tab(分頁) 同義,而使用 history 來指稱歷史記錄。在 vim 中,buffer 指的是所有開啓過檔案的暫存,包含分頁開啓的。
$HOME/.w3m/keymap
# A sample of ~/.w3m/keymap (vim)
#
# Ctrl : C-, ^
# Escape: ESC-, M-, ^[
# Space : SPC, ' '
# Tab : TAB, ^i, ^I
# Delete: DEL, ^?
# Up : UP, ^[[A
# Down : DOWN, ^[[B
# Right : RIGHT, ^[[C
# Left : LEFT, ^[[D
# vim :set fdm=marker noet
# invalidate defaults {{{
# 取消預設 keybinding。
keymap C-@ NULL
keymap C-a NULL
keymap C-b NULL
keymap C-e NULL
keymap C-f NULL
keymap C-g NULL
keymap C-h NULL
keymap TAB NULL
keymap C-j NULL
keymap C-k NULL
keymap C-l NULL
keymap C-m NULL
keymap C-n NULL
keymap C-p NULL
keymap C-q NULL
keymap C-r NULL
keymap C-s NULL
keymap C-t NULL
keymap C-u NULL
keymap C-v NULL
keymap C-w NULL
keymap C-z NULL
keymap SPC NULL
keymap ! NULL
keymap \" NULL
keymap # NULL
keymap $ NULL
keymap ( NULL
keymap ) NULL
keymap + NULL
keymap , NULL
keymap - NULL
keymap . NULL
keymap / NULL
keymap : NULL
keymap ";" NULL
keymap < NULL
keymap = NULL
keymap > NULL
keymap ? NULL
keymap @ NULL
keymap B NULL
keymap D NULL
keymap E NULL
keymap F NULL
keymap G NULL
keymap H NULL
keymap I NULL
keymap J NULL
keymap K NULL
keymap L NULL
keymap M NULL
keymap N NULL
keymap Q NULL
keymap R NULL
keymap S NULL
keymap T NULL
keymap U NULL
keymap V NULL
keymap W NULL
keymap Z NULL
keymap [ NULL
keymap ] NULL
keymap \^ NULL
keymap a NULL
keymap b NULL
keymap c NULL
keymap g NULL
keymap h NULL
keymap i NULL
keymap j NULL
keymap k NULL
keymap l NULL
keymap m NULL
keymap n NULL
keymap o NULL
keymap q NULL
keymap r NULL
keymap s NULL
keymap u NULL
keymap v NULL
keymap w NULL
keymap z NULL
keymap { NULL
keymap | NULL
keymap } NULL
keymap M-TAB NULL
keymap M-C-j NULL
keymap M-C-m NULL
keymap M-: NULL
keymap M-< NULL
keymap M-> NULL
keymap M-I NULL
keymap M-M NULL
keymap M-W NULL
keymap M-a NULL
keymap M-b NULL
keymap M-c NULL
keymap M-e NULL
keymap M-g NULL
keymap M-k NULL
keymap M-l NULL
keymap M-m NULL
keymap M-n NULL
keymap M-o NULL
keymap M-p NULL
keymap M-s NULL
keymap M-t NULL
keymap M-u NULL
keymap M-v NULL
keymap M-w NULL
keymap UP NULL
keymap DOWN NULL
keymap RIGHT NULL
keymap LEFT NULL
keymap M-[E NULL
keymap M-[L NULL
keymap M-[Z NULL
keymap M-[1~ NULL
keymap M-[2~ NULL
keymap M-[4~ NULL
keymap M-[5~ NULL
keymap M-[6~ NULL
keymap M-[28~ NULL
# }}}
# Page/Cursor motion {{{
keymap C-f NEXT_PAGE
# pentadactyl-like
keymap SPC NEXT_PAGE
keymap C-b PREV_PAGE
keymap l MOVE_RIGHT
keymap h MOVE_LEFT
keymap C-d MOVE_DOWN
keymap C-u MOVE_UP
#keymap MOVE_RIGHT1
#keymap MOVE_LEFT1
keymap j MOVE_DOWN1
keymap k MOVE_UP1
keymap C-y DOWN
keymap C-e UP
keymap zH SHIFT_LEFT
keymap zL SHIFT_RIGHT
keymap zh LEFT
keymap zl RIGHT
keymap 0 LINE_BEGIN
keymap \^ LINE_BEGIN
keymap $ LINE_END
keymap zz CENTER_H
# self add
keymap zZ CENTER_V
#keymap M-g GOTO_LINE
keymap gg BEGIN
keymap G END
keymap w NEXT_WORD
keymap b PREV_WORD
# emacs-like
keymap C-a LINK_BEGIN
keymap C-e LINK_END
keymap TAB NEXT_LINK
# pentadactyl-like, maybe change to ]l
keymap ] NEXT_LINK
keymap M-TAB NEXT_LINK
# pentadactyl-like, maybe change to [l
keymap [ PREV_LINK
# pentadactyl-like
keymap f MOVE_LIST_MENU
#keymap NEXT_RIGHT
#keymap NEXT_LEFT
#keymap NEXT_DOWN
#keymap NEXT_UP
#keymap NEXT_RIGHT_DOWN
#keymap NEXT_LEFT_UP
keymap C-o UNDO
keymap C-i REDO
#}}}
# Hyperlink operation {{{
keymap C-m GOTO_LINK
keymap C-j GOTO_LINK
# original-setting
keymap C-t TAB_LINK
#keymap M-C-j SAVE_LINK
#keymap M-C-m SAVE_LINK
# original-setting
keymap I VIEW_IMAGE
#keymap M-I SAVE_IMAGE
#keymap SUBMIT
# peek curl url
keymap c PEEK
#keymap u PEEK_LINK
# original-setting
keymap i PEEK_IMG
keymap gC-g INFO
keymap C-g LINE_INFO
# automark url use w3m setting
#keymap : MARK_URL
#keymap ";" MARK_WORD
#keymap M-: MARK_MID
#keymap F FRAME
#keymap M EXTERN
#keymap M-M EXTERN_LINK
#keymap L LIST
# pentadactyl-like
keymap F LIST_MENU
# }}}
# File/Stream operation {{{
#keymap :o GOTO
keymap o GOTO
keymap O GOTO_RELATIVE
#keymap :t TAB_GOTO
keymap t TAB_GOTO
keymap T TAB_GOTO_RELATIVE
#keymap :r LOAD
keymap @ READ_SHELL
keymap # PIPE_SHELL
keymap | PIPE_BUF
# }}}
# Buffer operation {{{
#keymap B BACK
keymap L NEXT
keymap H PREV
#keymap :his SELECT_MENU
keymap ,be SELECT
keymap gf VIEW
#keymap :w SAVE
#keymap :W PRINT
# self add: edit mode, or use i/I?
keymap e EDIT
#keymap S SAVE_SCREEN
keymap E EDIT_SCREEN
keymap r RELOAD
#keymap RESHAPE
keymap C-l REDRAW
#keymap DISPLAY_IMAGE
#keymap STOP_IMAGE
# }}}
# Tab operation {{{
# TODO may change to C-tC-t
#keymap C-t NEW_TAB
#keymap C-w CLOSE_TAB
keymap d CLOSE_TAB
keymap D CLOSE_TAB
keymap gt NEXT_TAB
keymap gT PREV_TAB
#keymap b TAB_MENU
#keymap :buffer TAB_MENU
# TODO may change to C-tl
keymap C-wl TAB_RIGHT
keymap C-wC-l TAB_RIGHT
keymap C-wh TAB_LEFT
keymap C-wC-h TAB_LEFT
# }}}
# Boookmark operation {{{
# confilct to TAB_MENU
#keymap :bmarks VIEW_BOOKMARK
keymap a ADD_BOOKMARK
keymap A ADD_BOOKMARK
#keymap M-b BOOKMARK
# }}}
# Search {{{
keymap / SEARCH
keymap ? SEARCH_BACK
keymap n SEARCH_NEXT
keymap N SEARCH_PREV
keymap C-r ISEARCH_BACK
keymap C-s ISEARCH
# }}}
# Dcitionary look-up {{{
# TODO see README.dict
#keymap M-w DICT_WORD
#keymap M-W DICT_WORD_AT
# }}}
# Mark operation {{{
# TODO knowing how to use this feature
# FIXME confilct with menu
keymap m MARK
# self add
keymap C-n NEXT_MARK
keymap C-p PREV_MARK
# self add
keymap \" REG_MARK
# }}}
# Miscellany {{{
# self add
# ranger-like: gx to go other position
keymap : MENU
# self add
#keymap :map ? HELP
# self add
#keymap :pref OPTIONS
#keymap C-k COOKIE
#keymap :ver VERSION
#keymap C-h HISTORY
# plugin-like
#keymap ,be HISTORY
#keymap :dl DOWNLOAD_LIST
#keymap CHARSET
#keymap DEFAULT_CHARSET
# pentadactyl-like: :dia console
#keymap :mes MSGS
#keymap m MOUSE_TOGGLE
#keymap C-w WRAP_TOGGLE
#keymap :: COMMAND
# self configured i3-like: open dmenu
keymap M-c COMMAND
#keymap ALARM
#keymap M-o SET_OPTION
#keymap SETENV
#keymap :map DEFINE_KEY
# pentadactyl-like :rehash
#keymap :source REINIT
keymap ! SHELL
keymap C-c INTERRUPT
#keymap :q QUIT
keymap ZZ QUIT
keymap ZQ EXIT
keymap C-z SUSPEND
# }}}
# User defined keymaps {{{
# goto homepage
keymap gh GOTO https://www.google.com/
keymap gH TAB_GOTO https://www.google.com/
# }}}
$HOME/.w3m/menu
# A sample of ~/.w3m/menu (submenu type)
#
# menu MENU_ID
# func LABEL FUNCTION KEYS
# popup LABEL MENU_ID KEYS
# nop LABEL
# end
#
# MENU_ID
# Main: Main Menu
# Select: Buffer selection menu
menu Main
func ": (:)" COMMAND ":"
nop "----------------"
func ":open (o)" GOTO "oO"
func ":tabopen (t)" TAB_GOTO "tT"
func ":read (r)" LOAD "rR"
nop "----------------"
func ":w (w)" SAVE "w"
func ":W (W)" PRINT "W"
nop "----------------"
func ":history (h)" SELECT_MENU "hH"
popup ":b- >(b)" Bxxx "bB"
func ":dl (d)" DOWNLOAD_LIST "dD"
nop "----------------"
func ":source (s)" REINIT "sS"
popup ":m- >(m)" Mxxx "mM"
func ":preferences (p)" OPTIONS "pP"
func ":version (v)" VERSION "vV"
nop "----------------"
func ":quit (q)" QUIT "qQ"
end
menu Bxxx
func ":buffers (u)" TAB_MENU "uU"
func ":bmarks (m)" VIEW_BOOKMARK "mM"
end
menu Mxxx
func ":map (?)" HELP "?"
func ":messages (e)" MSGS "eE"
func "map keys (m)" DEFINE_KEY "mM"
end
另外,如果有更新版本會同步到lycsjm/homeconfig 下的 .w3m 中。
2012年8月12日 星期日
使用 github.com 同步管理個人資料設定檔
#老實說這幾天堆了一大堆沒寫的資料在 blog 中,但是都不是很想動筆,剛好現在想動手指而又找不到遊戲可以玩,就轉成寫文章的動力好了。
之前在 Github.com 上找資料時曾經看過有人在上面管理 .vim/.vimrc 甚至是整個 $HOME directory 上的多個 dotfile 的管理,只是一直都沒有付諸實行,直到這次硬碟壞掉才真正付諸實行。
目前選用的是 Sursolid 的方法,自己用 alias 設定一個新的命令,如此一來既不用創一堆連結,也不會讓 $HOME 資料夾變成一個 git 的 repo。
首次設定
另外由於 repo 本身就位於 $HOME 下,創建 $HOME/.gitignore 等於對所有的 git repo 生效,若只有本 project 要單獨忽略的檔案要改寫在 $HOME/.homeconfig.git/info/exclude中
。
題外: blog 的 syntax highlighter 果然還是件麻煩的事,最想要 Python 的那種 code block ,可移除 >>> 和 return value 只留下可輸入的程式碼。
另外針對設定檔不在 $HOME 下而要使用 sudo 修改的此篇也不適用,不過在知道 patch 和 git patch 可用的情況下應該可多少做個備份。
參考:
Managing home .dotfiles with git and GitHub - Sursolid
c9s: 使用 Git 管理自己的 dotfiles
GitHub does dotfiles - dotfiles.github.com
之前在 Github.com 上找資料時曾經看過有人在上面管理 .vim/.vimrc 甚至是整個 $HOME directory 上的多個 dotfile 的管理,只是一直都沒有付諸實行,直到這次硬碟壞掉才真正付諸實行。
目前選用的是 Sursolid 的方法,自己用 alias 設定一個新的命令,如此一來既不用創一堆連結,也不會讓 $HOME 資料夾變成一個 git 的 repo。
首次設定
同步設定:# 創 git repo 的資料在 $HOME 下 $ cd ~ $ mkdir .homeconfig.git # homeconfig 之簡寫,因為太長不好打 $ echo "alias hc='git --git-dir=$HOME/.homeconfig.git/ --work-tree=$HOME'" >> .zshrc $ source .zshrc # 初始化 git repo $ hc init $ hc add .zshrc $ hc commit -m 'Initial commit' # 上傳到 github $ hc remote add origin git@github.com:GITHUB_USERNAME/homeconfig.git $ hc push origin master
$ cd ~
# 備份
$ mv .zshrc .zshrc.bakup
$ git clone git@github.com:GITHUB_USERNAME/homeconfig.git homeconfig.git
$ mv homeconfig.git/.git .homeconfig.git
# 連 dotfile 也一起複製到 .
$ setopt -s dotglob
$ mv -i homeconfig.git/* .
$ rmdir homeconfig.git
另外由於 repo 本身就位於 $HOME 下,創建 $HOME/.gitignore 等於對所有的 git repo 生效,若只有本 project 要單獨忽略的檔案要改寫在 $HOME/.homeconfig.git/info/exclude中
。
題外: blog 的 syntax highlighter 果然還是件麻煩的事,最想要 Python 的那種 code block ,可移除 >>> 和 return value 只留下可輸入的程式碼。
另外針對設定檔不在 $HOME 下而要使用 sudo 修改的此篇也不適用,不過在知道 patch 和 git patch 可用的情況下應該可多少做個備份。
參考:
Managing home .dotfiles with git and GitHub - Sursolid
c9s: 使用 Git 管理自己的 dotfiles
GitHub does dotfiles - dotfiles.github.com
標籤:
configuration,
git
2012年7月6日 星期五
Arch Linux 下將 FTP 掛載為虛擬硬碟
昨天在聽到學長說 Win 7 可以將 ftp 的連線做為虛擬硬碟連線,所以也想查查在 Arch Linux 的用法。
要掛載 ftp 需要安裝 curlftpfs, 在 Arch Linux 中放在 Community Repo 中:
$ sudo pacman -S curlftpfs
安裝後下此命令掛載
$ sudo curlftpfs -o user=<user>:<password>[,<option>] ftp://<url>[:<port>] /<mount path>
即可,其他自己使用到到的選項在以下列出:
allow_other: 讓一般使用者也可存取(而不只是 root)
ssl_try: 嘗試使用 SSL/TLS ,但若 FTP Server 不支援的話則不使用。
no_verify_peer: 當連上使用 SSL 的 FTP 的 Server 時,不驗證 CA。
codepage=<encode>: 設定 Server 的編碼
另外,自動掛載以可將下列命令寫入 /etc/fstab
reference:
Mount FTP - ArchWiki:掛載 FTP 的範例
curlftpfs(1): mount ftp host as local directory - Linux man page : curlftpfs 的指令選項
要掛載 ftp 需要安裝 curlftpfs, 在 Arch Linux 中放在 Community Repo 中:
$ sudo pacman -S curlftpfs
安裝後下此命令掛載
$ sudo curlftpfs -o user=<user>:<password>[,<option>] ftp://<url>[:<port>] /<mount path>
即可,其他自己使用到到的選項在以下列出:
allow_other: 讓一般使用者也可存取(而不只是 root)
ssl_try: 嘗試使用 SSL/TLS ,但若 FTP Server 不支援的話則不使用。
no_verify_peer: 當連上使用 SSL 的 FTP 的 Server 時,不驗證 CA。
codepage=<encode>: 設定 Server 的編碼
另外,自動掛載以可將下列命令寫入 /etc/fstab
curlftpfs#<user>:<password>@<url>[:<port>] /<mount path> fuse auto,user,uid=1000[,<option>] 0 0另外,記得修改 /etc/fstab 的權限為 640 或 600,否則密碼就被其他人知道了。
reference:
Mount FTP - ArchWiki:掛載 FTP 的範例
curlftpfs(1): mount ftp host as local directory - Linux man page : curlftpfs 的指令選項
2012年6月14日 星期四
zsh 筆記(LaTeX 同步版)
zsh 筆記
lycsjm
June 15, 2012
最近比較偏好用 TeX 把文章打完再貼上來的模式了,不過因為 Blogger 還沒有微調過所
以看起來很醜 Orz。這篇文章會在我更新 LaTeX 時更新。June 15, 2012
按鍵綁定:
在 bash 中的 bind 在 zsh 改用 bindkey,如果寫了
bind ’"在 zsh 中則要寫成
C-o":"ranger-cd
C-m"’
bindkey -s "其中 -s 代表將其後的內部字串轉輸出成外部字串,當成手動輸入的命令來使用。
C-o" ranger-cd"
C-m"
Last modified: Friday, June 15th, 2012 12:04:13am
HTML conversion by TeX2page 20070609
2012年2月22日 星期三
vimwiki ver 1.3dev 中文破翻譯
Vimwiki 學習筆記
2012-02-29 update:看到Vim 文檔中文計劃(簡)了,也就是 說我不必要翻譯就可以了Orz,因此blogger部份不再更新(除非我有開始要同步這部份XD)2012-02-29 Update:看到有人reference到一篇看來可能翻的比我好的,因此先記下來 Vimwiki|隨便忘記 Wiki
從懷疑論者的墓誌銘: 我的筆記軟體使用心得 知道 vimwiki 這套筆記軟體後覺得這很可能是我要的東西(治不好的 vim 控),然後按照我 很糟糕的個性基本上都會想把使用手冊讀過一次然後再全部忘掉,為了不發生同樣的悲劇, 也基於想多試一下 vimwiki 的心理,這次就用 vimwiki 把他本身的功能記錄並翻譯了一次,並順 便放上來。
1 未看網站
2 注意事項
- 在寫中文時我並沒有特別想把這篇放到網路上,因此可能前後誤譯、沒使用常見譯名、名 詞不同的部分很多。
- 也因為本來是自用的,所以有些地方沒有翻譯(像是 Golbal command、還有因為我不熟 HTML 所以在 template 和wiki2html 的地方就沒怎麼寫)
- 雖然如此,我還是希望如果有需要更正的地方可以和我連繫
- 剩下的部份可能有空才會補完了
- blogger中的目錄被拿掉了
3 Mappings
3.1 Global Mappings
- [count]<Leader>ww 開啟第[count]個wiki index file
- [count]<Leader>wt 以新分頁開啟…
- <Leader>ws 列出可用的wikilist
- [count]<Leader>wi 打開第count個diary的index file
- [count]<Leader>w<Leader>w 打開第count個wiki中今天的diary wiki file
- [count]<Leader>w<Leader>t 在新分頁中打開第count個wiki中今天的diary wiki file
3.2 Local mappings
3.2.1 Normal Mode
- <Leader>wh 把目前這頁轉成HTML
- <Leader>whh 把目前這頁轉成HTML並用瀏覽器檢視
- <CR> 進入連結(可能新增頁面)
- <S-CR> 分割且進入連結(可能新增頁面),在某些terminal沒作用
- <C-CR> 垂直分割且進入連結(可能新增頁面),在某些terminal沒作用
- <C-S-CR> 開新分頁且進入連結(可能新增頁面),在某些terminal沒作用
- <Backspace> 回到前個wiki頁面
- <Tab> 移到目前面頁的下個連結
- <S-Tab> 移到目前頁面的上個連結
- <Leader>wd 刪除目前頁面
- <Leader>wr 重命名目前頁面
- <C-Space> toggle 清單的完成/未完狀態
- = 增加標題等級
- - 減少標題等級
- <A-Left> 將這欄向左移, # 這裡好像有問題…
- <A-Right> 將這欄向右移, # 這裡好像有問題…
- <C-UP> 可能的話開啟前一天的日記檔。 # 這裡好像有問題…
- <C-Down> 可能的話開啟下一天的日記檔。 # 這裡好像有問題…
-
<2-LeftMouse> 進入連結(可能新增頁面) # 這裡好像有問題…
- Note: <2-LeftMouse> 是點兩下左鍵
- <S-2-LeftMouse> 分割且進入連結(可能新增頁面)# 這裡好像有問題…
- <C-2-LeftMouse> 垂直分割且進入連結(可能新增頁面)# 這裡好像有問題…
- <RightMouse><LeftMouse> 回前頁 # 這裡好像有問題…
3.2.2 Insert Mode
- <CR> 到table正下方的cell,如果是最後一個則新增一列
- <Tab> 到table的下個cell,如果是最後一個則新增一列
3.2.3 Text object
- ah 一個section片段
- ih 沒有線的一個section片段
- a\ 一個table中的cell
- i\ 一個表中的inner cell
- ac 一個表中的欄
- ic 一個表中的inner欄
4 Commands
4.1 Global Commands
4.2 Local Commands
- :VimwikiGoto 直接前往arg所指頁面
-
:VimwikiSearch /pattern/ 在本Wiki的所有檔案尋找/pattern/
- 要顯示所有符合列表請使用:lopen
- 要顯下個符合列表請使用:lnext
- 要顯示上個符合列表請使用:lprevious
-
:VimwikiBacklinks 搜尋連結到本頁面的所有wiki連結
- 要顯示所有符合列表請使用:lopen
- 要顯下個符合列表請使用:lnext
- 要顯示上個符合列表請使用:lprevious
- :VimwikiTable cols rows 創造cols欄rows列的表,預設為2 x 5
- :VimwikiTableMoveColumnLeft, :VimwikiTableMoveColumnRight 將目前的欄往天或往右移 已mapping到<A-Left>和<A-Right>
- :VimwikiGenerateLinks 將現在所有有效的連結插入此頁面中(不包含自己)
5 Wiki syntax
目前使用的的wiki syntax是google的wiki語法其子集,可切換成Mediawiki的 標記語法,但目前不支援該語法轉成HTML的功能。5.1 Typefaces(字體)
-
*
粗體*
-
_
底線_
-
~~
刪除線~~
-
`
code(非語法)文字
` -
^
上^
標 -
,,
下,,
標
5.2 Links
5.2.1 內部連結
- CamelizedWords會被視為wiki連結(目前自己已禁用)
-
[[這是一個link]]
-
[[這是一個link|這是其敍述]]
-
[[這是一個link][這是其敍述]]
-
5.2.2 外部連結
- 可直接辨視http、mailto、和ftp的連結
-
[http://這是外部連結 這是其敍述]
5.2.3 圖片、圖片連結
圖片連結指的是連結到副檔名為jpg、jpeg、png或gif的檔案(大寫可辨視)。- 可以直接用連結 = <img src="連結" />
-
[[本地圖片的路徑]]
= <img src = "連結" />- 相對路徑是從path_html開始找的
-
[[連結當然也可以使用雙中括弧]]
= `img src="連結" /> -
[[圖片連結|敍述]]
顯示敍述的連結 = <a href="圖片連結">敍述</a> -
[[圖片連結|替代文字|]]
會顯示圖片 = <img src="圖片連結" alt="替代文字" /> -
[[圖片連結|替代文字|樣式]]
= <img src="圖片連結" alt="替代文字 style="樣式" /> -
[[圖片連結||樣式]]
= <img src="圖片連結" style="樣式" /> -
`
[[原始圖片|縮圖]]
` = <a href = "原始圖片><img src="縮圖" /></a>
5.3 Headers
-
= Header level 1=
-
== Header level 2==
- 以此類推(共6個)
-
可以設定不同顏色
- 例::hi VimwikiHeader1 guifg=#ff0000
- 在第一個'='前若有空格則會將該Header置中
5.4 Paragraphs
一個段落是以第一行沒有縮排行為一組,不同段以空白行做分格5.5 Lists
-
無序的清單以*或-啟始附加一空白
- 以四格為縮進來創造子清單
- *或-可以混使用
-
有序的清單以#開頭加一空白
- 不可能混合有序和無序的清單
- 一個清單可以有多行,有同樣縮進即可
-
名詞:: 定義
定義清單-
名詞和定義不一定要同時存在,但一定要有
::
-
名詞和定義不一定要同時存在,但一定要有
5.6 表格
表格是每個cell皆由|分隔的表格,在第一欄的部份在html中會被highligh為table的 header。而>代表向左合併欄,\/代表向左合併合併欄。5.7 預先處理文字
在{{{
和}}}
中的文字會被視為一組預先處理的文字。可以另外附加資訊在{{{
tag上,如
`{{{class="brush: python"` def hello(world): pass `}}}`這會輸出以下的HTML結果:
<pre class="brush: python"> def hello(world): pass </pre>
- 在使用外部js的上色工具時可能會用到。
- 可設定以vim可認知的方式來hightlight 預處理文字區塊,詳見nested_syntaxes
5.8 數學式
數學公式可以使用MathJax在HTML中呈現和highlight。有三種可以用的語法:行內、區塊、和區塊環境。
- 行內
\(
數學式\)
#和LaTeX的的一樣- 區塊
{{$
#這行必須單獨存在- 數學式 #不論有幾行都會被縮成一行
{{$
#這行也必須單存在- 行內區塊
{{$%LaTeX的環境名稱%
#這行的環境名稱是特定的LaTeX環境- 數學式
}}$
-
數學式在Vim中會自動highlight,但是在HTML中顯示有兩個替代選項
-
使用MathJax伺服器來顯示:在HTML header的模版中加入下行
-
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/
latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
-
-
在本地瑞安裝MathJax,存了MathJax後在HTML中加入下行
-
<script type="text/javascript" src="<mathjax_folder>/MathJax.js?conf
ig=TeX-AMS-MML_HTMLorMML"></script>
- <mathjax_folder>應該是放置MathJax的資料夾相對於模版資料夾的路徑
-
-
使用MathJax伺服器來顯示:在HTML header的模版中加入下行
5.9 區塊引用
起頭有著四個或更多空白的文字部份會成為區塊引用。雖然在vimwiki中不會特別標示,但是可以用HMTL中的CSS來設定。區塊引用常用於引入長 篇的文字時。
5.10 註解
在vimwiki中以%%
開始的行視為註解。只有以%%
開頭的行才算。
5.11 水平線
以四或更多個-
開始的行會被視為水平線 = <
hr />
6 Folding/Outline
Vimwiki可以fold header或是列表物體7 PlaceHolders(佔位符)
-
%toc 目錄名
加入目錄 -
%title 標題名
加入標題 -
%nohtml
加入後該頁不會被編成HTML檔 -
%template 模版名
使用特定的模版在此頁上
8 Todo List
完成清單是一組清單可確認完成與否,利用C-Space來切換開關與否,其中母清單的完成 狀況會依子清單而改變。(可修改g:vimwiki_listsyms來用不同的symbol)可以在visual模式下一次切換多個list item
9 Tables
:VimwikiTable預設會創造出2 * 5的表格。可以使用<TAB>或是<CR>來快速切換到鄰近表格 ,可以使用gqq或gww來Format10 Diary
可使用<Leader>w<Leader>w開啟,可設定g:vimwiki_diary_months來選擇月份。11 Calendar interation
可以和Calendar.vim整合,來 創造diary notek12 Options
有全域和個別wiki(區域)的,全域的選項改變都使用以下的形式:let g:option_name=option_value所有區域的選項都是wiki列表中的dictionary,以下列的表式方式:
{'option1': 'value1', 'option2': 'value2', ...}例如以下的例子:
let g:vimwiki_list=[{'path': '~/my_site/', 'path_html': '~/public_html/'}, \ {'path': '~/my_docs/', 'ext': '.mdox'}, {}]就有了3個wiki,第一個wiki放在~/my_site/下,html會放在~/public_html下,第二個 wiki的副檔名為.mdox,而空白的 dictionary 代表使用預設的選項。
也可以例用個別的 dictionary 來創造wiki,例如以下的式子:
let wiki_1 = {} let wiki_1.html_template = '~/public_html/template.tpl' let wiki_1.nested_syntaxes = {'python': 'pyton', 'c++': 'cpp'} let g:vimwiki_list = [wiki_1]
12.1 per wiki options
使用:let g:vimwiki_list=[{'path': '~/my_site/', 'path_html': '~/public_html/'}, \ {'path': '~/my_docs/', 'ext': '.mdox'}, {}]設定
option | default value | comment |
---|---|---|
path | ~/vimwiki | wiki 檔案的放置路徑 |
path_html | ~/vimwiki_ html | 從 wiki 檔產生的HTML其放置處 |
auto_export | 0(0, 1) | 是否自動產生 HTML 檔案 |
index | index | index 檔案的名字(不含副檔名) |
ext | .wiki | 副檔名 |
syntax | default(default, media) | wiki 語法 |
template_path | ~/vimwiki/template/ | HTML 模版放置處 |
template_default | default | 預設模版的名字 |
template_ext | .html | 預設的模版副檔名 |
css_name | style.css | 使用的css名稱 |
maxhi | 1(0, 1) | 是否檢查有不存在的連結 |
nested_syntax | {} | 使用特定類型的vim highlight |
diary_rel_path | diary/ | diary wiki路徑 |
diary_index | diary | diary wiki 檔的index檔其名字 |
diary_header | Dhary | diary index 的 Header 名字 |
diary_line_count | 4 | diary index 中每一列的連結數 |
custom_wiki2html | '' | 轉成 HTML 的 script 其名字 |
12.2 global options
使用:let g:option_name=option_value來定義。
option | default | comment |
---|---|---|
g:vimwiki_hl_headers | 0(0, 1) | 使用自訂的header highlight |
g:vimwiki_hl_cb_checked | 0(0, 1) | 完成列表物件設為註解色 |
g:vimwiki_global_ext | 1(0, 1) | 以已登記副檔名判斷為wiki檔 |
g:vimwiki_upper | 用來判斷視為 WikiWord 的字母 | |
g:vimwiki_lower | 用來判斷視為 WikiWord 的字母 | |
g:vimwiki_auto_checkbox | 1(0, 1) | 是否自動做出checkbox |
g:vimwiki_menu | 'Vimwiki' | 可選的GUI選單 |
g:vimwiki_stripsym | 替換不可用的sym | |
g:vimwiki_badsyms | 在此處的列表會自動被替換 | |
g:vimwiki_listsyms | ' .oOX' | 母清單完成狀態所代表的符號 |
g:vimwiki_use_mouse | 0(0, 1) | 是否是用滑鼠的 mappings |
g:vimwiki_folding | 0(0, 1) | 是否使用folding |
g:vimwiki_fold_lists | 0(0, 1) | 是否folding list |
g:vimwiki_camel_case | 0(0, 1) | 是否將 WikiWord 視為連結 |
g:vimwiki_list_ignore_newline | 1(0, 1) | 是否忽略列表物件中的新行 |
g:vimwiki_use_calendar | 1(0, 1) | 是否使用 calendar addons |
g:vimwiki_browsers | 開啟HTML的瀏覽器(字串列表) | |
g:vimwiki_table_auto_fmt | 1(0, 1) | 表格是否自動格式化? |
g:vimwiki_w32_dir_enc | '' | 是否以特定編碼創造資料夾 |
g:vimwiki_CJK_length | Vim73廢棄 | |
g:vimwiki_dir_link | '' | 如何開啟目的為資料夾的連結 |
g:vimwiki_html_header_numbering | 0(0, 1, 2) | 是否為Header編號 |
g:vimwiki_html_header_numbering_sym | '' | Header 編號後使用的符號 |
g:vimwiki_file_exts | (略) | 連結不會轉成 .html 的檔案類型 |
g:vimwiki_valid_html_tags | (略) | 在 vimwiki 能使用的 HTML 標籤 |
g:vimwiki_user_htmls | '' | 其他自有的 .html(不會被刪)[,] |
g:vimwiki_conceallevel | 2 | #不確定 |
g:vimwiki_url_mingain | 12 | 多長後的 URL會被略縮 #不確定 |
g:vimwiki_url_maxsave | 12 | #不確定 |
g:vimwiki_debug | 0(0, 1) | 顯示除錯訊息 |
g:vimwiki_diary_moths | (略) | 日記示的月份 |
13 template
template 的格式應該看起來像這樣:<html> <head> <link rel="Stylesheet" type="text/css" href="%root_path%style.css" /> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>%content%</body> </html>
-
%title%
會被替換成用vimwiki-tilte
中所設定的名字 -
%root_path%
會被替換成子資料夾數目的../
。舉例來說,在連結[[dir1/dir2/my page]]
中的%root_path%
會被換成../../
。 -
%content%
會被換成 wiki 檔的內容。 -
如果不使用預設的模版內容,則只要在該頁加入
%template 使用的模版名稱
14 wiki2html
#TODO 待補完,見:help vimwiki-option-custom_wiki2html 預設的script放在 $VIMHOME/autoload/vimwiki/customiwiki2html.sh 中15 相容其他plugin
15.1 Snipmate
Vimwiki預設的<Tab>按鍵會和Snipmate的衝到,因此要在 ~/.vim/ftplugin/vimwiki.wiki 中的inoremap <expr> <buffer> <Tab> vimwiki_tbl#kbd_tab()換成其他的熱鍵,例如:
inoremap <expr> <buffer> <C-Tab> vimwiki_tbl#kbd_tab()參考: 用 Vimwiki 写博客 - 闲耘™.博客
last modified: 2011-02-29
stat: unfinished
last position:
2012年1月29日 星期日
Arch…算是真正的啟始文章嗎?
arch已經裝了兩次…但是就是沒在記流程(討厭像這系列Arch 安裝 « 雲淡風清 一樣截圖…一方面是我懶,一方面是給我看的本來就沒什麼必要。至於新手就去看那系列吧,雖然我也算新手XD),不過也因此很多東西都沒有記下來,反而造成自己的困擾,最近可能會再安裝第三次,並留下我認為須要記錄的文字。
至於前兩次的安裝心得……官方的news果然很重要XD…
又…有關pacman的東西在/etc/pacman.d中
至於前兩次的安裝心得……官方的news果然很重要XD…
又…有關pacman的東西在/etc/pacman.d中
標籤:
Arch Linux
2012年1月25日 星期三
ibus 使用Ctrl-H代替Backspace
今天發現mozc可以使用^H、^N/^P、^M後又開始想要這樣設定,結果這次算是直接去改原始碼了(第一次感受到這方面的開源好處(誤)
其實不難,只是單純備份(因為當初在gcin做不到讓人我有點沮喪),以免日後忘了。目前只更改^H和^M的部份,因為倉頡不會用到左右
環境:
ubuntu 11.10
ibus 1.3.99.20110818
/usr/share/ibus-table/engine$ diff table.py.orig table.py
1374c1374
< elif key.code in (keysyms.Return, keysyms.KP_Enter):
---
> elif key.code in (keysyms.Return, keysyms.KP_Enter) or ((unichr(key.code) == u'm' or unichr(key.code) == u'M') and key.mask & modifier.CONTROL_MASK):
1414c1414
< elif key.code == keysyms.BackSpace:
---
> elif key.code == keysyms.BackSpace or ((unichr(key.code) == u'h' or unichr(key.code) == u'H') and key.mask & modifier.CONTROL_MASK):
其實不難,只是單純備份(因為當初在gcin做不到讓人我有點沮喪),以免日後忘了。目前只更改^H和^M的部份,因為倉頡不會用到左右
環境:
ubuntu 11.10
ibus 1.3.99.20110818
/usr/share/ibus-table/engine$ diff table.py.orig table.py
1374c1374
< elif key.code in (keysyms.Return, keysyms.KP_Enter):
---
> elif key.code in (keysyms.Return, keysyms.KP_Enter) or ((unichr(key.code) == u'm' or unichr(key.code) == u'M') and key.mask & modifier.CONTROL_MASK):
1414c1414
< elif key.code == keysyms.BackSpace:
---
> elif key.code == keysyms.BackSpace or ((unichr(key.code) == u'h' or unichr(key.code) == u'H') and key.mask & modifier.CONTROL_MASK):
2012年1月17日 星期二
可代替cbox的chat widgit
本文所列的widgit目的和cbox完全相同,有以下幾個特點:
一、不必要有特別的帳號就可以使用。(就是沒有「註冊」這個動作)
二、不是和IM連結的類型,也就是這個widgit是一個聊天室,而不是連絡所有人的窗口。
三、會自動更新,不會自動更新用留言板就好了
並期待能找到能使用頭像的wigdet。
以下是目前找到可代替的名單
iShoutbox - Free Remotely Hosted Shoutboxes:自動更新如果五分鐘沒人說話就會停了,沒頭像貌,可能有25秒的發言期間限制,除此之外蠻完美的。
FreeShoutbox.net - Get Your Free Shoutbox!:沒時間,沒頭像,10秒更新一次
Start | MyShoutbox.com - Free Shoutbox For Your Homepage! Mini Chat:不會自動更新……
關鍵字:chatbox/shoutbox auto refresh
一、不必要有特別的帳號就可以使用。(就是沒有「註冊」這個動作)
二、不是和IM連結的類型,也就是這個widgit是一個聊天室,而不是連絡所有人的窗口。
三、會自動更新,不會自動更新用留言板就好了
並期待能找到能使用頭像的wigdet。
以下是目前找到可代替的名單
iShoutbox - Free Remotely Hosted Shoutboxes:自動更新如果五分鐘沒人說話就會停了,沒頭像貌,可能有25秒的發言期間限制,除此之外蠻完美的。
FreeShoutbox.net - Get Your Free Shoutbox!:沒時間,沒頭像,10秒更新一次
Start | MyShoutbox.com - Free Shoutbox For Your Homepage! Mini Chat:不會自動更新……
關鍵字:chatbox/shoutbox auto refresh
2012年1月15日 星期日
滑鼠鍵設定為特定按鍵之嘗試
結論是目前這三個軟體沒辦法讓滑鼠送出修飾鍵(modifier:Ctrl、Alt、Mod4/Super/Winkey等和其他按鍵一起按會有不同結果
的鍵(Shift不算)),也就目前無法做到如果把右鍵綁定成Ctrl,在按著右鍵的情況下點左鍵,會得到我住鍵盤的Ctrl再點擊左鍵的結果。
嘛…雖然說blogger改版次之後的頁面很棒,讓我有更多寫文章的欲望,但不巧最近又在混了Orz…
不過之前一個設定不見就要找很久很煩…所以決定至少在這裡留個索引,好讓人自己下次若要尋找時方便點。
由於換了新滑鼠(Logitech m950),然後有些按鍵在linux下沒有作要用要自行定義(該說正常又被婊嘛…),所以就尋找自行配鍵的方法,測試了xbindkeys、xvkbd、和xte。
xbindkeys主要是來修改對映鍵的,可以將收到的鍵值(滑鼠鍵)取代成另一個,不過得一直開著。
xvkbd和xte則是可以讓程式/script對電腦送出特定按鍵,讓電腦自動作用。不過不管是xvkbd還是xte,都只會送出一次的鍵值。xte雖然有keydown、keyup和key三種情況,但是還是只會送出一次,而且只送出keydown的情況他好像也沒反應,因此目前看來滑鼠鍵還沒辦法模擬修飾鍵。
參考:
Logitech G700 mouse in Debian GNU/Linux » B1 :第一篇看到可自行設定的文章
The LOTP Guide to Using Your Logitech MX Mouse with Ubuntu | LOTP:適用於標準的Gnome介面
嘛…雖然說blogger改版次之後的頁面很棒,讓我有更多寫文章的欲望,但不巧最近又在混了Orz…
不過之前一個設定不見就要找很久很煩…所以決定至少在這裡留個索引,好讓人自己下次若要尋找時方便點。
由於換了新滑鼠(Logitech m950),然後有些按鍵在linux下沒有作要用要自行定義(該說正常又被婊嘛…),所以就尋找自行配鍵的方法,測試了xbindkeys、xvkbd、和xte。
xbindkeys主要是來修改對映鍵的,可以將收到的鍵值(滑鼠鍵)取代成另一個,不過得一直開著。
xvkbd和xte則是可以讓程式/script對電腦送出特定按鍵,讓電腦自動作用。不過不管是xvkbd還是xte,都只會送出一次的鍵值。xte雖然有keydown、keyup和key三種情況,但是還是只會送出一次,而且只送出keydown的情況他好像也沒反應,因此目前看來滑鼠鍵還沒辦法模擬修飾鍵。
參考:
Logitech G700 mouse in Debian GNU/Linux » B1 :第一篇看到可自行設定的文章
The LOTP Guide to Using Your Logitech MX Mouse with Ubuntu | LOTP:適用於標準的Gnome介面
訂閱:
文章 (Atom)