1. 程式人生 > 遊戲攻略 >《原神攻略》發光髓採集地點分享

《原神攻略》發光髓採集地點分享

目錄

一、vim安裝與簡單的配置以及游標字型樣式更改

vim安裝

  1. 在命令列裡輸入 sudo apt-get install vim-gtk (Ubuntu系統)

  2. 在命令列中輸入 vi 然後連續按兩次tab鍵,檢視有無 vim ,有的話即安裝成功


vim 配置

  1. 在命令列輸入 sudo vim /etc/vim/vimrc ,在該文件最後加上如下程式碼

    syntax on   "高亮程式碼"
    set nu                        "顯示行號"
    set relativenumber   "以當前行號為基準顯示行號"
    set cursorline  "在當前游標位置顯示一條線
    set tabstop=4                  "tab長度設定為4"
    ""set softtabstop=4
    set shiftwidth=4            "設定縮排空格數為4"
    set autoindent           "設定自動縮排,每行縮排值與上一行相等"
    set nobackup                "覆蓋檔案時不備份"
    set cursorline              "突出顯示當前行"
    set ruler                    "在右下角顯示游標位置的狀態行"   
    set autoindent             "自動縮排"
    set noexpandtab          " 不要用空格代替製表符
    set hlsearch                  "搜尋逐字元高亮
    set foldmethod=marker        "程式碼摺疊
    set cmdheight             " 命令列(在狀態行下)的高度,預設為1,這裡是2
    set mouse=a                   " 可以在buffer的任何地方使用滑鼠(類似office中在工作區雙擊滑鼠定位)
    set showmatch                 " 高亮顯示匹配的括號
    
    set enc=utf-8                 "編碼設定
    set langmenu=zh_CN.UTF-8      "語言設定
    set helpheight=15             "幫助的行高
    set helplang=cn               "幫助語言
    set fillchars=vert:\ ,stl:\ ,stlnc:\      " 在被分割的視窗間顯示空白,便於閱讀
    set showmatch                 " 高亮顯示匹配的括號
    set scrolloff=3               " 游標移動到buffer的頂部和底部時保持3行距離
    set smartindent               " 為C程式提供自動縮排
    
    
    au BufRead,BufNewFile *  setfiletype txt  " 高亮顯示普通txt檔案(需要txt.vim指令碼)
    
    "“變數名的自動補全,可以自己手動補全CTRL+N/P,n是向下找,p是向前找。
    "括號匹配
    "":inoremap < <><ESC>i    #與大於小於衝突
    "":inoremap > <c-r>=ClosePair('>')<CR>
    :inoremap ( ()<ESC>i
    "":inoremap ) <c-r>=ClosePair(')')<CR>
    ""inoremap { {<CR>}<ESC>O   #與陣列衝突
    :inoremap { {}<ESC>i
    "":inoremap } <c-r>=ClosePair('}')<CR>
    :inoremap [ []<ESC>i
    "":inoremap ] <c-r>=ClosePair(']')<CR>
    :inoremap " ""<ESC>i
    :inoremap ' ''<ESC>i
    
    "function! ClosePair(char)
    "    if getline('.')[col('.') - 1] == a:char
    "        return "\<Right>"
    "    else
    "        return a:char
    "    endif
    "endfunction
    "filetype plugin indent on 
    
    "自動刪除
    " 按退格鍵時判斷當前游標前一個字元,如果是左括號,則刪除對應的右括號以及括號中間的內容
    function! RemovePairs()
    	let l:line = getline(".")
    	let l:previous_char = l:line[col(".")-1] " 取得當前游標前一個字元
     
        if index(["(", "[", "{"], l:previous_char) != -1
    		let l:original_pos = getpos(".")
    		execute "normal %"
    		let l:new_pos = getpos(".")
     
    		" 如果沒有匹配的右括號
    		if l:original_pos == l:new_pos
    			execute "normal! a\<BS>"
    			return
    		end
    
    		let l:line2 = getline(".")
    		if len(l:line2) == col(".")
    		" 如果右括號是當前行最後一個字元
    			execute "normal! v%xa"
    		else
    		" 如果右括號不是當前行最後一個字元
    			execute "normal! v%xi"
    		end
     
    	else
    		execute "normal! a\<BS>"
    	end
    endfunction
    " 用退格鍵刪除一個左括號時同時刪除對應的右括號
    inoremap <BS> <ESC>:call RemovePairs()<CR>a
    
    
    "設定跳出自動補全的括號
    func SkipPair()  
        if getline('.')[col('.') - 1] == ')' || getline('.')[col('.') - 1] == ']' || getline('.')[col('.') - 1] == '"' || getline('.')[col('.') - 1] == "'" || getline('.')[col('.') - 1] == '}'  
                return "\<ESC>la"  
        else  
            return "\t"  
        endif  
    endfunc  
    " 將tab鍵繫結為跳出括號  
    inoremap <TAB> <c-r>=SkipPair()<CR>
    
    
    " AUTO_INSERT_HEAD_FILE: {{{1
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    """新建.c,.h,.sh,.java檔案,自動插入檔案頭 
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
    ""定義函式SetTitle,自動插入檔案頭 
    func SetTitle() 
    	"如果檔案型別為.sh檔案 
    	if &filetype == 'sh' 
    		""call setline(1,"\#############################") 
    		""call append(line("."),   "\###	File Name: ".expand("%")) 
    		call setline(1,   "\###	File Name: ".expand("%")) 
    		""call append(line(".")+1, "\###	Author   : Andrea") 
    		""call append(line(".")+2, "\#	Email    : [email protected]") 
    		call append(line("."), "\#	Created  : ".strftime("%c")) 
    		call append(line(".")+1, "\#############################") 
    		call append(line(".")+2,"\#!/bin/bash") 
    		call append(line(".")+3, "") 
    	else 
    		""call setline(1, "/******************************") 
    		""call append(line("."), "/*	#	 FileName	: ".expand("%")) 
    		call setline(1, "/*	#	 FileName	: ".expand("%")) 
    		""call append(line(".")+1, "	#	 Author		: Andrea ") 
    		""call append(line(".")+2, "	#	 Email		: [email protected] ") 
    		call append(line("."), "	#	 Created	: ".strftime("%c")) 
    		call append(line(".")+1, " *****************************/") 
    		call append(line(".")+2, "")
    	endif
    	if &filetype == 'cpp'
    		call append(line(".")+3, "#include<iostream>")
    		call append(line(".")+4, "using namespace std;")
    		call append(line(".")+5, "")
    		call append(line(".")+6, "int main(int argc, const char *argv[])")
    		call append(line(".")+7, "{")
    		call append(line(".")+8, "	   return 0;")
    		call append(line(".")+9, "}")
    	endif
    	if &filetype == 'c'
    		call append(line(".")+3, "#include<stdio.h>")
    		call append(line(".")+4, "")
    		call append(line(".")+5, "int main(int argc, const char *argv[])")
    		call append(line(".")+6, "{")
    		call append(line(".")+7, "    return 0;")
    		call append(line(".")+8, "}")
    	endif
    "	if &filetype == 'java'
    "		call append(line(".")+6,"public class ".expand("%"))
    "		call append(line(".")+7,"")
    "	endif
    	"新建檔案後,自動定位到檔案末尾
    	autocmd BufNewFile * normal G
    endfunc 
    
    set confirm                   " 在處理未儲存或只讀檔案的時候,彈出確認
    
  2. 關於程式碼摺疊

    <1> zf(Fold creation)–建立摺疊(注意在.vimrc中設定set foldmethod=marker)
    
    案例
    
    zf56G,建立從當前行起到56行的程式碼摺疊;
    
    10zf或10zf+或zf10↓,建立從當前行起到後10行的程式碼摺疊。
    
    10zf-或zf10↑,建立從當前行起到之前10行的程式碼摺疊。
    
    在括號處zf%,建立從當前行起到對應的匹配的括號上去((),{},[],<>等)。
    
    zr 開啟被摺疊的程式碼
    zm 摺疊開啟的程式碼
    
    zD 迴圈刪除 (Delete) 游標下的摺疊,即巢狀刪除摺疊。僅當 ‘foldmethod’ 設為 “manual” 或 “marker” 時有效。
    zE 除去 (Eliminate) 窗口裡“所有”的摺疊。僅當 ‘foldmethod’ 設為 “manual” 或 “marker” 時有效。
    
    常用摺疊方式
    {{{1
    
  3. vim test1.c test2.c -O:O選項可以同時開啟兩個檔案

  4. 指定查詢之前的命令

    • Ctrl+R:輸入若干字元(關鍵詞),會搜尋包含所輸入關鍵詞的歷史命令。繼續按Ctrl+R則會繼續向前搜尋包含關鍵詞的歷史命令。找到目標命令後,可以直接按enter鍵執行找到的命令。如果還想修改引數則可以按右箭頭。
    • Ctrl+G:從Ctrl+R的搜尋模式中跳出
[2] noremap
  1. noremap n h:按下n鍵就相當於按下h鍵
[3] map
  1. map S :w<CR> :在命令列模式下按S就相當於按了 冒號 w 回車
  2. map s <nop>:讓 s鍵在命令列模式下失效
[4] 小技巧
  1. zz:把當前行移動到螢幕中心
[5] 鍵位
  1. 回車鍵:<CR>

  2. tab鍵:<TAB>

  3. 空格鍵:<space>

  4. ctrl鍵:比如我要設定一個 ctrl + l , noremap <C-l>

  5. 上下左右鍵:<up> <down> <left> <right>

  6. 自定義快捷鍵

    let mapleader = " "  ## 把空格定義成新的快捷鍵
    
    noremap <leader>w  :set nonumber<cr>  ## 按空格加w,執行set nonumber<cr>命令
    

linux命令列游標字型樣式

  • 可以在 編輯 - 首選項 裡面更改
syntax on
set number
set relativenumber
set cursorline
set wrap  "程式碼一行裝不下自動換行
set showcmd
set wildmenu  "命令列程式碼補全時有多個選項以選單顯示"
set showmatch

set hlsearch  "高亮顯示搜尋結果"
exec "nohlsearch"
set incsearch "搜尋的時候就高亮顯示搜尋結果"
set ignorecase "搜尋時忽略大小寫"
set smartcase  "只能搜尋忽略大小寫,大寫的時候只會搜尋大寫"

inoremap { {}<ESC>i
inoremap " ""<ESC>i
inoremap ' ''<ESC>i

map S :wa<CR>          

二、vim外掛配置

[1] 準備工作

  1. 首先我們需要安裝一個軟體 curl,直接使用命令 sudo apt-get install curl即可安裝。

  2. 然後執行命令如下命令

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    
    • 注意,如果連線報錯則修改 /etc/hosts 檔案,加上下面這行程式碼

      199.232.68.133 raw.githubusercontent.com  ##前面是網址的IP地址
      
  3. 安裝軟體成功後,開啟vim的配置檔案vimrc,新增以下內容

    call plug#begin('~/.vim/plugged')
    ##下面都是安裝的外掛
    ########### 外掛 #################
    Plug 'vim-airline/vim-airline'  ## 顯示一個狀態列
    ""Plug 'Valloric/YouCompleteMe'  ## 自動補全
    Plug 'mhinz/vim-startify'  ## 使用vim的時候可以選擇之前的檔案開啟
    Plug 'itchyny/vim-cursorword' ## 所在單詞用橫線標記
    ## <leader>k :高亮所有相同的單詞
    ## <leader>K :取消高亮
    Plug 'lfv89/vim-interestingwords'  
    ###################################
    call plug#end()