Do not speak Portuguese? Translate this site with Google or Bing Translator
Comandos básicos do Vim e configurações úteis

Posted on: March 14, 2024 04:31 PM

Posted by: Renato

Categories: vim linux

Views: 168

Comandos básicos do Vim e configurações úteis

Hoje vou falar um pouco sobre esse editor de texto chamado Vim. Se você já se pegou perguntando como entrar no vim, como sair do vim, como editar no vim, como adicionar plugins no vim ou coisas do tipo, esse texto é para você.

A intenção aqui é ser “pá-pum”, bem direto ao ponto, um resuminho para quem nunca usou esse editor de texto hardcore. Me lembro de ter visto alguns handbooks na época em que comecei, mas o que proponho aqui é bem mais enxuto.

Como instalar o Vim

A instalação básica que costumo fazer é essa:

$ sudo apt install vim
Enter fullscreen mode Exit fullscreen mode

Se você for no site oficial do editor de texto verá que há outra forma de instalar, mas por praticidade pode seguir com a acima.

Como configurar o Vim

O Vim instalado por si só não tem configurações úteis que nos fariam pensar, por exemplo, em abandonar o VS Code (eu acho rs). Para isso configuramos algumas coisas criando um arquivo chamado .vimrc para deixá-lo mais esperto.

Dentro do meu .vimrc eu tenho algumas configurações, por exemplo:

set number
set linebreak
set showbreak=+++
set textwidth=100
set autoindent
set shiftwidth=2
set smartindent
set smarttab
set softtabstop=2
set undolevels=1000
set background=dark
set backspace=indent,eol,start
Enter fullscreen mode Exit fullscreen mode

Cada uma dessas configurações tem uma utilidade e te encorajo a pesquisar sobre cada uma delas. O set number, por exemplo, faz com que seja mostrada a numeração de cada linha no editor, o que é muito útil.

Coloquei meu .vimrc completo esse repositório no GitHub, caso tenha curiosidade.

Gerenciando plugins

Para o Vim ficar ainda mais interessante, muitas pessoas utilizam um gerenciador de plugins para instalar plugins variados. Atualmente utilizo o Vundle Vim.

Para instalar o Vundle, digite no seu terminal:

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Enter fullscreen mode Exit fullscreen mode

É necessário que o seu .vimrc tenha algumas informações para funcionar com o Vundle corretamente:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
" Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
" Plugin 'ascenator/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
Enter fullscreen mode Exit fullscreen mode

O texto acima foi retirado diretamente da documentação e explica, em comentários (toda linha com aspas duplas é um comentário), algumas opções de como usar o Vundle e onde colocar cada informação no seu .vimrc.

Na última linha do arquivo temos algo como coloque todas as informações que não são de plugins depois dessa linha: é no final do arquivo que ficam nossas configurações básicas do Vim que falamos anteriormente.

Localize as linhas que não estão com aspas duplas que começam com “Plugin”. Pronto, esses são alguns plugins que eles colocam de exemplo nesse arquivo para ilustrar.

Vamos configurar um .vimrc com Vundle agora. No seu terminal, digite:

$ vim .vimrc
Enter fullscreen mode Exit fullscreen mode

Isso vai abrir o Vim com o arquivo .vimrc. Já no editor, dê um ctrl i e cole com ctrl shift v (deixei uns comentários para que você possa entender melhor):

" configurações essenciais
set nocompatible              " be iMproved, required
filetype off                  " required
set rtp+=~/.vim/bundle/Vundle.vim
" início da chamada de plugins
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Plugin 'scrooloose/nerdtree'
Plugin 'majutsushi/tagbar'
Plugin 'tpope/vim-surround'
Plugin 'scrooloose/syntastic'
Plugin 'jiangmiao/auto-pairs'
Plugin 'morhetz/gruvbox'
Plugin 'valloric/youcompleteme' 

" fim da chamada de plugins
call vundle#end()            " required
filetype plugin indent on    " required

" configurações básicas do Vim
set number
set linebreak
set showbreak=+++
set textwidth=100
set showmatch
set hlsearch
set smartcase
set ignorecase
set incsearch
set autoindent
set shiftwidth=2
set smartindent
set smarttab
set softtabstop=2
set undolevels=1000
set background=dark
set backspace=indent,eol,start
colorscheme gruvbox 
Enter fullscreen mode Exit fullscreen mode

Para definir meus plugins fui analisando a necessidade e procurando num site chamado Vim Awesome.

Essa é a cara do meu Vim atual quando abro algum arquivo:

Vim image

  • A árvore de arquivos e pastas é proporcionada pelo Plugin 'scrooloose/nerdtree'
  • O tema (colorscheme) é o Plugin 'morhetz/gruvbox'
  • A linha com informações no canto inferior da tela vem do Plugin 'majutsushi/tagbar'

Editando códigos e usando os plugins

