顯示具有 Vim 標籤的文章。 顯示所有文章
顯示具有 Vim 標籤的文章。 顯示所有文章

2014-10-10

sudo mode editor gui can not switch the input method

Linux EDITOR 到底能不能在 sudo 狀態下輸入中文?Ctrl + Space 或者其它快速鍵就是不能切換輸入法?是 sudo 的問題還是輸入法的問題?

以上幾點在我在 Ubuntu + gedit + gcin 就存在的疑問,到轉用 Arch + qvim + hime 還是存在這問題,不禁想問,天啊,在 sudo 狀態下切換個輸入都就那麼難嗎?

編輯 sudoers 問題


介紹解法之前我們來先了解一個非常重要的問題點,  直接用 sudo vim/qvim/geidt 這類的文字編輯器來修改 /etc/sudoers 是好的嗎?普通我們都用這類方法來修改它,但這樣是沒有 debug 的功能,只要你有地方寫錯,很容易將 sudo 搞掛!若是,su 在當時沒設定密碼無法切換到 root,你就跟 root 說掰掰要修正也沒辦法沒權限嘛。

掰掰實例
>>> /etc/sudoers: syntax error near line 70 <<< sudo: parse error in /etc/sudoers near line 70 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin

關於 visudo 的 debug 可以看 @凍仁的: sudo 指令使用說明

那要修改它到底要用什麼指令呢?答案是 visudo 囉。

sudo visudo


通常 visudo 啟用的文字編輯器是 vi 那用不習慣要改怎麼辦?不用怕只要指定想要用的編輯器即可。

  •  修改 editor 為你想要的編輯器,若是 qvim/gvim 要記得加參數 -f 詳細作用請看此篇
    EDITOR="/usr/bin/vim"
    OR
    EDITOR="/usr/bin/qvim -f"'
    OR
    EDITOR='gedit'
這裡以 qvim 為範例
sudo EDITOR='/usr/bin/qvim -f' visudo

上面是暫時性的使用,要讓 visudo 以後都是用你指定的編輯器,請在執行 visudo 後編輯該檔添加下面那行文字。
Defaults      editor="/usr/bin/qvim -f", !env_editor

輸入法切換問題


那麼接下來就是切換輸入法的問題囉,這裡提供兩個解法,一個一樣用 visudo 來修改 sudoers ,另一個是每次用 sudo  都需要加入各別參數的解法。

sudo visudo

搜尋此行將開頭的#註解刪掉,或者直接添加此行。
Defaults env_keep += "HOME"
現在立即用測試 sudo 到底能不能切換輸入法囉。
sudo qvim

從圖片中用紅色框框處的差異來區別兩者的差異,兩者皆能正常切換輸入法輸入中文了。我用 hime 另外試過 ibus 都沒有問題。
沒用 sudo
有用 sudo
若是暫時性的請在 sudo 後面增加 -E -H 參數

sudo -E -H qvim -f

-H, --set-home              set HOME variable to target user's home dir
-E, --preserve-env          preserve user environment when running

2014-09-22

qvim/gvim use -f | --nofork 與 EDITOR 設定

不知道大家有沒有遇過,類似在終端機下指令執行 qvim/gvim  時,希望開啟檔案後不直接執行下個指令,等程式關閉在執行下個指令的功能?

這時啟動加入參數 -f 就能達成

qvim -f file


:help --nofork@tw
*--nofork*
--nofork GUI: 不分叉。和 |-f| 相同。

2014-09-11

vim 滑鼠移到網址按下快速自動在鍵瀏覽器開啟網頁

本人想說在 vim 遇到文字內有網址要立即開啟網頁,先要複製網址>開瀏覽器>貼上網址有點麻煩,如果有辦法直接打開網址就好囉!

我想 vim 一定有辦法做的到,必竟 vim 那麼多人用應該有很好的解決方法,是的,我有找到但有些遇到現在 mega 網址就沒折 https://mega.co.nz/#! 光開頭網址 #! 這兩個符號就要跳脫(逃逸?)兩個都是 linux 內建指令(沒記錯的話)啊。

2013-11-21

Vim 中文用戶手冊(繁體字)2、自動下載最新版並轉換文字(簡轉繁)與其他方式安裝


即上一篇Vim 中文用戶手冊(繁體字) 所提供的手動轉換法,此次轉而提供利用Shell Script來自動下載最新版並自動轉換文字(簡轉繁)。


如果要更快的話就用+Chu-Siang Lai 提供  chusiang/vimcdoc-tw的方法安裝,需要Pathogen或NeoBundle或Vundle這三種直接安裝他轉換好的檔案,安裝方法他寫的很詳細我這就不贅述了。

