因为最近在学vim,所以转过来。里面是繁体,好多都是台湾的计算机术语,看的时候有点怪异,不过还是不影响阅读的。
大家來學VIM(一個歷久彌新的編輯器)[一]
前言
鑑於仍有許多人還沒找到順手的編輯器,而許多想學 vi 的人又覺得無從下手,因此在此提出一些個人的心得,希望能對這些朋友有點幫助。或許也減少一點 FAQ 吧!
真要深入的話,大多數的前輩都認為 vi 比 emacs(xemcas) 還難學。但誰又真的需要熟悉編輯器的所有功能呢?你大可以邊用邊學啊!需要用到的先學,其它的就放一邊,只要能善用一些常用到的功能,又何必要那麼深入呢?而且您在使用當中經常會發現一些新功能,這又會馬上讓您給賺到了。
為什麼選VIM?
最最重要的原因是可以正確處理中文!其它如 elvis,vile,nvi 在中文方面都會有問題。另外就是許多作業系統都有 VIM 可用。當然如果您不需要中文支援的話,也建議使用 elvis。vile 則有 emacs 的味道,而 nvi 大概是最忠於原味的了!至於原始 vi 的書已有中文翻譯(O'Reilly),各位到大一點的書局翻翻就有了。所以選定 VIM 做對象,兼述及 elvis,至少她不「排斥」中文。
- VIM 代表 Vi IMproved。
- elvis 可直接讀 HTML(可用來上網,但只有文字),binary,manpage 及 TeX(LaTeX)(不是只顯示程式碼喔!)檔,和 XA+CV 配合也可以用中文,但不能真正處理就是了!
-
VIM 也不是真的能完全支援中文啦!有些細部的功能還是沒法度。大概 6.0 版的時候會更好!不過平常一般的編輯動作是沒問題。
另一個原因是,VIM 是慈善軟體(CharityWare),如有贊助或評比得獎(前不久剛得過),所得皆救助烏干達孤兒,有點年紀的大概還記得"We Are The World" 這首歌吧!全球的藝人共同合唱的,就是救助這些孤兒(應該沒記錯吧!)。您要使用當然是免費,您要捐款贊助當然是不勉強啦!但如果有評比有獎金可拿的,您去投她一票就是功德無量了。
另外 vim 的規則表示式(regular express)頗完整,您也可借這個機會學 regexp,因為您在 sed,awk,perl,less,grep...中也是要用到,早點會 regexp 您生活在 Linux(Unix)的世界會更美好。學了 regexp 您會有點看不起 windows 系統中的尋找功能的。
由於是慈善軟體,廣結善緣,因此連中文繁體都支援,不簡單。但也因此最近的版本有點肥,但又不會太肥(比 xemacs 好多了啦!)。這麼可愛的軟體,能不用她嗎?
如何抓vim(elvis)?
http://www.vim.org/
找個自己中意的 mirro 站抓。或許也順便抓 Win32 的可執行
檔回來在 windows 系統中使用。別忘了 runtime 檔也要抓,
否則會無法找到需要的檔案來執行。
http://www.fh-wedel.de/elvis/index.html
ftp://ftp.pdx.edu/pub/elvis
也可試試 elvis(當然是免費的)。
CLE 的使用者也可以到:
ftp://linux.tmtc.edu.tw/pub/CLE/i386/RedHat/RPMS
抓最新版來安裝,省時省力,而且還把必要的中文設定都弄好。
目前最新的版本,VIM 是 5.6,elvis 是 2.1-4。
編譯安裝
只講重點,避免囉嗦!
VIM:
1. configure 時加上:
--enable-multibyte
--enable-xim 如果您使用 xcin2.3 的話,就不必了
--enable-fontset
--enable-gui=gtk
gtk+ 最好是 1.2.3 以上的版本,1.2.1 也是將就可以啦
!大家都用 gtk+ 了,您不會想編 Athena 或
Motif(lesstif)吧!而且後兩個版本的 GUI 就沒有漂亮的
icon 了(但有的人就是討厭這些無用的 icon)。
2. ~/.vimrc 加入:
set fileencoding=taiwan
set guifontset=英文字型,中文字型
設了 guifontset 就不能設 guifont 否則會優先使用
guifont,這樣就找不到中文字型了!console 下或 xterm
下的話,就看您用什麼字型就顯示什麼字型,和
guifontset 無關。
- 英文字型要用固定字,建議使用危卵的 Andale Mono 這個字型,包您滿意,可去危卵抓,免費的。我個人是使用 180 的 Andale 字,配上 220 的中文字,絕配(1024x768)!哦!不要告訴我,您的 X server 還不能支援 TTF。
-
Windows 中文版無需設 guifontset,只要設 guifont 即可。
3. 使用 xcin2.3 的話還是得配合 XA+CV 主要是輸入的問題。
使用 xcin2.5 的話就不必 XA+CV 了,但您得另外設 xim,
請進入 VIM 後 :help xim。
4. locale 要設成 zh_TW.Big5,意思就是您的系統的 i18n
支援不能太差,我是使用 gvim-chinese shell script
來呼叫 gvim。
#!/bin/sh
# gvim-chinese
# unset LD_PRELOAD 如果您使用 xcin2.5x 的話
export LC_ALL=zh_TW.Big5
gvim "$@"
elvis:
elvis 沒什麼好說的,反正是靠 XA+CV 來顯示及輸入中文
。至於其他外觀調整,就請 man elvis。
勤前教育
VIM 的模式可有六種,為免初學的人搞混,仍依一般的分類分成三種:
1. Normal mode(common mode,以下簡稱 c-mode):
您一進入 VIM 就是處於 c-mode,只能下按鍵指令,不能輸入文字。這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。
2. Insert mode(i-mode):
按 i 就會進入 i-mode,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到 c-mode。
3. Ed mode(common-line mode,e-mode):
按冒號:(別忘了 Shift 鍵)就會進入 e-mode,左下角會有一個冒號:出現可下 ed 指令。也是按 Esc 回 c-mode。反正正常狀態都是處於 c-mode,這樣才不會把您辛苦打字的文章給隨便搞亂掉。
-
ed 是一個很古老的行編輯器,就好像 DOS 下的 edline 一樣,vi,sed 這些編輯器都是從 ed 衍化而來的。當然 DOS 下的 edline 也是學 ed 而來的,但功能可就不能同日而語了!有興趣可 man ed 學看看,有些時候會只有 ed 可以用(當機救助的時候)。
其它的模式就碰到時再說明了!
基本教練:step by step
1. 由命令列來開檔:
vim test.txt 或 gvim test,txt 或 gvim-chinese test.txt 如果您的系統 vi 是 vim 的連結檔話,就可以直接用 vi test.txt。以下就直接用 vim 代表 vi,gvim,elvis 因操作是一樣的有不同的地方會加注說明。
2. 先進入 vim 後再開檔:
進入 vim 後,使用冒號命令 :e test.txt,就可以編輯 test.txt 這個檔。1. 及 2. 這兩個開檔法,如果 test.txt 不存在的話,就會開一個以 test.txt 為名的新檔案。
-
如果是 gvim,可由 icon(gtk 版本才有)或功能表來叫出 file browser 來選看看您要編輯哪一個檔,但如果您是初學的話不建議您這麼做,vi 就是以按鍵快速聞名,這是她的優點,您還是學起來吧,不然沒有 GUI 的時候會很不習慣的。
3. 編寫文件:
進入 vim 後,按 i 進入 i-mode,就可以編寫您的文件了。在 vim 游標的移動可以由方向鍵來移動。Backspace 鍵可消去前一個字元,中文的話是一個中文字。Del 鍵可刪除游標所在處的字元(中文字)。
-
原始 vi 是不能在 i-mode 隨意移動游標的,得進入 c-mode 才能移動,因此就常常要按 Esc 來變換模式。vim 及 elvis 都打破了這個規矩。
4. 存檔、離開:
如果您寫好您的文件,就可以按 Esc 回到 c-mode,然後 :w 就會存檔(注意,是冒號命令),但還不會離開 vim,要離開可按 :q,就可以了!也可以合起來用,:wq,就樣就會存檔後離開。怎麼樣,也不會很難吧!只不過操作方式和別的編輯器不一樣罷了,這樣豈不是很有個性。:-)
-
盡量記住按鍵的意義,才不必死背,如 e 是 edit(編輯), w 是 write(寫入),q 是 quit(停止、離開)。
好了,這是就編輯的整個過程。下回開始是詳述各部份的功能,把 vim 解剖開來講,您可以馬上現學現賣。由於 vi(m) 的操作方式很有個性,因此,用了一次就會記住有這麼一個功能,想忘也忘不了,但有時按鍵難免會忘記,但有這一種功能大概是忘不了的,查了幾次指令就可以記得住了。
分享到:
相关推荐
大家来学VIM(一个历久弥新的编辑器)[一] 前言 监於仍有许多人还没找到顺手的编辑器,而许多想学 vi 的人又觉得无从下手,因此在此提出一些个人的心得,希望能对这些朋友有点帮助。或许也减少一点 FAQ 吧! ...
Qt 采用http通信json解析读取天气
岗位晋升360度调查表.doc
合法辞退员工的N种方式.pptx
大模型、Agent、具身智能及人形机器人学习全路径规划.pdf
华润万家员工手册.doc
招聘需求分析.xls
内容概要:本文详细介绍了基于‘光伏(PV)+蓄电池+负载’架构的双有源桥DC-DC变换器仿真方法及其在Matlab 2021b中的具体实现。首先解析了光伏系统的MPPT控制,通过扰动观察法使光伏板始终处于最大功率点。接着讨论了蓄电池的恒流充放电控制,利用PI控制器确保电池的安全和高效运作。然后阐述了双有源桥DC-DC变换器的闭环控制机制,借助PID控制器维持系统输出电压的稳定性。最后,文章展示了如何在Matlab Simulink环境下构建完整的仿真模型,涵盖各模块间的电气连接与信号交互,为新能源系统的优化提供了理论和技术支持。 适合人群:从事电力电子、新能源系统设计的研究人员和工程师,尤其是那些需要深入了解光伏储能系统工作原理的人群。 使用场景及目标:适用于希望掌握光伏储能系统中关键组件如MPPT、恒流充放电控制及双有源桥DC-DC变换器的设计与仿真的技术人员。目标是在实际工程项目中提高系统的效率和可靠性。 其他说明:文中提供的代码片段和建模思路有助于读者更好地理解和实践相关技术,同时也强调了一些常见的陷阱和调试技巧,帮助避免潜在的问题。
线性代数
内容概要:本文详细介绍了不同类型电机的调速方法,重点探讨了直流电机双闭环调速、永磁同步电机电流滞环闭环调速以及异步电机滞环电流调速。文中不仅提供了每种调速方法的基本原理和技术特点,还附带了相应的代码示例进行辅助解释。此外,文章对永磁同步电机的电流滞环调速与SVPWM调速进行了对比,指出了各自的优劣之处。最后,强调了在实际应用中选择合适调速方案的重要性。 适合人群:从事电机控制系统设计与开发的技术人员,尤其是有一定电机控制基础的研发人员。 使用场景及目标:适用于需要深入了解电机调速机制及其应用场景的专业人士。目标是帮助读者掌握不同电机调速方法的特点,以便在实际工程中做出最优选择。 其他说明:文章通过具体的代码实例展示了调速方法的实际应用,使读者能够更好地理解和实践相关技术。同时提醒读者在实际调试过程中要注意参数设置和硬件条件的影响。
人员晋升推荐表.xls
员工生日关怀方案
内容概要:本文详细介绍了对国际知名大厂的三个逆向ADC电路(SAR ADC、Sigma-Delta ADC和Pipeline ADC)进行深入剖析。作者通过Cadence Virtuoso平台研究了这些电路的标准单元库设计,探讨了各个电路的关键技术和实现细节。对于24bit Sigma-Delta ADC,重点讨论了其调制器部分的时钟相位分配和噪声整形技术;对于16bit SAR ADC,则关注其比较器阵列的独特设计以及动态锁存比较器的应用;而对于14bit Pipeline ADC,着重分析了其级间放大器设计和电荷共享技术。此外,文中还提到了在将这些设计适配到自家工艺过程中遇到的问题及其解决方案,如电容寄生效应、时序约束调整、运放结构优化等。 适合人群:从事模拟集成电路设计的专业人士,尤其是对ADC设计感兴趣的工程师和技术研究人员。 使用场景及目标:帮助读者深入了解高精度ADC的工作原理和设计技巧,掌握逆向工程技术在实际项目中的应用,提高对不同工艺节点下ADC设计的理解和适应能力。 其他说明:文中提供了大量具体的代码片段和仿真命令,便于读者理解和实践。同时,作者分享了许多宝贵的经验教训,强调了在逆向工程中需要注意的技术细节和潜在风险。
内容概要:本文详细介绍了大型立体仓库智能物流系统的构建与优化。该项目涉及一万多个库位、一百多台输送机和八台堆垛机,采用了西门子PLC作为控制核心,通过无线网桥与WCS和WMS系统对接。文章重点讲解了梯形图编程和功能块的应用,如输送机启停控制、堆垛机移动控制、路径规划、无线通讯处理以及异常处理机制。此外,还探讨了设备协同、逻辑优化、任务分配算法和速度曲线规划等方面的技术细节。 适合人群:从事工业自动化、智能仓储系统设计与开发的工程师和技术爱好者。 使用场景及目标:适用于智能仓储系统的设计、实施和维护,旨在提高系统的稳定性、效率和可维护性。 其他说明:文中提供了大量实际项目中的代码示例和调试经验,有助于读者理解和应用相关技术。
新员工月工作总结表.xlsx
内容概要:本文详细介绍了基于西门子S7-1500 PLC的汽车电子零件装配线集成解决方案。主要内容涵盖伺服轴控制、阿特拉斯拧紧枪控制、康耐视视觉检测系统以及HMI界面的设计与实现。文中展示了如何利用SCL语言将多种工业设备(如HMI、伺服电机、六轴机器人等)的功能封装为标准化功能块,从而提高系统的模块化程度和可复用性。同时,还分享了一些实际项目中的调试经验和优化技巧,如通过调整加减速曲线避免机械振动、设置扭矩保持时间和视觉检测的防抖定时器等。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和工业自动化设备集成的专业人士。 使用场景及目标:适用于汽车制造行业的生产线控制系统设计与实施。主要目标是帮助工程师快速掌握如何使用SCL语言构建高效稳定的PLC控制系统,提升生产效率和产品质量。 其他说明:文中不仅提供了详细的代码示例,还结合具体的应用场景进行了深入剖析,有助于读者更好地理解和应用相关技术。此外,强调了模块化编程的优势,如减少重复劳动、便于维护升级等。
内容概要:本文详细介绍了如何在STM32、AT32和GD32等Cortex-M系列MCU上实现串口IAP(In Application Programming)Bootloader,支持远程升级及RS485升级。主要内容涵盖Bootloader的工作原理、内存分配、通信协议设计、Flash写入操作以及跳转应用程序的关键步骤。文中提供了具体的代码示例,如Bootloader主循环、RS485收发控制、Flash写入、CRC校验等,并分享了多个实战经验和注意事项,确保数据传输的可靠性。 适合人群:从事嵌入式系统开发的技术人员,尤其是对STM32、AT32、GD32等国产MCU有一定了解并希望掌握串口IAP技术的研发人员。 使用场景及目标:适用于需要远程升级固件的嵌入式项目,帮助开发者避免现场升级带来的不便,提高设备维护效率。目标是让读者能够独立实现一个可靠的串口IAP Bootloader,掌握RS485通信和Flash编程的关键技术。 其他说明:文中提到的代码和配置已在GitHub上提供,方便读者下载和实践。同时,作者分享了许多实战经验和常见问题解决方案,有助于减少开发过程中可能出现的问题。
线性代数
学生会干部竞选清心简约.pptx
内容概要:本文深入探讨了光伏发电三相并网模型的技术细节,涵盖了光伏板、Boost升压电路、三相并网逆变器、MPPT最大功率点跟踪控制(扰动观察法)、PLL锁相环、dq解耦控制以及电流内环电压外环的并网控制策略。通过Python和Matlab代码片段展示了各个组件的工作原理及其相互协作的方式。实验结果显示,在复杂工况下,该系统能够保持直流母线电压稳定,THD仅为2.72%,并网电流波形优良,证明了其高效性和稳定性。 适用人群:从事电力电子、新能源发电领域的研究人员和技术人员,特别是对光伏发电并网技术感兴趣的读者。 使用场景及目标:适用于研究和开发高效的光伏发电并网系统,旨在提高系统的稳定性和效率,特别是在面对光照强度变化和负载突变的情况下。 其他说明:文中提供的代码片段有助于理解和实现相关控制算法,同时强调了实际应用中的注意事项,如参数选择和调试技巧。