Vim CoC Explorer..Explorador de archivos más rápido de todos
Tags: spanish, help, vim, neovim
Published: 2021-04-16 16:40:49

Coc Explorer un explorador de archivos inspirado en Vscode File explorer super configurable y hermoso con git status incluido. Vamos a empezar con la instalación para empezar usarlos.

## ACLARACIÓN:

Esta configuración a sido gracias a [NikolaM-Dev](https://github.com/NikolaM-Dev)

# Limpiar los plugins 

Para evitar cualquier conflicto con los otros file explorers para eso los borramos desde la función **call plug#begin()** y corremos **:PlugClean** y damos **y** luego de eso procedemos a la instalación

# Instalar CoC

Para ver si tenemos instalado Coc podemos hacerlo con el comando: 

```
:CocInfo
```
Debería aparecer lo siguiente:
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/an4ubnlff4zqghqv4jrz.png)
 

Si da comando no reconocido procedemos a instalar coc añadiendo esto a plug

```
Plug 'neoclide/coc.nvim', {'branch': 'release'}
```

Luego corremos:
```
:so%
```
Y al final corremos:
```
:PlugInstall
```
Luego de esto cerramos neovim y volvemos a entrar.

# Instalar CoC Explorer

Una vez instalado CoC podemos instalar CoC Explorer

```
:CocInstall coc-explorer 
```

Te aparecera algo asi:

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9f3ao4qrwxoaie350y7.png)

Una vez que este finalizado se verá de la siguiente manera:

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vp4ejsrk5szm3epsf0vp.png)

Ahora procedemos a configurar.

# Configurar Coc Explorer

Para empezar deberías tener un archivo **coc-settings.json** o lo creas.

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xommafgcxhzkz1qfk0qh.png)

Una vez aquí abre llaves y pega lo siguiente:

```json
  // coc-explorer
  "explorer.openAction.for.directory": "expandOrCollapse",
  "explorer.git.icon.status.added": "✚",
  "explorer.git.icon.status.deleted": "✖",
  "explorer.git.icon.status.renamed": "➜",
  "explorer.git.icon.status.unmerged": "≠",
  "explorer.git.icon.status.untracked": "?",
  "explorer.git.icon.status.modified": "✹",
  "explorer.git.icon.status.ignored": "☒",
  "explorer.git.icon.status.mixed": "*",
  "explorer.icon.enableNerdfont": true,
  "explorer.quitOnOpen": true,
  "explorer.file.showHiddenFiles": false,
  "explorer.file.column.clip.copy": "",
  "explorer.file.column.clip.cut": "",
  "explorer.width": 25,
  "explorer.file.hiddenRules": {
    "extensions": ["o", "a", "obj", "pyc"],
    "filenames": ["\\.byebug+", "\\.DS_Store|"],
    "patternMatches": ["^\\.git$", "^\\node_modules$", "^\\plugged$"]
  },
  "explorer.keyMappings.global": {
    // "i": false, // cancel default mapkey
    "s": "toggleSelection",
    "<tab>": "actionMenu",
    "gk": ["wait", "expandablePrev"],
    "gj": ["wait", "expandableNext"],
    "h": ["wait", "collapse"],
    "l": ["wait", "expandable?", "expand", "open"],
    "J": ["wait", "toggleSelection", "normal:j"],
    "K": ["wait", "toggleSelection", "normal:k"],
    "gl": ["wait", "expand:recursive"],
    "gh": ["wait", "collapse:recursive"],
    "<2-LeftMouse>": [
      "expandable?",
      ["expanded?", "collapse", "expand"],
      "open"
    ],
    "o": ["wait", "expanded?", "collapse", "expand"],
    "<cr>": ["expandable?", ["expanded?", "collapse", "expand"], "open"],
    "b": "open:split:plain",
    "v": "open:vsplit",
    "C": ["wait", "expandable?", "cd", "open"],
    "u": ["wait", "gotoParent"],
    "gs": ["wait", "reveal:select"],
    "il": "preview:labeling",
    //"ic": "preview:content",
    "ic": false,
    //"Il": "previewOnHover:toggle:labeling",
    "Il": false,
    //"Ic": "previewOnHover:toggle:content",
    "Ic": false,
    "II": "previewOnHover:disable",
    "yp": "copyFilepath",
    "yn": "copyFilename",
    "yy": "copyFile",
    "dd": "cutFile",
    "p": "pasteFile",
    "t": "delete",
    "d": "deleteForever",
    "n": "addFile",
    "N": "addDirectory",
    "r": "rename",
    "m": "rename",
    "<dot>": "toggleHidden",
    "R": "refresh",
    "?": "help",
    "q": "quit",
    "<esc>": "esc",
    "X": "systemExecute",
    "gd": "listDrive",
    "f": "search",
    "F": "searchRecursive",
    "gf": "gotoSource:file",
    "gb": "gotoSource:buffer",
    "[[": ["wait", "sourcePrev"],
    "]]": ["wait", "sourceNext"],
    "[i": ["wait", "indentPrev"],
    "]i": ["wait", "indentNext"],
    "[m": ["wait", "markPrev:modified"],
    "]m": ["wait", "markNext:modified"],
    "[d": ["wait", "markPrev:diagnosticError:diagnosticWarning"],
    "]d": ["wait", "markNext:diagnosticError:diagnosticWarning"],
    "[D": ["wait", "markPrev:diagnosticError"],
    "]D": ["wait", "markNext:diagnosticError"],
    "gp": ["wait", "markPrev:git"],
    "gn": ["wait", "markNext:git"],
    "ga": "gitStage",
    "gr": "gitUnstage"
  },
  "explorer.file.root.template": "[icon & 1] PROJECT ([root])",
  "explorer.buffer.root.template": "[icon & 1] OPEN EDITORS",
  "explorer.file.child.template": "[git | 2] [selection | clip | 1] [indent][icon | 1] [diagnosticError & 1][filename omitCenter 1][modified][readonly] [linkIcon & 1][link growRight 1 omitCenter 5]",

```