No início anotei comandos no papel e fui olhando sempre até decorar. Hoje em dia utilizo um plugin no VS Code que me permite utilizar comandos do Vim, porque acabei me acostumando com a praticidade.

Mas como gosto de utilizar também alguns comandos do VS Code, precisei adequar algumas coisas nas minhas configurações. Aqui estão as minhas settings do VS Code, caso tenha interesse. Tudo que tem vim.handleKeys é para que eu possa utilizar “ctrl-alguma tecla” do VS Code ao invés do Vim.

Modos do Vim

O Vim tem alguns modos:

  • Normal mode: para se movimentar pelo texto
  • Insert mode: para escrever no texto
  • Visual mode: para selecionar parte do texto
  • Command mode: para dar algum comando ao Vim

Comandos básicos no modo normal

  • esc: sair do modo atual e ir para o modo de comando
  • j: mover o cursor para baixo
  • k: mover o cursor para cima
  • h: mover o cursor para a esquerda
  • l: mover o cursor para a direita
  • ctrl i: entrar no modo de edição no caracter em que está
  • esc: sair do modo atual e ir para os comandos
  • shift a: entrar no modo de edição no final da linha
  • shift o: entra no modo de edição em uma nova linha abaixo da atual
  • gg: ir para o início do arquivo
  • shift g: ir para o final do arquivo
  • w: pular uma palavra para frente
  • b: pular uma palavra para trás
  • ctrl ]: pular um bloco de código para baixo
  • ctrl [: pular um bloco de código para cima
  • y: copiar código
  • c: recortar código
  • p: colar código um caractere depois do atual
  • x: deletar caractere
  • dd: deletar linha
  • ctrl u: desfazer
  • ctrl r: refazer
  • shift o: abre uma nova linha de edição empurrando para baixo o código da linha

Comandos no modo de comando

Entramos nesse modo depois de dar um esc. Perceba que aqui nós precisamos digitar dois pontos para dar o comando e dar enter no final. Aqui os comandos aparecem sendo digitados no canto inferior da tela (lá no finzinho).

Vim image

  • :q: sair do arquivo atual
  • :q!: saída forçada do arquivo atual
  • :w: salvar
  • :wq: salvar e sair

Comandos no modo visual

Com o v entramos no visual mode, e com os comandos do modo normal movemos o cursor para que selecione o texto que queremos. Ficará um VISUAL no canto inferior.

Vim image

  • x: deleta o que está selecionado
  • y: copia o que está selecionado
  • s: entra no modo de edição substituindo o que tinha antes
  • c: recorta o código selecionado

Para copiar o código selecionado em algum lugar, dê um esc para voltar ao modo normal e depois um p (paste) no local desejado.

Comandos do Vundle e do plugin NERDTree

Para instalar os plugins que você definiu no seu .vimrc entre no Vim e, no modo de comando, digite:

:PluginInstall
Enter fullscreen mode Exit fullscreen mode

Vai aparecer uma telinha como essa:

Vim image

É só dar esc, depois :q e enter para sair. Para desinstalar um plugin delete a linha no .vimrc e depois faça o mesmo esquema só que com :PluginClean.

Para acessar a árvore de comandos que eu instalei, vá para o modo de comando e digite:

:NERDTree
Enter fullscreen mode Exit fullscreen mode

Você pode navegar na NERDTree como no normal mode. Para abrir uma pasta pressione o, para fechá-la, pressione novamente.

Para abrir um arquivo do lado pressione o no arquivo. Para abrir outro arquivo na vertical, dividindo a tela com um arquivo já aberto, pressione i.

Para rodar entre os arquivos abertos e a árvore de arquivos pressione ctrl w e mais uma das teclas principais de navegação (h, j, k, l).

Cada plugin tem uma documentação e você deve ler cada uma delas para entender o que fazer. Não tem para onde correr!


Para usar o Vim como editor principal é necessário aprender vários comandos e configurar muita coisa, então veja bem se você tem interesse de desprender esse tempo aprendendo. O importante mesmo é saber usar bem a ferramenta que você escolheu.


Esse texto não tem intenção de esgotar o tema. Acrescente nos comentários, e também aponte erros quando os identificar.

Fonte: https://dev.to/nfo94/comandos-basicos-do-vim-e-configuracoes-uteis-gkn

4

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 1 Comments
  • Renato Lucena
    Renato Lucena - há 1 mês
    - https://dev.to/nfo94/comandos-basicos-do-vim-e-configuracoes-uteis-gkn

Blog Search


Categories

OUTROS (15) Variados (109) PHP (130) Laravel (158) Black Hat (3) front-end (28) linux (113) postgresql (39) Docker (27) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (54) devops (25) nodejs (5) npm (2) nvm (1) git (8) firefox (1) react (6) reactnative (5) collections (1) javascript (6) reactjs (7) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (1) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (11) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (4) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (1) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (40) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (1) jwt (4) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (2) Architecture (3) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (1) autorizacao (2) authentication (4) authorization (2) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1)

New Articles



Get Latest Updates by Email