vimcdoc-cn-to-tw.zsh

wget -cq https://googledrive.com/host/0B6LhE5E9oFV3Njc3MTI3M2QtOTlhNi00ODlhLWI3MDItODJhY2VkMGYxMDk5/vimcdoc-cn-to-tw.zsh
chmod +x vimcdoc-cn-to-tw.zsh
./vimcdoc-cn-to-tw.zsh

執行畫面
source code
#!/bin/zsh
which zsh >/dev/null || (echo 請安裝zsh;exit)
which opencc >/dev/null || (echo 請安裝opencc;exit)
tmpdir=$(mktemp -d)
cd /tmp/
printf "%s\n" 下載檔案中請稍後
wget -4cq -O  vimcdoc.tar http://sourceforge.net/projects/vimcdoc/files/latest/download
printf "%s\n" 解壓檔案中請稍後
tar -xf vimcdoc.tar
cd vimcdoc-*
vimcdocdir=$PWD
name=$PWD:t
printf "%s\n" 修改檔案中請稍後
mv help_cn.vim help_tw.vim
mv doc/tags-cn doc/tags-tw
sed -i 's/help_cn.vim/help_tw.vim/g ; s/tags-cn/tags-tw/g' vimcdoc.sh
sed -i 's/set helplang=cn/set helplang=tw/' vimcdoc.vim
sed -i '/help.*Cn/s/Cn /Tw /g' help_tw.vim
printf "%s\n" "CN to TW中請稍後"
find . -type d -exec env d="$tmpdir" sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \;
for i in  **/*(.); opencc -c zhs2zhtw_vp.ini -i $i -o $tmpdir/$i 2>&1
rm -r $vimcdocdir
mv $tmpdir $vimcdocdir
chmod +x $vimcdocdir/vimcdoc.sh
cd -
printf "%s\n" 轉換完成,壓縮檔案中請稍後
tar cf ~/$name.tar $name
printf "%s\n" 壓縮完成存放至~/$name.tar 此檔可直接分享給別他人安裝:
printf "%s\n" 要立即安裝請進入$vimcdocdir
printf "%s\n" 安裝步驟請看原文:Vim 中文用戶手冊(繁體字) http://playubuntu.blogspot.tw/2013/10/vim.html


Vim 中文用戶手冊(繁體字)

感謝Vim Chinese Documentation將英文翻譯成中文(簡體字),但對於簡體字不太熟悉,又不想靠類似transcoding Simplified and Traditional這種plugin每次看都要簡體轉繁體一次,索性直接將簡體中文的用戶手冊轉成繁體一次搞定方便觀看。


以下將運用Opencc簡轉繁、ZshShell請先安裝好。


2013-11-21 opencc改用zhs2zhtw_vp.ini設定值from Simplified to variants and phrases of Taiwan比較接近台灣用語。

2013-10-24 接著將安還有個檔案需要改 此處漏掉了也要修改vimcdoc.vim導致helplang會保持著cn而用戶手冊語言沒有改變,原文以更正。

原因如下:
其中設置Vim 幫助的默認語言的步驟,即是在vimcdoc.vim 中,因為plugin 比vimrc 加載要晚(參考), 所以在vimrc 中的設置會被vimcdoc.vim 覆蓋掉。
Vim 中文幫助文檔


2013-10-16

vim 強制刷新螢幕指令 redraw

以往類似使用vimdiff遇到Press ENTER or type command to continue這個訊息都要按Enter或任意鍵
vimdiff foo1 foo2
"foo1" 1L, 4C
"foo2" 2L, 8C
Press ENTER or type command to continue


現在加上-c 'redraw'直接跳過那個訊息。
vimdiff -c 'redraw' foo1 foo2

某些時候也可以用在vim內,如自己設定map等等,在最後加入:redraw!來跳過確認訊息。

對了裝qvim預設並沒有qvimdiff這個指令,你可以將以下指令加入~/.bashrc OR ~/.zshrc,這樣就有Qt模式的vimdiff囉
alias qvimdiff="qvim -d -c redraw"

vimdiff偷懶改成這樣免除確認訊息。
alias vimdiff="vimdiff -c redraw"


2011-04-05

「筆記」vim/gvim 共用 X-Window 剪貼簿

新的作業系統 Linux Mint 10 KDE ,沒有了 Gedit 真的有點不習慣 Kate 擴充功能好少(或許有我不知道),加上 Kate 在終端機開都會跳一些有的沒的訊息,乾脆學習別人口中很神的編輯器VIM

學習是總過程,不能貼上…怎麼能。X-Window 中複製文字在 Vim/Gvim 是不能用 "+gP貼上的,這樣叫我怎麼活…幸好在我百般尋覓下找到了解法