Esto dará a CoC Explorer una apariencia minimalista y con varios atajos si quieres leer mas sobre CoC Explorer puedes seguir [aquí](https://github.com/weirongxu/coc-explorer)

Ahora vamos al vimrc y al init.vim y colocamos lo siguiente esta configuración es para Windows siguiente a esta estará la de Linux y Mac

```vim
"------------------------------------------------COC EXPLORER CONFIG
" Disable netrw.
let g:loaded_netrw  = 1
let g:loaded_netrwPlugin = 1
let g:loaded_netrwSettings = 1
let g:loaded_netrwFileHandlers = 1
let g:loaded_matchit = 1

let g:coc_explorer_global_presets = {
\   '.vim': {
\     'root-uri': '%APPDATA%\Local\nvim',
\   },
\   'cocConfig': {
\      'root-uri': '%APPDATA%\Local\nvim\coc-settings.json',
\   },
\   'tab': {
\     'position': 'tab',
\     'quit-on-open': v:true,
\   },
\   'floating': {
\     'position': 'floating',
\     'open-action-strategy': 'sourceWindow',
\   },
\   'floatingTop': {
\     'position': 'floating',
\     'floating-position': 'center-top',
\     'open-action-strategy': 'sourceWindow',
\   },
\   'floatingLeftside': {
\     'position': 'floating',
\     'floating-position': 'left-center',
\     'floating-width': 50,
\     'open-action-strategy': 'sourceWindow',
\   },
\   'floatingRightside': {
\     'position': 'floating',
\     'floating-position': 'right-center',
\     'floating-width': 50,
\     'open-action-strategy': 'sourceWindow',
\   },
\   'simplify': {
\     'file-child-template': '[selection | clip | 1] [indent][icon | 1] [filename omitCenter 1]'
\   },
\   'buffer': {
\     'sources': [{'name': 'buffer', 'expand': v:true}]
\   },
\   'git': {
\     'sources': [{'name': 'git', 'expand': v:true}]
\   },
\ }
autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif
augroup coc-explorer
  if @% == '' || @% == '.'
    autocmd User CocNvimInit bd
    autocmd User CocNvimInit CocCommand explorer
  endif
augroup END
if exists('#User#CocGitStatusChange')
  doautocmd <nomodeline> User CocGitStatusChange
endif
nnoremap <leader>n :CocCommand explorer<CR>
nnoremap <leader>p :CocCommand explorer --preset floating<CR> 

```

Ahora la de Linux y Mac. Para esto necesitamos ir a este repositorio de un amigo llamado [NikolaM-Dev](https://github.com/NikolaM-Dev) el tiene la configuración para linux te la dejo [aquí](https://github.com/NikolaM-Dev/dotfiles/blob/main/.config/nvim/plug-config/coc-explorer.vim)

Ahora recargamos vim y listo esto se abre con **leader n** o puedes cambiarlo.

# Agradecimientos

Gracias por leer este post para cualquier cosa que desees agregar los comentarios si quieres enterarte de las ultimas novedades de mi configuración puedes seguirme en github [aquí](https://github.com/TeoDev1611)

Hecho con ❤ en Ecuador